]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Workspace/BuildClassObject.py
BaseTools: Not convert the void* pcd string in command line to array.
[mirror_edk2.git] / BaseTools / Source / Python / Workspace / BuildClassObject.py
index 12227b855f9391793b576ae740ddf19754f30ff2..95edc376fe6ebc2eeacca973a5a31ab60257ca47 100644 (file)
 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 #\r
 \r
+from collections import OrderedDict, namedtuple\r
 from Common.DataType import *\r
 import collections\r
-\r
+import re\r
+from collections import OrderedDict\r
+StructPattern = re.compile(r'[_a-zA-Z][0-9A-Za-z_\[\]]*$')\r
+ArrayIndex = re.compile("\[\s*\d{0,1}\s*\]")\r
 ## PcdClassObject\r
 #\r
 # This Class is used for PcdObject\r
@@ -41,7 +45,7 @@ import collections
 # @var Phase:                To store value for Phase, default is "DXE"\r
 #\r
 class PcdClassObject(object):\r
-    def __init__(self, Name = None, Guid = None, Type = None, DatumType = None, Value = None, Token = None, MaxDatumSize = None, SkuInfoList = {}, IsOverrided = False, GuidValue = None, validateranges = [], validlists = [], expressions = [], IsDsc = False, UserDefinedDefaultStoresFlag = False):\r
+    def __init__(self, Name = None, Guid = None, Type = None, DatumType = None, Value = None, Token = None, MaxDatumSize = None, SkuInfoList = None, IsOverrided = False, GuidValue = None, validateranges = None, validlists = None, expressions = None, IsDsc = False, UserDefinedDefaultStoresFlag = False):\r
         self.TokenCName = Name\r
         self.TokenSpaceGuidCName = Guid\r
         self.TokenSpaceGuidValue = GuidValue\r
@@ -51,22 +55,22 @@ class PcdClassObject(object):
         self.TokenValue = Token\r
         self.MaxDatumSize = MaxDatumSize\r
         self.MaxSizeUserSet = None\r
-        self.SkuInfoList = SkuInfoList\r
+        self.SkuInfoList = SkuInfoList if SkuInfoList is not None else OrderedDict()\r
         self.Phase = "DXE"\r
         self.Pending = False\r
         self.IsOverrided = IsOverrided\r
         self.IsFromBinaryInf = False\r
         self.IsFromDsc = False\r
-        self.validateranges = validateranges\r
-        self.validlists = validlists\r
-        self.expressions = expressions\r
+        self.validateranges = validateranges if validateranges is not None else []\r
+        self.validlists = validlists if validlists is not None else []\r
+        self.expressions = expressions if expressions is not None else []\r
         self.DscDefaultValue = None\r
         self.DscRawValue = {}\r
         if IsDsc:\r
             self.DscDefaultValue = Value\r
         self.PcdValueFromComm = ""\r
         self.PcdValueFromFdf = ""\r
-        self.DefinitionPosition = ("","")\r
+        self.CustomAttribute = {}\r
         self.UserDefinedDefaultStoresFlag = UserDefinedDefaultStoresFlag\r
 \r
     @staticmethod\r
@@ -166,17 +170,16 @@ class StructurePcd(PcdClassObject):
         self.StructuredPcdIncludeFile = [] if StructuredPcdIncludeFile is None else StructuredPcdIncludeFile\r
         self.PackageDecs = Packages\r
         self.DefaultStoreName = [default_store]\r
-        self.DefaultValues = collections.OrderedDict()\r
+        self.DefaultValues = OrderedDict()\r
         self.PcdMode = None\r
-        self.SkuOverrideValues = collections.OrderedDict()\r
-        self.FlexibleFieldName = None\r
+        self.SkuOverrideValues = OrderedDict()\r
         self.StructName = None\r
         self.PcdDefineLineNo = 0\r
         self.PkgPath = ""\r
         self.DefaultValueFromDec = ""\r
         self.ValueChain = set()\r
-        self.PcdFieldValueFromComm = collections.OrderedDict()\r
-        self.PcdFieldValueFromFdf = collections.OrderedDict()\r
+        self.PcdFieldValueFromComm = OrderedDict()\r
+        self.PcdFieldValueFromFdf = OrderedDict()\r
     def __repr__(self):\r
         return self.TypeName\r
 \r
@@ -190,9 +193,9 @@ class StructurePcd(PcdClassObject):
         self.DefaultValueFromDec = DefaultValue\r
     def AddOverrideValue (self, FieldName, Value, SkuName, DefaultStoreName, FileName="", LineNo=0):\r
         if SkuName not in self.SkuOverrideValues:\r
-            self.SkuOverrideValues[SkuName] = collections.OrderedDict()\r
+            self.SkuOverrideValues[SkuName] = OrderedDict()\r
         if DefaultStoreName not in self.SkuOverrideValues[SkuName]:\r
