]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/GenPcdDb.py
BaseTools: remove including Base.h if the module type is not BASE
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / GenPcdDb.py
index fab6859edb2f4b92aa799acb9b3d285767b4b050..25e4f7246e3ae0742d00ebbb07bc389e942e73b1 100644 (file)
 #\r
 from StringIO import StringIO\r
 from Common.Misc import *\r
-from Common.String import StringToArray\r
+from Common.StringUtils import StringToArray\r
 from struct import pack\r
 from ValidCheckingInfoObject import VAR_CHECK_PCD_VARIABLE_TAB_CONTAINER\r
 from ValidCheckingInfoObject import VAR_CHECK_PCD_VARIABLE_TAB\r
-from ValidCheckingInfoObject import VAR_VALID_OBJECT_FACTORY\r
+from ValidCheckingInfoObject import GetValidationObject\r
 from Common.VariableAttributes import VariableAttributes\r
 import copy\r
 from struct import unpack\r
@@ -235,43 +235,6 @@ ${PHASE}_PCD_DATABASE_INIT g${PHASE}PcdDbInit = {
 #endif\r
 """)\r
 \r
-## PackGuid\r
-#\r
-# Pack the GUID value in C structure format into data array\r
-#\r
-# @param GuidStructureValue:   The GUID value in C structure format\r
-#\r
-# @retval Buffer:  a data array contains the Guid\r
-#\r
-def PackGuid(GuidStructureValue):\r
-    GuidString = GuidStructureStringToGuidString(GuidStructureValue)\r
-    Guid = GuidString.split('-')\r
-    Buffer = pack('=LHHBBBBBBBB', \r
-                int(Guid[0], 16), \r
-                int(Guid[1], 16), \r
-                int(Guid[2], 16), \r
-                int(Guid[3][-4:-2], 16), \r
-                int(Guid[3][-2:], 16),\r
-                int(Guid[4][-12:-10], 16),\r
-                int(Guid[4][-10:-8], 16),\r
-                int(Guid[4][-8:-6], 16),\r
-                int(Guid[4][-6:-4], 16),\r
-                int(Guid[4][-4:-2], 16),\r
-                int(Guid[4][-2:], 16)\r
-                )\r
-    return Buffer\r
-\r
-def toHex(s):\r
-    lst = []\r
-    for ch in s:\r
-        hv = hex(ord(ch)).replace('0x', ' ')\r
-        if len(hv) == 1:\r
-            hv = '0'+hv\r
-        lst.append(hv)\r
-    if lst:\r
-        return reduce(lambda x,y:x+y, lst)\r
-    else:\r
-        return 'empty'\r
 ## DbItemList\r
 #\r
 #  The class holds the Pcd database items. ItemSize if not zero should match the item datum type in the C structure. \r
@@ -282,13 +245,9 @@ def toHex(s):
 #\r
 class DbItemList:\r
     def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
-        if DataList is None:\r
-            DataList = []\r
-        if RawDataList is None:\r
-            RawDataList = []\r
         self.ItemSize = ItemSize\r
-        self.DataList = DataList\r
-        self.RawDataList = RawDataList\r
+        self.DataList = DataList if DataList else []\r
+        self.RawDataList = RawDataList if RawDataList else []\r
         self.ListSize = 0\r
 \r
     def GetInterOffset(self, Index):\r
@@ -301,8 +260,7 @@ class DbItemList:
             for ItemIndex in xrange(Index):\r
                 Offset += len(self.RawDataList[ItemIndex])\r
         else:\r
-            for Datas in self.RawDataList:\r
-                Offset = self.ItemSize * Index\r
+            Offset = self.ItemSize * Index\r
 \r
         return Offset\r
 \r
@@ -319,22 +277,19 @@ class DbItemList:
         return self.ListSize\r
 \r
     def PackData(self):\r
-        if self.ItemSize == 8:\r
-            PackStr = "=Q"\r
-        elif self.ItemSize == 4:\r
-            PackStr = "=L"\r
-        elif self.ItemSize == 2:\r
-            PackStr = "=H"\r
-        elif self.ItemSize == 1:\r
-            PackStr = "=B"\r
-        elif self.ItemSize == 0:\r
-            PackStr = "=B"\r
-        elif self.ItemSize == 16:\r
-            # pack Guid\r
-            PackStr = ''\r
-        else:\r
-            # should not reach here\r
-            assert(False)\r
+        ## PackGuid\r
+        #\r
+        # Pack the GUID value in C structure format into data array\r
+        #\r
+        # @param GuidStructureValue:   The GUID value in C structure format\r
+        #\r
+        # @retval Buffer:  a data array contains the Guid\r
+        #\r
+        def PackGuid(GuidStructureValue):\r
+            GuidString = GuidStructureStringToGuidString(GuidStructureValue)\r
+            return PackGUID(GuidString.split('-'))\r
+\r
+        PackStr = PACK_CODE_BY_SIZE[self.ItemSize]\r
 \r
         Buffer = ''\r
         for Datas in self.RawDataList:\r
@@ -358,11 +313,8 @@ class DbItemList:
 #\r
 class DbExMapTblItemList (DbItemList):\r
     def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
-        if DataList is None:\r
-            DataList = []\r
-        if RawDataList is None:\r
-            RawDataList = []\r
         DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
     def PackData(self):\r
         Buffer = ''\r
         PackStr = "=LHH"\r
@@ -380,11 +332,8 @@ class DbExMapTblItemList (DbItemList):
 #\r
 class DbComItemList (DbItemList):\r
     def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
-        if DataList is None:\r
-            DataList = []\r
-        if RawDataList is None:\r
-            RawDataList = []\r
         DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
     def GetInterOffset(self, Index):\r
         Offset = 0\r
         if self.ItemSize == 0:\r
@@ -414,18 +363,7 @@ class DbComItemList (DbItemList):
         return self.ListSize\r
 \r
     def PackData(self):\r
-        if self.ItemSize == 8:\r
-            PackStr = "=Q"\r
-        elif self.ItemSize == 4:\r
-            PackStr = "=L"\r
-        elif self.ItemSize == 2:\r
-            PackStr = "=H"\r
-        elif self.ItemSize == 1:\r
-            PackStr = "=B"\r
-        elif self.ItemSize == 0:\r
-            PackStr = "=B"\r
-        else:\r
-            assert(False)\r
+        PackStr = PACK_CODE_BY_SIZE[self.ItemSize]\r
 \r
         Buffer = ''\r
         for DataList in self.RawDataList:\r
@@ -444,11 +382,8 @@ class DbComItemList (DbItemList):
 #\r
 class DbVariableTableItemList (DbComItemList):\r
     def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
-        if DataList is None:\r
-            DataList = []\r
-        if RawDataList is None:\r
-            RawDataList = []\r
         DbComItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
     def PackData(self):\r
         PackStr = "=LLHHLHH"\r
         Buffer = ''\r
@@ -466,10 +401,6 @@ class DbVariableTableItemList (DbComItemList):
 \r
 class DbStringHeadTableItemList(DbItemList):\r
     def __init__(self,ItemSize,DataList=None,RawDataList=None):\r
-        if DataList is None:\r
-            DataList = []\r
-        if RawDataList is None:\r
-            RawDataList = []        \r
         DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
         \r
     def GetInterOffset(self, Index):\r
@@ -512,11 +443,8 @@ class DbStringHeadTableItemList(DbItemList):
 #\r
 class DbSkuHeadTableItemList (DbItemList):\r
     def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
-        if DataList is None:\r
-            DataList = []\r
-        if RawDataList is None:\r
-            RawDataList = []        \r
         DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
     def PackData(self):\r
         PackStr = "=LL"\r
         Buffer = ''\r
@@ -532,11 +460,8 @@ class DbSkuHeadTableItemList (DbItemList):
 #\r
 class DbSizeTableItemList (DbItemList):\r
     def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
-        if DataList is None:\r
-            DataList = []\r
-        if RawDataList is None:\r
-            RawDataList = []        \r
         DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
     def GetListSize(self):\r
         length = 0\r
         for Data in self.RawDataList:\r
@@ -866,19 +791,7 @@ def BuildExDataBase(Dict):
     # Construct the database buffer\r
     Guid = "{0x3c7d193c, 0x682c, 0x4c14, 0xa6, 0x8f, 0x55, 0x2d, 0xea, 0x4f, 0x43, 0x7e}"\r
     Guid = StringArrayToList(Guid)\r
-    Buffer = pack('=LHHBBBBBBBB', \r
-                Guid[0], \r
-                Guid[1], \r
-                Guid[2], \r
-                Guid[3], \r
-                Guid[4],  \r
-                Guid[5],\r
-                Guid[6],\r
-                Guid[7],\r
-                Guid[8],\r
-                Guid[9],\r
-                Guid[10],\r
-                )\r
+    Buffer = PackByteFormatGUID(Guid)\r
 \r
     b = pack("=L", DATABASE_VERSION)\r
     Buffer += b\r
@@ -1202,7 +1115,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
         TokenSpaceGuid = GuidStructureStringToGuidValueName(TokenSpaceGuidStructure)\r
         if Pcd.Type in PCD_DYNAMIC_EX_TYPE_SET:\r
             if TokenSpaceGuid not in GuidList:\r
-                GuidList += [TokenSpaceGuid]\r
+                GuidList.append(TokenSpaceGuid)\r
                 Dict['GUID_STRUCTURE'].append(TokenSpaceGuidStructure)\r
             NumberOfExTokens += 1\r
 \r
@@ -1227,7 +1140,6 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
             Pcd.TokenTypeList = ['PCD_DATUM_TYPE_' + Pcd.DatumType]\r
 \r
         if len(Pcd.SkuInfoList) > 1:\r
-#             Pcd.TokenTypeList += ['PCD_TYPE_SKU_ENABLED']\r
             NumberOfSkuEnabledPcd += 1\r
         \r
         SkuIdIndex = 1  \r
@@ -1247,7 +1159,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
                 if Platform.Platform.VarCheckFlag:\r
                     var_check_obj = VAR_CHECK_PCD_VARIABLE_TAB(VariableGuidStructure, StringToArray(Sku.VariableName))\r
                     try:\r
-                        var_check_obj.push_back(VAR_VALID_OBJECT_FACTORY.Get_valid_object(Pcd, Sku.VariableOffset))\r
+                        var_check_obj.push_back(GetValidationObject(Pcd, Sku.VariableOffset))\r
                         VarAttr, _ = VariableAttributes.GetVarAttributes(Sku.VariableAttribute)\r
                         var_check_obj.SetAttributes(VarAttr)\r
                         var_check_obj.UpdateSize()\r
@@ -1265,7 +1177,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
                         else:\r
                             EdkLogger.error("build", PCD_VALIDATION_INFO_ERROR,\r
                                                 "The PCD '%s.%s' Validation information defined in DEC file has incorrect format." % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName))\r
-                Pcd.TokenTypeList += ['PCD_TYPE_HII']\r
+                Pcd.TokenTypeList.append('PCD_TYPE_HII')\r
                 Pcd.InitString = 'INIT'\r
                 # Store all variable names of one HII PCD under different SKU to stringTable\r
                 # and calculate the VariableHeadStringIndex\r
@@ -1296,7 +1208,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
                 # store VariableGuid to GuidTable and get the VariableHeadGuidIndex\r
 \r
                 if VariableGuid not in GuidList:\r
-                    GuidList += [VariableGuid]\r
+                    GuidList.append(VariableGuid)\r
                     Dict['GUID_STRUCTURE'].append(VariableGuidStructure)\r
                 VariableHeadGuidIndex = GuidList.index(VariableGuid)\r
 \r
@@ -1348,7 +1260,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
                 VariableDbValueList.append([VariableHeadGuidIndex, VariableHeadStringIndex, Sku.VariableOffset, VariableOffset, VariableRefTable, Sku.VariableAttribute])\r
 \r
             elif Sku.VpdOffset != '':\r
-                Pcd.TokenTypeList += ['PCD_TYPE_VPD']\r
+                Pcd.TokenTypeList.append('PCD_TYPE_VPD')\r
                 Pcd.InitString = 'INIT'\r
                 VpdHeadOffsetList.append(str(Sku.VpdOffset) + 'U')\r
                 VpdDbOffsetList.append(Sku.VpdOffset)\r
@@ -1360,7 +1272,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
                 continue\r
           \r
             if Pcd.DatumType == TAB_VOID:\r
-                Pcd.TokenTypeList += ['PCD_TYPE_STRING']\r
+                Pcd.TokenTypeList.append('PCD_TYPE_STRING')\r
                 Pcd.InitString = 'INIT'\r
                 if Sku.HiiDefaultValue != '' and Sku.DefaultValue == '':\r
                     Sku.DefaultValue = Sku.HiiDefaultValue\r
@@ -1409,7 +1321,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
                     StringTableSize += (StringTabLen)\r
             else:\r
                 if "PCD_TYPE_HII" not in Pcd.TokenTypeList:\r
-                    Pcd.TokenTypeList += ['PCD_TYPE_DATA']\r
+                    Pcd.TokenTypeList.append('PCD_TYPE_DATA')\r
                     if Sku.DefaultValue == 'TRUE':\r
                         Pcd.InitString = 'INIT'\r
                     else:\r