]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Workspace/DscBuildData.py
BaseTools: Workspace - refactor GetStructurePcdInfo
[mirror_edk2.git] / BaseTools / Source / Python / Workspace / DscBuildData.py
index e335b3df85af8980cba337b8000463ab062bae00..fdf20f9b09636017624fd6ce86cdb6b4a462b861 100644 (file)
@@ -39,7 +39,7 @@ import Common.GlobalData as GlobalData
 import subprocess\r
 from Common.Misc import SaveFileOnChange\r
 from Workspace.BuildClassObject import PlatformBuildClassObject, StructurePcd, PcdClassObject, ModuleBuildClassObject\r
-from collections import OrderedDict\r
+from collections import OrderedDict,defaultdict\r
 \r
 PcdValueInitName = 'PcdValueInit'\r
 \r
@@ -1181,11 +1181,10 @@ class DscBuildData(PlatformBuildClassObject):
                             options[Key] += ' ' + Option\r
         return self._ModuleTypeOptions[Edk, ModuleType]\r
 \r
-    def GetStructurePcdInfo(self, PcdSet):\r
-        structure_pcd_data = {}\r
+    @staticmethod\r
+    def GetStructurePcdInfo(PcdSet):\r
+        structure_pcd_data = defaultdict(list)\r
         for item in PcdSet:\r
-            if (item[0],item[1]) not in structure_pcd_data:\r
-                structure_pcd_data[(item[0],item[1])] = []\r
             structure_pcd_data[(item[0],item[1])].append(item)\r
 \r
         return structure_pcd_data\r
@@ -1292,7 +1291,7 @@ class DscBuildData(PlatformBuildClassObject):
                 S_PcdSet.append([ TokenSpaceGuid.split(".")[0],TokenSpaceGuid.split(".")[1], PcdCName,SkuName, default_store,Dummy5, AnalyzePcdExpression(Setting)[0]])\r
 \r
         # handle pcd value override\r
-        StrPcdSet = self.GetStructurePcdInfo(S_PcdSet)\r
+        StrPcdSet = DscBuildData.GetStructurePcdInfo(S_PcdSet)\r
         S_pcd_set = OrderedDict()\r
         for str_pcd in StrPcdSet:\r
             str_pcd_obj = Pcds.get((str_pcd[1], str_pcd[0]), None)\r