-            self.SkuOverrideValues[SkuName][DefaultStoreName] = collections.OrderedDict()\r
+            self.SkuOverrideValues[SkuName][DefaultStoreName] = OrderedDict()\r
         if FieldName in self.SkuOverrideValues[SkuName][DefaultStoreName]:\r
             del self.SkuOverrideValues[SkuName][DefaultStoreName][FieldName]\r
         self.SkuOverrideValues[SkuName][DefaultStoreName][FieldName] = [Value.strip(), FileName, LineNo]\r
@@ -201,9 +204,6 @@ class StructurePcd(PcdClassObject):
     def SetPcdMode (self, PcdMode):\r
         self.PcdMode = PcdMode\r
 \r
-    def SetFlexibleFieldName (self, FlexibleFieldName):\r
-        self.FlexibleFieldName = FlexibleFieldName\r
-\r
     def copy(self, PcdObject):\r
         self.TokenCName = PcdObject.TokenCName if PcdObject.TokenCName else self.TokenCName\r
         self.TokenSpaceGuidCName = PcdObject.TokenSpaceGuidCName if PcdObject.TokenSpaceGuidCName else PcdObject.TokenSpaceGuidCName\r
@@ -225,7 +225,7 @@ class StructurePcd(PcdClassObject):
         self.DscRawValue = PcdObject.DscRawValue if PcdObject.DscRawValue else self.DscRawValue\r
         self.PcdValueFromComm = PcdObject.PcdValueFromComm if PcdObject.PcdValueFromComm else self.PcdValueFromComm\r
         self.PcdValueFromFdf = PcdObject.PcdValueFromFdf if PcdObject.PcdValueFromFdf else self.PcdValueFromFdf\r
-        self.DefinitionPosition = PcdObject.DefinitionPosition if PcdObject.DefinitionPosition else self.DefinitionPosition\r
+        self.CustomAttribute = PcdObject.CustomAttribute if PcdObject.CustomAttribute else self.CustomAttribute\r
         self.UserDefinedDefaultStoresFlag = PcdObject.UserDefinedDefaultStoresFlag if PcdObject.UserDefinedDefaultStoresFlag else self.UserDefinedDefaultStoresFlag\r
         if isinstance(PcdObject, StructurePcd):\r
             self.StructuredPcdIncludeFile = PcdObject.StructuredPcdIncludeFile if PcdObject.StructuredPcdIncludeFile else self.StructuredPcdIncludeFile\r
@@ -235,7 +235,6 @@ class StructurePcd(PcdClassObject):
             self.DefaultFromDSC=None\r
             self.DefaultValueFromDec = PcdObject.DefaultValueFromDec if PcdObject.DefaultValueFromDec else self.DefaultValueFromDec\r
             self.SkuOverrideValues = PcdObject.SkuOverrideValues if PcdObject.SkuOverrideValues else self.SkuOverrideValues\r
-            self.FlexibleFieldName = PcdObject.FlexibleFieldName if PcdObject.FlexibleFieldName else self.FlexibleFieldName\r
             self.StructName = PcdObject.DatumType if PcdObject.DatumType else self.StructName\r
             self.PcdDefineLineNo = PcdObject.PcdDefineLineNo if PcdObject.PcdDefineLineNo else self.PcdDefineLineNo\r
             self.PkgPath = PcdObject.PkgPath if PcdObject.PkgPath else self.PkgPath\r
@@ -243,21 +242,7 @@ class StructurePcd(PcdClassObject):
             self.PcdFieldValueFromComm = PcdObject.PcdFieldValueFromComm if PcdObject.PcdFieldValueFromComm else self.PcdFieldValueFromComm\r
             self.PcdFieldValueFromFdf = PcdObject.PcdFieldValueFromFdf if PcdObject.PcdFieldValueFromFdf else self.PcdFieldValueFromFdf\r
 \r
-## LibraryClassObject\r
-#\r
-# This Class defines LibraryClassObject used in BuildDatabase\r
-#\r
-# @param object:      Inherited from object class\r
-# @param Name:        Input value for LibraryClassName, default is None\r
-# @param SupModList:  Input value for SupModList, default is []\r
-#\r
-# @var LibraryClass:  To store value for LibraryClass\r
-# @var SupModList:    To store value for SupModList\r
-#\r
-class LibraryClassObject(object):\r
-    def __init__(self, Name = None, SupModList = []):\r
-        self.LibraryClass = Name\r
-        self.SupModList = SupModList\r
+LibraryClassObject = namedtuple('LibraryClassObject', ['LibraryClass','SupModList'], verbose=False)\r
 \r
 ## ModuleBuildClassObject\r
 #\r
@@ -325,7 +310,7 @@ class ModuleBuildClassObject(object):
 \r
         self.Binaries                = []\r
         self.Sources                 = []\r
-        self.LibraryClasses          = collections.OrderedDict()\r
+        self.LibraryClasses          = OrderedDict()\r
         self.Libraries               = []\r
         self.Protocols               = []\r
         self.Ppis                    = []\r