\r
for PcdFromModule in M.ModulePcdList + M.LibraryPcdList:\r
# make sure that the "VOID*" kind of datum has MaxDatumSize set\r
- if PcdFromModule.DatumType == "VOID*" and PcdFromModule.MaxDatumSize in [None, '']:\r
+ if PcdFromModule.DatumType == TAB_VOID and PcdFromModule.MaxDatumSize in [None, '']:\r
NoDatumTypePcdList.add("%s.%s [%s]" % (PcdFromModule.TokenSpaceGuidCName, PcdFromModule.TokenCName, F))\r
\r
# Check the PCD from Binary INF or Source INF\r
ExtraData="\n\tExisted %s PCD %s in:\n\t\t%s\n"\r
% (PcdFromModule.Type, PcdFromModule.TokenCName, InfName))\r
# make sure that the "VOID*" kind of datum has MaxDatumSize set\r
- if PcdFromModule.DatumType == "VOID*" and PcdFromModule.MaxDatumSize in [None, '']:\r
+ if PcdFromModule.DatumType == TAB_VOID and PcdFromModule.MaxDatumSize in [None, '']:\r
NoDatumTypePcdList.add("%s.%s [%s]" % (PcdFromModule.TokenSpaceGuidCName, PcdFromModule.TokenCName, InfName))\r
if M.ModuleType in ["PEIM", "PEI_CORE"]:\r
PcdFromModule.Phase = "PEI"\r
\r
for item in self._PlatformPcds:\r
if self._PlatformPcds[item].DatumType and self._PlatformPcds[item].DatumType not in [TAB_UINT8, TAB_UINT16, TAB_UINT32, TAB_UINT64, TAB_VOID, "BOOLEAN"]:\r
- self._PlatformPcds[item].DatumType = "VOID*"\r
+ self._PlatformPcds[item].DatumType = TAB_VOID\r
\r
if (self.Workspace.ArchList[-1] == self.Arch): \r
for Pcd in self._DynamicPcdList:\r
Sku.VpdOffset = Sku.VpdOffset.strip()\r
\r
if Pcd.DatumType not in [TAB_UINT8, TAB_UINT16, TAB_UINT32, TAB_UINT64, TAB_VOID, "BOOLEAN"]:\r
- Pcd.DatumType = "VOID*"\r
+ Pcd.DatumType = TAB_VOID\r
\r
# if found PCD which datum value is unicode string the insert to left size of UnicodeIndex\r
# if found HII type PCD then insert to right of UnicodeIndex\r
SkuValueMap[PcdValue].append(Sku)\r
if not NeedProcessVpdMapFile and Sku.VpdOffset == "*":\r
NeedProcessVpdMapFile = True \r
- if DscPcdEntry.DatumType == 'VOID*' and PcdValue.startswith("L"):\r
+ if DscPcdEntry.DatumType == TAB_VOID and PcdValue.startswith("L"):\r
UnicodePcdArray.add(DscPcdEntry)\r
elif len(Sku.VariableName) > 0:\r
HiiPcdArray.add(DscPcdEntry)\r
Sku.VpdOffset = Sku.VpdOffset.strip()\r
\r
if Pcd.DatumType not in [TAB_UINT8, TAB_UINT16, TAB_UINT32, TAB_UINT64, TAB_VOID, "BOOLEAN"]:\r
- Pcd.DatumType = "VOID*"\r
+ Pcd.DatumType = TAB_VOID\r
\r
PcdValue = Sku.DefaultValue\r
- if Pcd.DatumType == 'VOID*' and PcdValue.startswith("L"):\r
+ if Pcd.DatumType == TAB_VOID and PcdValue.startswith("L"):\r
# if found PCD which datum value is unicode string the insert to left size of UnicodeIndex\r
UnicodePcdArray.add(Pcd)\r
elif len(Sku.VariableName) > 0:\r
ToPcd.validlists = FromPcd.validlists\r
ToPcd.expressions = FromPcd.expressions\r
\r
- if FromPcd is not None and ToPcd.DatumType == "VOID*" and ToPcd.MaxDatumSize in ['', None]:\r
+ if FromPcd is not None and ToPcd.DatumType == TAB_VOID and ToPcd.MaxDatumSize in ['', None]:\r
EdkLogger.debug(EdkLogger.DEBUG_9, "No MaxDatumSize specified for PCD %s.%s" \\r
% (ToPcd.TokenSpaceGuidCName, TokenCName))\r
Value = ToPcd.DefaultValue\r
# use PCD value to calculate the MaxDatumSize when it is not specified\r
for Name, Guid in Pcds:\r
Pcd = Pcds[Name, Guid]\r
- if Pcd.DatumType == "VOID*" and Pcd.MaxDatumSize in ['', None]:\r
+ if Pcd.DatumType == TAB_VOID and Pcd.MaxDatumSize in ['', None]:\r
Pcd.MaxSizeUserSet = None\r
Value = Pcd.DefaultValue\r
if Value in [None, '']:\r
elif BoolValue == 'FALSE':\r
Pcd.DefaultValue = '0'\r
\r
- if Pcd.DatumType in ['UINT8', 'UINT16', 'UINT32', 'UINT64', 'BOOLEAN']:\r
+ if Pcd.DatumType in TAB_PCD_NUMERIC_TYPES:\r
HexFormat = '0x%02x'\r
- if Pcd.DatumType == 'UINT16':\r
+ if Pcd.DatumType == TAB_UINT16:\r
HexFormat = '0x%04x'\r
- elif Pcd.DatumType == 'UINT32':\r
+ elif Pcd.DatumType == TAB_UINT32:\r
HexFormat = '0x%08x'\r
- elif Pcd.DatumType == 'UINT64':\r
+ elif Pcd.DatumType == TAB_UINT64:\r
HexFormat = '0x%016x'\r
PcdValue = HexFormat % int(Pcd.DefaultValue, 0)\r
else:\r
TAB_PCDS_DYNAMIC_EX_HII : '',\r
}\r
\r
-_NumericDataTypesList = ['UINT8', 'UINT16', 'UINT32', 'UINT64', 'BOOLEAN']\r
-\r
## Dynamic PCD types\r
gDynamicPcd = [TAB_PCDS_DYNAMIC, TAB_PCDS_DYNAMIC_DEFAULT, TAB_PCDS_DYNAMIC_VPD, TAB_PCDS_DYNAMIC_HII]\r
\r
gDynamicExPcd = [TAB_PCDS_DYNAMIC_EX, TAB_PCDS_DYNAMIC_EX_DEFAULT, TAB_PCDS_DYNAMIC_EX_VPD, TAB_PCDS_DYNAMIC_EX_HII]\r
\r
## Datum size\r
-gDatumSizeStringDatabase = {'UINT8':'8','UINT16':'16','UINT32':'32','UINT64':'64','BOOLEAN':'BOOLEAN','VOID*':'8'}\r
-gDatumSizeStringDatabaseH = {'UINT8':'8','UINT16':'16','UINT32':'32','UINT64':'64','BOOLEAN':'BOOL','VOID*':'PTR'}\r
-gDatumSizeStringDatabaseLib = {'UINT8':'8','UINT16':'16','UINT32':'32','UINT64':'64','BOOLEAN':'Bool','VOID*':'Ptr'}\r
+gDatumSizeStringDatabase = {TAB_UINT8:'8',TAB_UINT16:'16',TAB_UINT32:'32',TAB_UINT64:'64','BOOLEAN':'BOOLEAN',TAB_VOID:'8'}\r
+gDatumSizeStringDatabaseH = {TAB_UINT8:'8',TAB_UINT16:'16',TAB_UINT32:'32',TAB_UINT64:'64','BOOLEAN':'BOOL',TAB_VOID:'PTR'}\r
+gDatumSizeStringDatabaseLib = {TAB_UINT8:'8',TAB_UINT16:'16',TAB_UINT32:'32',TAB_UINT64:'64','BOOLEAN':'Bool',TAB_VOID:'Ptr'}\r
\r
## AutoGen File Header Templates\r
gAutoGenHeaderString = TemplateString("""\\r
TokenCNameList.add(TokenCName)\r
\r
def GetPcdSize(Pcd):\r
- if Pcd.DatumType not in _NumericDataTypesList:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
Value = Pcd.DefaultValue\r
if Value in [None, '']:\r
return 1\r
return len(Value.split(','))\r
else:\r
return len(Value) - 1\r
- if Pcd.DatumType == 'UINT64':\r
+ if Pcd.DatumType == TAB_UINT64:\r
return 8\r
- if Pcd.DatumType == 'UINT32':\r
+ if Pcd.DatumType == TAB_UINT32:\r
return 4\r
- if Pcd.DatumType == 'UINT16':\r
+ if Pcd.DatumType == TAB_UINT16:\r
return 2\r
- if Pcd.DatumType == 'UINT8':\r
+ if Pcd.DatumType == TAB_UINT8:\r
return 1\r
if Pcd.DatumType == 'BOOLEAN':\r
return 1\r
"Unknown PCD type [%s] of PCD %s.%s" % (Pcd.Type, Pcd.TokenSpaceGuidCName, TokenCName),\r
ExtraData="[%s]" % str(Info))\r
\r
- DatumSize = gDatumSizeStringDatabase[Pcd.DatumType] if Pcd.DatumType in gDatumSizeStringDatabase else gDatumSizeStringDatabase['VOID*']\r
- DatumSizeLib = gDatumSizeStringDatabaseLib[Pcd.DatumType] if Pcd.DatumType in gDatumSizeStringDatabaseLib else gDatumSizeStringDatabaseLib['VOID*']\r
- GetModeName = '_PCD_GET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_' + TokenCName if Pcd.DatumType in gDatumSizeStringDatabaseH else '_PCD_GET_MODE_' + gDatumSizeStringDatabaseH['VOID*'] + '_' + TokenCName\r
- SetModeName = '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_' + TokenCName if Pcd.DatumType in gDatumSizeStringDatabaseH else '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH['VOID*'] + '_' + TokenCName\r
- SetModeStatusName = '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_S_' + TokenCName if Pcd.DatumType in gDatumSizeStringDatabaseH else '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH['VOID*'] + '_S_' + TokenCName\r
+ DatumSize = gDatumSizeStringDatabase[Pcd.DatumType] if Pcd.DatumType in gDatumSizeStringDatabase else gDatumSizeStringDatabase[TAB_VOID]\r
+ DatumSizeLib = gDatumSizeStringDatabaseLib[Pcd.DatumType] if Pcd.DatumType in gDatumSizeStringDatabaseLib else gDatumSizeStringDatabaseLib[TAB_VOID]\r
+ GetModeName = '_PCD_GET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_' + TokenCName if Pcd.DatumType in gDatumSizeStringDatabaseH else '_PCD_GET_MODE_' + gDatumSizeStringDatabaseH[TAB_VOID] + '_' + TokenCName\r
+ SetModeName = '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_' + TokenCName if Pcd.DatumType in gDatumSizeStringDatabaseH else '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[TAB_VOID] + '_' + TokenCName\r
+ SetModeStatusName = '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_S_' + TokenCName if Pcd.DatumType in gDatumSizeStringDatabaseH else '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[TAB_VOID] + '_S_' + TokenCName\r
GetModeSizeName = '_PCD_GET_MODE_SIZE' + '_' + TokenCName\r
\r
if Pcd.Type in gDynamicExPcd:\r
AutoGenH.Append('// #define %s %s\n' % (PcdTokenName, PcdExTokenName))\r
AutoGenH.Append('// #define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('// #define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))\r
- if Pcd.DatumType not in _NumericDataTypesList:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
AutoGenH.Append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
else:\r
AutoGenH.Append('#define %s %s\n' % (PcdTokenName, PcdExTokenName))\r
AutoGenH.Append('#define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('#define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))\r
- if Pcd.DatumType not in _NumericDataTypesList:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
else:\r
else:\r
AutoGenH.Append('#define %s LibPcdGet%s(%s)\n' % (GetModeName, DatumSizeLib, PcdTokenName))\r
AutoGenH.Append('#define %s LibPcdGetSize(%s)\n' % (GetModeSizeName, PcdTokenName))\r
- if Pcd.DatumType not in _NumericDataTypesList:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%s(%s, (SizeOfBuffer), (Buffer))\n' %(SetModeName, DatumSizeLib, PcdTokenName))\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%sS(%s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))\r
else:\r
elif BoolValue == 'FALSE' or BoolValue == '0':\r
Value = '0U'\r
\r
- if Pcd.DatumType in ['UINT64', 'UINT32', 'UINT16', 'UINT8']:\r
+ if Pcd.DatumType in TAB_PCD_CLEAN_NUMERIC_TYPES:\r
try:\r
if Value.upper().endswith('L'):\r
Value = Value[:-1]\r
EdkLogger.error("build", AUTOGEN_ERROR,\r
"PCD value is not valid dec or hex number for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
ExtraData="[%s]" % str(Info))\r
- if Pcd.DatumType == 'UINT64':\r
+ if Pcd.DatumType == TAB_UINT64:\r
if ValueNumber < 0:\r
EdkLogger.error("build", AUTOGEN_ERROR,\r
"PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
ExtraData="[%s]" % str(Info))\r
if not Value.endswith('ULL'):\r
Value += 'ULL'\r
- elif Pcd.DatumType == 'UINT32':\r
+ elif Pcd.DatumType == TAB_UINT32:\r
if ValueNumber < 0:\r
EdkLogger.error("build", AUTOGEN_ERROR,\r
"PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
ExtraData="[%s]" % str(Info))\r
if not Value.endswith('U'):\r
Value += 'U'\r
- elif Pcd.DatumType == 'UINT16':\r
+ elif Pcd.DatumType == TAB_UINT16:\r
if ValueNumber < 0:\r
EdkLogger.error("build", AUTOGEN_ERROR,\r
"PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
ExtraData="[%s]" % str(Info))\r
if not Value.endswith('U'):\r
Value += 'U' \r
- elif Pcd.DatumType == 'UINT8':\r
+ elif Pcd.DatumType == TAB_UINT8:\r
if ValueNumber < 0:\r
EdkLogger.error("build", AUTOGEN_ERROR,\r
"PCD can't be set to negative value for datum type [%s] of PCD %s.%s" % (Pcd.DatumType, Pcd.TokenSpaceGuidCName, TokenCName),\r
ExtraData="[%s]" % str(Info))\r
if not Value.endswith('U'):\r
Value += 'U'\r
- if Pcd.DatumType not in _NumericDataTypesList:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
if Pcd.MaxDatumSize is None or Pcd.MaxDatumSize == '':\r
EdkLogger.error("build", AUTOGEN_ERROR,\r
"Unknown [MaxDatumSize] of PCD [%s.%s]" % (Pcd.TokenSpaceGuidCName, TokenCName),\r
# skip casting for fixed at build since it breaks ARM assembly.\r
# Long term we need PCD macros that work in assembly\r
#\r
- elif Pcd.Type != TAB_PCDS_FIXED_AT_BUILD and Pcd.DatumType in ['UINT8', 'UINT16', 'UINT32', 'UINT64', 'BOOLEAN', 'VOID*']:\r
+ elif Pcd.Type != TAB_PCDS_FIXED_AT_BUILD and Pcd.DatumType in TAB_PCD_NUMERIC_TYPES_VOID:\r
Value = "((%s)%s)" % (Pcd.DatumType, Value)\r
\r
- if Pcd.DatumType not in ['UINT8', 'UINT16', 'UINT32', 'UINT64', 'BOOLEAN', 'VOID*']:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES_VOID:\r
# handle structure PCD\r
if Pcd.MaxDatumSize is None or Pcd.MaxDatumSize == '':\r
EdkLogger.error("build", AUTOGEN_ERROR,\r
else:\r
PcdValueName = '_PCD_VALUE_' + TokenCName\r
\r
- if Pcd.DatumType not in _NumericDataTypesList:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
#\r
# For unicode, UINT16 array will be generated, so the alignment of unicode is guaranteed.\r
#\r
AutoGenH.Append('#define %s %s%s\n' % (GetModeName, Type, PcdVariableName))\r
\r
if Pcd.Type == TAB_PCDS_PATCHABLE_IN_MODULE:\r
- if Pcd.DatumType not in _NumericDataTypesList:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSize((VOID *)_gPcd_BinaryPatch_%s, &_gPcd_BinaryPatch_Size_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), (Buffer))\n' % (SetModeName, Pcd.TokenCName, Pcd.TokenCName, Pcd.TokenCName))\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSizeS((VOID *)_gPcd_BinaryPatch_%s, &_gPcd_BinaryPatch_Size_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, Pcd.TokenCName, Pcd.TokenCName, Pcd.TokenCName))\r
else:\r
ExtraData="[%s]" % str(Info))\r
\r
DatumType = Pcd.DatumType\r
- DatumSize = gDatumSizeStringDatabase[Pcd.DatumType] if Pcd.DatumType in gDatumSizeStringDatabase else gDatumSizeStringDatabase['VOID*']\r
- DatumSizeLib = gDatumSizeStringDatabaseLib[Pcd.DatumType] if Pcd.DatumType in gDatumSizeStringDatabaseLib else gDatumSizeStringDatabaseLib['VOID*']\r
- GetModeName = '_PCD_GET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_' + TokenCName if Pcd.DatumType in gDatumSizeStringDatabaseH else '_PCD_GET_MODE_' + gDatumSizeStringDatabaseH['VOID*'] + '_' + TokenCName\r
- SetModeName = '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_' + TokenCName if Pcd.DatumType in gDatumSizeStringDatabaseH else '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH['VOID*'] + '_' + TokenCName\r
- SetModeStatusName = '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_S_' + TokenCName if Pcd.DatumType in gDatumSizeStringDatabaseH else '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH['VOID*'] + '_S_' + TokenCName\r
+ DatumSize = gDatumSizeStringDatabase[Pcd.DatumType] if Pcd.DatumType in gDatumSizeStringDatabase else gDatumSizeStringDatabase[TAB_VOID]\r
+ DatumSizeLib = gDatumSizeStringDatabaseLib[Pcd.DatumType] if Pcd.DatumType in gDatumSizeStringDatabaseLib else gDatumSizeStringDatabaseLib[TAB_VOID]\r
+ GetModeName = '_PCD_GET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_' + TokenCName if Pcd.DatumType in gDatumSizeStringDatabaseH else '_PCD_GET_MODE_' + gDatumSizeStringDatabaseH[TAB_VOID] + '_' + TokenCName\r
+ SetModeName = '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_' + TokenCName if Pcd.DatumType in gDatumSizeStringDatabaseH else '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[TAB_VOID] + '_' + TokenCName\r
+ SetModeStatusName = '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[Pcd.DatumType] + '_S_' + TokenCName if Pcd.DatumType in gDatumSizeStringDatabaseH else '_PCD_SET_MODE_' + gDatumSizeStringDatabaseH[TAB_VOID] + '_S_' + TokenCName\r
GetModeSizeName = '_PCD_GET_MODE_SIZE' + '_' + TokenCName\r
\r
Type = ''\r
Array = ''\r
- if Pcd.DatumType not in _NumericDataTypesList:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
if Pcd.DefaultValue[0]== '{':\r
Type = '(VOID *)'\r
Array = '[]'\r
AutoGenH.Append('// #define %s %s\n' % (PcdTokenName, PcdExTokenName))\r
AutoGenH.Append('// #define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('// #define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))\r
- if Pcd.DatumType not in _NumericDataTypesList:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
AutoGenH.Append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
else:\r
AutoGenH.Append('#define %s %s\n' % (PcdTokenName, PcdExTokenName))\r
AutoGenH.Append('#define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('#define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))\r
- if Pcd.DatumType not in _NumericDataTypesList:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))\r
else:\r
else:\r
AutoGenH.Append('#define %s LibPcdGet%s(%s)\n' % (GetModeName, DatumSizeLib, PcdTokenName))\r
AutoGenH.Append('#define %s LibPcdGetSize(%s)\n' % (GetModeSizeName, PcdTokenName))\r
- if DatumType not in _NumericDataTypesList:\r
+ if DatumType not in TAB_PCD_NUMERIC_TYPES:\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%s(%s, (SizeOfBuffer), (Buffer))\n' %(SetModeName, DatumSizeLib, PcdTokenName))\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%sS(%s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))\r
else:\r
if PcdItemType == TAB_PCDS_PATCHABLE_IN_MODULE:\r
GetModeMaxSizeName = '_PCD_GET_MODE_MAXSIZE' + '_' + TokenCName\r
PcdVariableName = '_gPcd_' + gItemTypeStringDatabase[TAB_PCDS_PATCHABLE_IN_MODULE] + '_' + TokenCName\r
- if DatumType not in _NumericDataTypesList:\r
- if DatumType == 'VOID*' and Array == '[]':\r
- DatumType = ['UINT8', 'UINT16'][Pcd.DefaultValue[0] == 'L']\r
+ if DatumType not in TAB_PCD_NUMERIC_TYPES:\r
+ if DatumType == TAB_VOID and Array == '[]':\r
+ DatumType = [TAB_UINT8, TAB_UINT16][Pcd.DefaultValue[0] == 'L']\r
else:\r
- DatumType = 'UINT8'\r
+ DatumType = TAB_UINT8\r
AutoGenH.Append('extern %s _gPcd_BinaryPatch_%s%s;\n' %(DatumType, TokenCName, Array))\r
else:\r
AutoGenH.Append('extern volatile %s %s%s;\n' % (DatumType, PcdVariableName, Array))\r
AutoGenH.Append('#define %s %s_gPcd_BinaryPatch_%s\n' %(GetModeName, Type, TokenCName))\r
PcdDataSize = GetPcdSize(Pcd)\r
- if Pcd.DatumType not in _NumericDataTypesList:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSize((VOID *)_gPcd_BinaryPatch_%s, &%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, TokenCName, PatchPcdSizeVariableName, PatchPcdMaxSizeVariable))\r
AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSizeS((VOID *)_gPcd_BinaryPatch_%s, &%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, TokenCName, PatchPcdSizeVariableName, PatchPcdMaxSizeVariable))\r
AutoGenH.Append('#define %s %s\n' % (GetModeMaxSizeName, PatchPcdMaxSizeVariable))\r
if PcdItemType == TAB_PCDS_FIXED_AT_BUILD or PcdItemType == TAB_PCDS_FEATURE_FLAG:\r
key = ".".join((Pcd.TokenSpaceGuidCName,Pcd.TokenCName))\r
PcdVariableName = '_gPcd_' + gItemTypeStringDatabase[Pcd.Type] + '_' + TokenCName\r
- if DatumType == 'VOID*' and Array == '[]':\r
- DatumType = ['UINT8', 'UINT16'][Pcd.DefaultValue[0] == 'L']\r
- if DatumType not in ['UINT8', 'UINT16', 'UINT32', 'UINT64', 'BOOLEAN', 'VOID*']:\r
- DatumType = 'UINT8'\r
+ if DatumType == TAB_VOID and Array == '[]':\r
+ DatumType = [TAB_UINT8, TAB_UINT16][Pcd.DefaultValue[0] == 'L']\r
+ if DatumType not in TAB_PCD_NUMERIC_TYPES_VOID:\r
+ DatumType = TAB_UINT8\r
AutoGenH.Append('extern const %s _gPcd_FixedAtBuild_%s%s;\n' %(DatumType, TokenCName, Array))\r
AutoGenH.Append('#define %s %s_gPcd_FixedAtBuild_%s\n' %(GetModeName, Type, TokenCName))\r
AutoGenH.Append('//#define %s ASSERT(FALSE) // It is not allowed to set value for a FIXED_AT_BUILD PCD\n' % SetModeName)\r
ConstFixedPcd = True\r
if key in Info.ConstPcd:\r
Pcd.DefaultValue = Info.ConstPcd[key]\r
- if Pcd.DatumType not in _NumericDataTypesList:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
AutoGenH.Append('#define _PCD_VALUE_%s %s%s\n' %(TokenCName, Type, PcdVariableName))\r
else:\r
AutoGenH.Append('#define _PCD_VALUE_%s %s\n' %(TokenCName, Pcd.DefaultValue))\r
PcdDataSize = GetPcdSize(Pcd)\r
if PcdItemType == TAB_PCDS_FIXED_AT_BUILD:\r
- if Pcd.DatumType not in _NumericDataTypesList:\r
+ if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
if ConstFixedPcd:\r
AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenName, PcdDataSize))\r
AutoGenH.Append('#define %s %s\n' % (GetModeSizeName,FixPcdSizeTokenName))\r
from Common.VariableAttributes import VariableAttributes\r
import copy\r
from struct import unpack\r
-from Common.DataType import TAB_DEFAULT\r
+from Common.DataType import *\r
\r
DATABASE_VERSION = 7\r
\r
new_pcd = copy.deepcopy(pcd)\r
new_pcd.SkuInfoList = {skuname:pcd.SkuInfoList[skuname]}\r
new_pcd.isinit = 'INIT'\r
- if new_pcd.DatumType in ['UINT8','UINT16','UINT32','UINT64']:\r
+ if new_pcd.DatumType in TAB_PCD_CLEAN_NUMERIC_TYPES:\r
for skuobj in pcd.SkuInfoList.values():\r
if skuobj.DefaultValue:\r
defaultvalue = int(skuobj.DefaultValue,16) if skuobj.DefaultValue.upper().startswith("0X") else int(skuobj.DefaultValue,10)\r
\r
Dict['PCD_INFO_FLAG'] = Platform.Platform.PcdInfoFlag\r
\r
- for DatumType in ['UINT64','UINT32','UINT16','UINT8','BOOLEAN', "VOID*"]:\r
+ for DatumType in TAB_PCD_NUMERIC_TYPES_VOID:\r
Dict['VARDEF_CNAME_' + DatumType] = []\r
Dict['VARDEF_GUID_' + DatumType] = []\r
Dict['VARDEF_SKUID_' + DatumType] = []\r
ReorderedDynPcdList = GetOrderedDynamicPcdList(DynamicPcdList, Platform.PcdTokenNumber)\r
for item in ReorderedDynPcdList:\r
if item.DatumType not in [TAB_UINT8, TAB_UINT16, TAB_UINT32, TAB_UINT64, TAB_VOID, "BOOLEAN"]:\r
- item.DatumType = "VOID*"\r
+ item.DatumType = TAB_VOID\r
for Pcd in ReorderedDynPcdList:\r
VoidStarTypeCurrSize = []\r
i += 1\r
VariableDbValueList = []\r
Pcd.InitString = 'UNINIT'\r
\r
- if Pcd.DatumType == 'VOID*':\r
+ if Pcd.DatumType == TAB_VOID:\r
if Pcd.Type not in ["DynamicVpd", "DynamicExVpd"]:\r
Pcd.TokenTypeList = ['PCD_TYPE_STRING']\r
else:\r
#\r
Dict['VARDEF_DB_VALUE_'+Pcd.DatumType].append(Sku.HiiDefaultValue)\r
\r
- if Pcd.DatumType == "UINT64":\r
+ if Pcd.DatumType == TAB_UINT64:\r
Dict['VARDEF_VALUE_'+Pcd.DatumType].append(Sku.HiiDefaultValue + "ULL")\r
- elif Pcd.DatumType in ("UINT32", "UINT16", "UINT8"):\r
+ elif Pcd.DatumType in (TAB_UINT32, TAB_UINT16, TAB_UINT8):\r
Dict['VARDEF_VALUE_'+Pcd.DatumType].append(Sku.HiiDefaultValue + "U")\r
elif Pcd.DatumType == "BOOLEAN":\r
if eval(Sku.HiiDefaultValue) in [1,0]:\r
VpdHeadOffsetList.append(str(Sku.VpdOffset) + 'U')\r
VpdDbOffsetList.append(Sku.VpdOffset)\r
# Also add the VOID* string of VPD PCD to SizeTable \r
- if Pcd.DatumType == 'VOID*':\r
+ if Pcd.DatumType == TAB_VOID:\r
NumberOfSizeItems += 1\r
# For VPD type of PCD, its current size is equal to its MAX size.\r
VoidStarTypeCurrSize = [str(Pcd.MaxDatumSize) + 'U'] \r
continue\r
\r
- if Pcd.DatumType == 'VOID*':\r
+ if Pcd.DatumType == TAB_VOID:\r
Pcd.TokenTypeList += ['PCD_TYPE_STRING']\r
Pcd.InitString = 'INIT'\r
if Sku.HiiDefaultValue != '' and Sku.DefaultValue == '':\r
# For UNIT64 type PCD's value, ULL should be append to avoid\r
# warning under linux building environment.\r
#\r
- if Pcd.DatumType == "UINT64":\r
+ if Pcd.DatumType == TAB_UINT64:\r
ValueList.append(Sku.DefaultValue + "ULL")\r
- elif Pcd.DatumType in ("UINT32", "UINT16", "UINT8"):\r
+ elif Pcd.DatumType in (TAB_UINT32, TAB_UINT16, TAB_UINT8):\r
ValueList.append(Sku.DefaultValue + "U")\r
elif Pcd.DatumType == "BOOLEAN":\r
if Sku.DefaultValue in ["1", "0"]:\r
DbValueList.append(Sku.DefaultValue)\r
\r
Pcd.TokenTypeList = list(set(Pcd.TokenTypeList))\r
- if Pcd.DatumType == 'VOID*': \r
+ if Pcd.DatumType == TAB_VOID:\r
Dict['SIZE_TABLE_CNAME'].append(CName)\r
Dict['SIZE_TABLE_GUID'].append(TokenSpaceGuid)\r
Dict['SIZE_TABLE_MAXIMUM_LENGTH'].append(str(Pcd.MaxDatumSize) + 'U')\r
for item in sku_var_info_offset_list:\r
data_type = item.data_type\r
value_list = item.default_value.strip("{").strip("}").split(",")\r
- if data_type in ["BOOLEAN","UINT8","UINT16","UINT32","UINT64"]:\r
- if data_type == ["BOOLEAN","UINT8"]:\r
+ if data_type in DataType.TAB_PCD_NUMERIC_TYPES:\r
+ if data_type == ["BOOLEAN", DataType.TAB_UINT8]:\r
data_flag = "=B"\r
- elif data_type == "UINT16":\r
+ elif data_type == DataType.TAB_UINT16:\r
data_flag = "=H"\r
- elif data_type == "UINT32":\r
+ elif data_type == DataType.TAB_UINT32:\r
data_flag = "=L"\r
- elif data_type == "UINT64":\r
+ elif data_type == DataType.TAB_UINT64:\r
data_flag = "=Q"\r
data = value_list[0]\r
value_list = []\r
except:\r
EdkLogger.error("build", AUTOGEN_ERROR, "Variable offset conflict in PCDs: %s \n" % (" and ".join([item.pcdname for item in sku_var_info_offset_list])))\r
n = sku_var_info_offset_list[0]\r
- indexedvarinfo[key] = [var_info(n.pcdindex,n.pcdname,n.defaultstoragename,n.skuname,n.var_name, n.var_guid, "0x00",n.var_attribute,newvaluestr , newvaluestr , "VOID*")]\r
+ indexedvarinfo[key] = [var_info(n.pcdindex,n.pcdname,n.defaultstoragename,n.skuname,n.var_name, n.var_guid, "0x00",n.var_attribute,newvaluestr , newvaluestr , DataType.TAB_VOID)]\r
self.VarInfo = [item[0] for item in indexedvarinfo.values()]\r
\r
def assemble_variable(self, valuelist):\r
tail = None\r
default_sku_default = indexedvarinfo.get(index).get((DataType.TAB_DEFAULT,DataType.TAB_DEFAULT_STORES_DEFAULT))\r
\r
- if default_sku_default.data_type not in ["UINT8","UINT16","UINT32","UINT64","BOOLEAN"]:\r
+ if default_sku_default.data_type not in DataType.TAB_PCD_NUMERIC_TYPES:\r
var_max_len = max([len(var_item.default_value.split(",")) for var_item in sku_var_info.values()])\r
if len(default_sku_default.default_value.split(",")) < var_max_len:\r
tail = ",".join([ "0x00" for i in range(var_max_len-len(default_sku_default.default_value.split(",")))])\r
continue\r
other_sku_other = indexedvarinfo.get(index).get((skuid,defaultstoragename))\r
\r
- if default_sku_default.data_type not in ["UINT8","UINT16","UINT32","UINT64","BOOLEAN"]:\r
+ if default_sku_default.data_type not in DataType.TAB_PCD_NUMERIC_TYPES:\r
if len(other_sku_other.default_value.split(",")) < var_max_len:\r
tail = ",".join([ "0x00" for i in range(var_max_len-len(other_sku_other.default_value.split(",")))])\r
\r
def PACK_VARIABLES_DATA(self, var_value,data_type, tail = None):\r
Buffer = ""\r
data_len = 0\r
- if data_type == "VOID*":\r
+ if data_type == DataType.TAB_VOID:\r
for value_char in var_value.strip("{").strip("}").split(","):\r
Buffer += pack("=B",int(value_char,16))\r
data_len += len(var_value.split(","))\r
elif data_type == "BOOLEAN":\r
Buffer += pack("=B",True) if var_value.upper() == "TRUE" else pack("=B",False)\r
data_len += 1\r
- elif data_type == "UINT8":\r
+ elif data_type == DataType.TAB_UINT8:\r
Buffer += pack("=B",GetIntegerValue(var_value))\r
data_len += 1\r
- elif data_type == "UINT16":\r
+ elif data_type == DataType.TAB_UINT16:\r
Buffer += pack("=H",GetIntegerValue(var_value))\r
data_len += 2\r
- elif data_type == "UINT32":\r
+ elif data_type == DataType.TAB_UINT32:\r
Buffer += pack("=L",GetIntegerValue(var_value))\r
data_len += 4\r
- elif data_type == "UINT64":\r
+ elif data_type == DataType.TAB_UINT64:\r
Buffer += pack("=Q",GetIntegerValue(var_value))\r
data_len += 8\r
\r
-# Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
# which accompanies this distribution. The full text of the license may be found at\r
from Common.Misc import *\r
from StringIO import StringIO\r
from struct import pack\r
+from Common.DataType import *\r
\r
class VAR_CHECK_PCD_VARIABLE_TAB_CONTAINER(object):\r
def __init__(self):\r
self.ValidData = True\r
self.updateStorageWidth()\r
def updateStorageWidth(self):\r
- if self.PcdDataType == "UINT8" or self.PcdDataType == "BOOLEAN":\r
+ if self.PcdDataType == TAB_UINT8 or self.PcdDataType == "BOOLEAN":\r
self.StorageWidth = 1\r
- elif self.PcdDataType == "UINT16":\r
+ elif self.PcdDataType == TAB_UINT16:\r
self.StorageWidth = 2\r
- elif self.PcdDataType == "UINT32":\r
+ elif self.PcdDataType == TAB_UINT32:\r
self.StorageWidth = 4\r
- elif self.PcdDataType == "UINT64":\r
+ elif self.PcdDataType == TAB_UINT64:\r
self.StorageWidth = 8\r
else:\r
self.StorageWidth = 0\r
TAB_UINT64 = 'UINT64'\r
TAB_VOID = 'VOID*'\r
\r
+TAB_PCD_CLEAN_NUMERIC_TYPES = {TAB_UINT8, TAB_UINT16, TAB_UINT32, TAB_UINT64}\r
+TAB_PCD_NUMERIC_TYPES = {TAB_UINT8, TAB_UINT16, TAB_UINT32, TAB_UINT64, 'BOOLEAN'}\r
+TAB_PCD_NUMERIC_TYPES_VOID = {TAB_UINT8, TAB_UINT16, TAB_UINT32, TAB_UINT64, 'BOOLEAN', TAB_VOID}\r
+\r
TAB_EDK_SOURCE = '$(EDK_SOURCE)'\r
TAB_EFI_SOURCE = '$(EFI_SOURCE)'\r
TAB_WORKSPACE = '$(WORKSPACE)'\r
from Misc import GuidStringToGuidStructureString, ParseFieldValue, IsFieldValueAnArray\r
import Common.EdkLogger as EdkLogger\r
import copy\r
+from Common.DataType import *\r
\r
ERR_STRING_EXPR = 'This operator cannot be used in string expression: [%s].'\r
ERR_SNYTAX = 'Syntax error, the rest of expression cannot be evaluated: [%s].'\r
InputValue = PcdValue\r
if IsFieldValueAnArray(InputValue):\r
try:\r
- PcdValue = ValueExpressionEx(InputValue, 'VOID*', GuidDict)(True)\r
+ PcdValue = ValueExpressionEx(InputValue, TAB_VOID, GuidDict)(True)\r
except:\r
pass\r
return PcdValue\r
PcdValue = self.PcdValue\r
try:\r
PcdValue = ValueExpression.__call__(self, RealValue, Depth)\r
- if self.PcdType == 'VOID*' and (PcdValue.startswith("'") or PcdValue.startswith("L'")):\r
+ if self.PcdType == TAB_VOID and (PcdValue.startswith("'") or PcdValue.startswith("L'")):\r
PcdValue, Size = ParseFieldValue(PcdValue)\r
PcdValueList = []\r
for I in range(Size):\r
PcdValueList.append('0x%02X'%(PcdValue & 0xff))\r
PcdValue = PcdValue >> 8\r
PcdValue = '{' + ','.join(PcdValueList) + '}'\r
- elif self.PcdType in ['UINT8', 'UINT16', 'UINT32', 'UINT64', 'BOOLEAN'] and (PcdValue.startswith("'") or \\r
+ elif self.PcdType in TAB_PCD_NUMERIC_TYPES and (PcdValue.startswith("'") or \\r
PcdValue.startswith('"') or PcdValue.startswith("L'") or PcdValue.startswith('L"') or PcdValue.startswith('{')):\r
raise BadExpression\r
except WrnExpression, Value:\r
PcdValue = Value.result\r
except BadExpression, Value:\r
- if self.PcdType in ['UINT8', 'UINT16', 'UINT32', 'UINT64', 'BOOLEAN']:\r
+ if self.PcdType in TAB_PCD_NUMERIC_TYPES:\r
PcdValue = PcdValue.strip()\r
if type(PcdValue) == type('') and PcdValue.startswith('{') and PcdValue.endswith('}'):\r
PcdValue = SplitPcdValueString(PcdValue[1:-1])\r
ValueType = ''\r
for Item in PcdValue:\r
Item = Item.strip()\r
- if Item.startswith('UINT8'):\r
+ if Item.startswith(TAB_UINT8):\r
ItemSize = 1\r
- ValueType = 'UINT8'\r
- elif Item.startswith('UINT16'):\r
+ ValueType = TAB_UINT8\r
+ elif Item.startswith(TAB_UINT16):\r
ItemSize = 2\r
- ValueType = 'UINT16'\r
- elif Item.startswith('UINT32'):\r
+ ValueType = TAB_UINT16\r
+ elif Item.startswith(TAB_UINT32):\r
ItemSize = 4\r
- ValueType = 'UINT32'\r
- elif Item.startswith('UINT64'):\r
+ ValueType = TAB_UINT32\r
+ elif Item.startswith(TAB_UINT64):\r
ItemSize = 8\r
- ValueType = 'UINT64'\r
+ ValueType = TAB_UINT64\r
elif Item[0] in ['"',"'",'L']:\r
ItemSize = 0\r
- ValueType = 'VOID*'\r
+ ValueType = TAB_VOID\r
else:\r
ItemSize = 0\r
- ValueType = 'UINT8'\r
+ ValueType = TAB_UINT8\r
Item = ValueExpressionEx(Item, ValueType, self._Symb)(True)\r
\r
if ItemSize == 0:\r
PcdValue = '0x%0{}X'.format(Size) % (TmpValue)\r
if TmpValue < 0:\r
raise BadExpression('Type %s PCD Value is negative' % self.PcdType)\r
- if self.PcdType == 'UINT8' and Size > 1:\r
+ if self.PcdType == TAB_UINT8 and Size > 1:\r
raise BadExpression('Type %s PCD Value Size is Larger than 1 byte' % self.PcdType)\r
- if self.PcdType == 'UINT16' and Size > 2:\r
+ if self.PcdType == TAB_UINT16 and Size > 2:\r
raise BadExpression('Type %s PCD Value Size is Larger than 2 byte' % self.PcdType)\r
- if self.PcdType == 'UINT32' and Size > 4:\r
+ if self.PcdType == TAB_UINT32 and Size > 4:\r
raise BadExpression('Type %s PCD Value Size is Larger than 4 byte' % self.PcdType)\r
- if self.PcdType == 'UINT64' and Size > 8:\r
+ if self.PcdType == TAB_UINT64 and Size > 8:\r
raise BadExpression('Type %s PCD Value Size is Larger than 8 byte' % self.PcdType)\r
else:\r
try:\r
raise BadExpression('%s is not a valid c variable name' % Label)\r
if Label not in LabelDict:\r
LabelDict[Label] = str(LabelOffset)\r
- if Item.startswith('UINT8'):\r
+ if Item.startswith(TAB_UINT8):\r
LabelOffset = LabelOffset + 1\r
- elif Item.startswith('UINT16'):\r
+ elif Item.startswith(TAB_UINT16):\r
LabelOffset = LabelOffset + 2\r
- elif Item.startswith('UINT32'):\r
+ elif Item.startswith(TAB_UINT32):\r
LabelOffset = LabelOffset + 4\r
- elif Item.startswith('UINT64'):\r
+ elif Item.startswith(TAB_UINT64):\r
LabelOffset = LabelOffset + 8\r
else:\r
try:\r
continue\r
else:\r
ValueType = ""\r
- if Item.startswith('UINT8'):\r
+ if Item.startswith(TAB_UINT8):\r
ItemSize = 1\r
- ValueType = "UINT8"\r
- elif Item.startswith('UINT16'):\r
+ ValueType = TAB_UINT8\r
+ elif Item.startswith(TAB_UINT16):\r
ItemSize = 2\r
- ValueType = "UINT16"\r
- elif Item.startswith('UINT32'):\r
+ ValueType = TAB_UINT16\r
+ elif Item.startswith(TAB_UINT32):\r
ItemSize = 4\r
- ValueType = "UINT32"\r
- elif Item.startswith('UINT64'):\r
+ ValueType = TAB_UINT32\r
+ elif Item.startswith(TAB_UINT64):\r
ItemSize = 8\r
- ValueType = "UINT64"\r
+ ValueType = TAB_UINT64\r
else:\r
ItemSize = 0\r
if ValueType:\r
if type(Value) <> type(''):\r
raise BadExpression('Type %s is %s' %(Value, type(Value)))\r
Value = Value.strip()\r
- if Value.startswith('UINT8') and Value.endswith(')'):\r
+ if Value.startswith(TAB_UINT8) and Value.endswith(')'):\r
Value, Size = ParseFieldValue(Value.split('(', 1)[1][:-1])\r
if Size > 1:\r
raise BadExpression('Value (%s) Size larger than %d' %(Value, Size))\r
return Value, 1\r
- if Value.startswith('UINT16') and Value.endswith(')'):\r
+ if Value.startswith(TAB_UINT16) and Value.endswith(')'):\r
Value, Size = ParseFieldValue(Value.split('(', 1)[1][:-1])\r
if Size > 2:\r
raise BadExpression('Value (%s) Size larger than %d' %(Value, Size))\r
return Value, 2\r
- if Value.startswith('UINT32') and Value.endswith(')'):\r
+ if Value.startswith(TAB_UINT32) and Value.endswith(')'):\r
Value, Size = ParseFieldValue(Value.split('(', 1)[1][:-1])\r
if Size > 4:\r
raise BadExpression('Value (%s) Size larger than %d' %(Value, Size))\r
return Value, 4\r
- if Value.startswith('UINT64') and Value.endswith(')'):\r
+ if Value.startswith(TAB_UINT64) and Value.endswith(')'):\r
Value, Size = ParseFieldValue(Value.split('(', 1)[1][:-1])\r
if Size > 8:\r
raise BadExpression('Value (%s) Size larger than %d' % (Value, Size))\r
elif PcdType in (MODEL_PCD_DYNAMIC_VPD, MODEL_PCD_DYNAMIC_EX_VPD):\r
VpdOffset = FieldList[0]\r
Value = Size = ''\r
- if not DataType == 'VOID*':\r
+ if not DataType == TAB_VOID:\r
if len(FieldList) > 1:\r
Value = FieldList[1]\r
else:\r
# For PCD value setting\r
#\r
def CheckPcdDatum(Type, Value):\r
- if Type == "VOID*":\r
+ if Type == TAB_VOID:\r
ValueRe = re.compile(r'\s*L?\".*\"\s*$')\r
if not (((Value.startswith('L"') or Value.startswith('"')) and Value.endswith('"'))\r
or (Value.startswith('{') and Value.endswith('}')) or (Value.startswith("L'") or Value.startswith("'") and Value.endswith("'"))\r
if not (Offset >= 0 or Offset == "*"):\r
EdkLogger.error("VpdInfoFile", BuildToolError.PARAMETER_INVALID, "Invalid offset parameter: %s." % Offset)\r
\r
- if Vpd.DatumType == "VOID*":\r
+ if Vpd.DatumType == TAB_VOID:\r
if Vpd.MaxDatumSize <= 0:\r
EdkLogger.error("VpdInfoFile", BuildToolError.PARAMETER_INVALID, \r
"Invalid max datum size for VPD PCD %s.%s" % (Vpd.TokenSpaceGuidCName, Vpd.TokenCName))\r
- elif Vpd.DatumType in ["BOOLEAN", "UINT8", "UINT16", "UINT32", "UINT64"]: \r
+ elif Vpd.DatumType in TAB_PCD_NUMERIC_TYPES: \r
if Vpd.MaxDatumSize is None or Vpd.MaxDatumSize == "":\r
Vpd.MaxDatumSize = MAX_SIZE_TYPE[Vpd.DatumType]\r
else:\r
## @file\r
# This file is used to parse meta files\r
#\r
-# Copyright (c) 2008 - 2015, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
# which accompanies this distribution. The full text of the license may be found at\r
#\r
# PCD value can be an expression\r
#\r
- if len(ValueList) > 1 and ValueList[1] == 'VOID*':\r
+ if len(ValueList) > 1 and ValueList[1] == TAB_VOID:\r
PcdValue = ValueList[0] \r
try:\r
ValueList[0] = ValueExpression(PcdValue, self._Macros)(True)\r
\r
@staticmethod\r
def __Verify(Name, Value, Scope):\r
- if Scope in ['UINT64', 'UINT8']:\r
+ if Scope in [TAB_UINT64, TAB_UINT8]:\r
ValueNumber = 0\r
try:\r
ValueNumber = int (Value, 0)\r
EdkLogger.error("FdfParser", FORMAT_INVALID, "The value is not valid dec or hex number for %s." % Name)\r
if ValueNumber < 0:\r
EdkLogger.error("FdfParser", FORMAT_INVALID, "The value can't be set to negative value for %s." % Name)\r
- if Scope == 'UINT64':\r
+ if Scope == TAB_UINT64:\r
if ValueNumber >= 0x10000000000000000:\r
EdkLogger.error("FdfParser", FORMAT_INVALID, "Too large value for %s." % Name)\r
- if Scope == 'UINT8':\r
+ if Scope == TAB_UINT8:\r
if ValueNumber >= 0x100:\r
EdkLogger.error("FdfParser", FORMAT_INVALID, "Too large value for %s." % Name)\r
return True\r
EdkLogger.error("GenFds", GENFDS_ERROR, 'PCD [%s.%s] Value "%s"' %(Pcd.TokenSpaceGuidCName, Pcd.TokenCName, Pcd.DefaultValue),File=self.InfFileName)\r
\r
# Check value, if value are equal, no need to patch\r
- if Pcd.DatumType == "VOID*":\r
+ if Pcd.DatumType == TAB_VOID:\r
if Pcd.InfDefaultValue == DefaultValue or DefaultValue in [None, '']:\r
continue\r
# Get the string size from FDF or DSC\r
except:\r
continue\r
# Check the Pcd size and data type\r
- if Pcd.DatumType == "VOID*":\r
+ if Pcd.DatumType == TAB_VOID:\r
if int(MaxDatumSize) > int(Pcd.MaxDatumSize):\r
EdkLogger.error("GenFds", GENFDS_ERROR, "The size of VOID* type PCD '%s.%s' exceeds its maximum size %d bytes." \\r
% (Pcd.TokenSpaceGuidCName, Pcd.TokenCName, int(MaxDatumSize) - int(Pcd.MaxDatumSize)))\r
if (PcdObj.TokenCName == TokenCName) and (PcdObj.TokenSpaceGuidCName == TokenSpace):\r
if PcdObj.Type != 'FixedAtBuild':\r
EdkLogger.error("GenFds", GENFDS_ERROR, "%s is not FixedAtBuild type." % PcdPattern)\r
- if PcdObj.DatumType != 'VOID*':\r
+ if PcdObj.DatumType != DataType.TAB_VOID:\r
EdkLogger.error("GenFds", GENFDS_ERROR, "%s is not VOID* datum type." % PcdPattern)\r
\r
PcdValue = PcdObj.DefaultValue\r
if (PcdObj.TokenCName == TokenCName) and (PcdObj.TokenSpaceGuidCName == TokenSpace):\r
if PcdObj.Type != 'FixedAtBuild':\r
EdkLogger.error("GenFds", GENFDS_ERROR, "%s is not FixedAtBuild type." % PcdPattern)\r
- if PcdObj.DatumType != 'VOID*':\r
+ if PcdObj.DatumType != DataType.TAB_VOID:\r
EdkLogger.error("GenFds", GENFDS_ERROR, "%s is not VOID* datum type." % PcdPattern)\r
\r
PcdValue = PcdObj.DefaultValue\r
## @file\r
# Patch value into the binary file.\r
#\r
-# Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
# which accompanies this distribution. The full text of the license may be found at\r
import Common.EdkLogger as EdkLogger\r
from Common.BuildVersion import gBUILD_VERSION\r
import array\r
+from Common.DataType import *\r
\r
# Version and Copyright\r
__version_number__ = ("0.10" + " " + gBUILD_VERSION)\r
ValueLength = 0\r
if TypeName == 'BOOLEAN':\r
ValueLength = 1\r
- elif TypeName == 'UINT8':\r
+ elif TypeName == TAB_UINT8:\r
ValueLength = 1\r
- elif TypeName == 'UINT16':\r
+ elif TypeName == TAB_UINT16:\r
ValueLength = 2\r
- elif TypeName == 'UINT32':\r
+ elif TypeName == TAB_UINT32:\r
ValueLength = 4\r
- elif TypeName == 'UINT64':\r
+ elif TypeName == TAB_UINT64:\r
ValueLength = 8\r
- elif TypeName == 'VOID*':\r
+ elif TypeName == TAB_VOID:\r
if MaxSize == 0:\r
return OPTION_MISSING, "PcdMaxSize is not specified for VOID* type PCD."\r
ValueLength = int(MaxSize)\r
# Set PCD value into binary data\r
#\r
ByteList[ValueOffset] = ValueNumber\r
- elif TypeName in ['UINT8', 'UINT16', 'UINT32', 'UINT64']:\r
+ elif TypeName in TAB_PCD_CLEAN_NUMERIC_TYPES:\r
#\r
# Get PCD value for UINT* data type\r
#\r
for Index in range(ValueLength):\r
ByteList[ValueOffset + Index] = ValueNumber % 0x100\r
ValueNumber = ValueNumber / 0x100\r
- elif TypeName == 'VOID*':\r
+ elif TypeName == TAB_VOID:\r
ValueString = SavedStr\r
if ValueString.startswith('L"'):\r
#\r
if CommandOptions.PcdOffset is None or CommandOptions.PcdValue is None or CommandOptions.PcdTypeName is None:\r
EdkLogger.error("PatchPcdValue", OPTION_MISSING, ExtraData="PcdOffset or PcdValue of PcdTypeName is not specified.")\r
return 1\r
- if CommandOptions.PcdTypeName.upper() not in ["BOOLEAN", "UINT8", "UINT16", "UINT32", "UINT64", "VOID*"]:\r
+ if CommandOptions.PcdTypeName.upper() not in TAB_PCD_NUMERIC_TYPES_VOID:\r
EdkLogger.error("PatchPcdValue", PARAMETER_INVALID, ExtraData="PCD type %s is not valid." % (CommandOptions.PcdTypeName))\r
return 1\r
- if CommandOptions.PcdTypeName.upper() == "VOID*" and CommandOptions.PcdMaxSize is None:\r
+ if CommandOptions.PcdTypeName.upper() == TAB_VOID and CommandOptions.PcdMaxSize is None:\r
EdkLogger.error("PatchPcdValue", OPTION_MISSING, ExtraData="PcdMaxSize is not specified for VOID* type PCD.")\r
return 1\r
#\r
from Workspace.BuildClassObject import PlatformBuildClassObject, StructurePcd, PcdClassObject, ModuleBuildClassObject\r
from collections import OrderedDict\r
\r
-#\r
-# Treat CHAR16 as a synonym for UINT16. CHAR16 support is required for VFR C structs\r
-#\r
PcdValueInitName = 'PcdValueInit'\r
-PcdSupportedBaseTypes = ['BOOLEAN', 'UINT8', 'UINT16', 'UINT32', 'UINT64', 'CHAR16']\r
-PcdSupportedBaseTypeWidth = {'BOOLEAN':8, 'UINT8':8, 'UINT16':16, 'UINT32':32, 'UINT64':64}\r
-PcdUnsupportedBaseTypes = ['INT8', 'INT16', 'INT32', 'INT64', 'CHAR8', 'UINTN', 'INTN', 'VOID']\r
\r
PcdMainCHeader = '''\r
/**\r
TokenCName += '.' + FieldName\r
if PcdValue.startswith('H'):\r
if FieldName and IsFieldValueAnArray(PcdValue[1:]):\r
- PcdDatumType = 'VOID*'\r
+ PcdDatumType = TAB_VOID\r
IsArray = True\r
if FieldName and not IsArray:\r
return PcdValue\r
(TokenSpaceGuidCName, TokenCName, PcdValue, Value))\r
elif PcdValue.startswith("L'") or PcdValue.startswith("'"):\r
if FieldName and IsFieldValueAnArray(PcdValue):\r
- PcdDatumType = 'VOID*'\r
+ PcdDatumType = TAB_VOID\r
IsArray = True\r
if FieldName and not IsArray:\r
return PcdValue\r
elif PcdValue.startswith('L'):\r
PcdValue = 'L"' + PcdValue[1:] + '"'\r
if FieldName and IsFieldValueAnArray(PcdValue):\r
- PcdDatumType = 'VOID*'\r
+ PcdDatumType = TAB_VOID\r
IsArray = True\r
if FieldName and not IsArray:\r
return PcdValue\r
if PcdValue.upper() == 'TRUE':\r
PcdValue = str(1)\r
if not FieldName:\r
- if PcdDatumType not in ['UINT8','UINT16','UINT32','UINT64','BOOLEAN']:\r
+ if PcdDatumType not in TAB_PCD_NUMERIC_TYPES:\r
PcdValue = '"' + PcdValue + '"'\r
else:\r
IsArray = False\r
except:\r
PcdValue = '"' + PcdValue + '"'\r
if IsFieldValueAnArray(PcdValue):\r
- PcdDatumType = 'VOID*'\r
+ PcdDatumType = TAB_VOID\r
IsArray = True\r
if not IsArray:\r
return PcdValue\r
for defaultstore in SkuInfo.DefaultStoreDict:\r
SkuInfo.DefaultStoreDict[defaultstore] = NoFiledValues[(Pcd.TokenSpaceGuidCName,Pcd.TokenCName)][0]\r
if Pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII], self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII]]:\r
- if Pcd.DatumType == "VOID*":\r
+ if Pcd.DatumType == TAB_VOID:\r
if not Pcd.MaxDatumSize:\r
Pcd.MaxDatumSize = '0'\r
CurrentSize = int(Pcd.MaxDatumSize,16) if Pcd.MaxDatumSize.upper().startswith("0X") else int(Pcd.MaxDatumSize)\r
IsArray = IsFieldValueAnArray(FieldList[FieldName.strip(".")][0])\r
if IsArray and not (FieldList[FieldName.strip(".")][0].startswith('{GUID') and FieldList[FieldName.strip(".")][0].endswith('}')):\r
try:\r
- Value = ValueExpressionEx(FieldList[FieldName.strip(".")][0], "VOID*", self._GuidDict)(True)\r
+ Value = ValueExpressionEx(FieldList[FieldName.strip(".")][0], TAB_VOID, self._GuidDict)(True)\r
except BadExpression:\r
EdkLogger.error('Build', FORMAT_INVALID, "Invalid value format for %s. From %s Line %d " %\r
(".".join((Pcd.TokenSpaceGuidCName, Pcd.TokenCName, FieldName.strip('.'))), FieldList[FieldName.strip(".")][1], FieldList[FieldName.strip(".")][2]))\r
IsArray = IsFieldValueAnArray(FieldList[FieldName.strip(".")][0])\r
if IsArray and not (FieldList[FieldName.strip(".")][0].startswith('{GUID') and FieldList[FieldName.strip(".")][0].endswith('}')):\r
try:\r
- Value = ValueExpressionEx(FieldList[FieldName.strip(".")][0], "VOID*", self._GuidDict)(True)\r
+ Value = ValueExpressionEx(FieldList[FieldName.strip(".")][0], TAB_VOID, self._GuidDict)(True)\r
except BadExpression:\r
EdkLogger.error('Build', FORMAT_INVALID, "Invalid value format for %s. From %s Line %d " %\r
(".".join((Pcd.TokenSpaceGuidCName, Pcd.TokenCName, FieldName.strip('.'))), FieldList[FieldName.strip(".")][1], FieldList[FieldName.strip(".")][2]))\r
IsArray = IsFieldValueAnArray(Pcd.PcdFieldValueFromComm[FieldName.strip(".")][0])\r
if IsArray and not (Pcd.PcdFieldValueFromComm[FieldName.strip(".")][0].startswith('{GUID') and Pcd.PcdFieldValueFromComm[FieldName.strip(".")][0].endswith('}')):\r
try:\r
- Value = ValueExpressionEx(Pcd.PcdFieldValueFromComm[FieldName.strip(".")][0], "VOID*", self._GuidDict)(True)\r
+ Value = ValueExpressionEx(Pcd.PcdFieldValueFromComm[FieldName.strip(".")][0], TAB_VOID, self._GuidDict)(True)\r
except BadExpression:\r
EdkLogger.error('Build', FORMAT_INVALID, "Invalid value format for %s. From %s Line %d " %\r
(".".join((Pcd.TokenSpaceGuidCName, Pcd.TokenCName, FieldName.strip('.'))), Pcd.PcdFieldValueFromComm[FieldName.strip(".")][1], Pcd.PcdFieldValueFromComm[FieldName.strip(".")][2]))\r
IsArray = IsFieldValueAnArray(Pcd.DefaultValueFromDec)\r
if IsArray:\r
try:\r
- DefaultValueFromDec = ValueExpressionEx(Pcd.DefaultValueFromDec, "VOID*")(True)\r
+ DefaultValueFromDec = ValueExpressionEx(Pcd.DefaultValueFromDec, TAB_VOID)(True)\r
except BadExpression:\r
EdkLogger.error("Build", FORMAT_INVALID, "Invalid value format for %s.%s, from DEC: %s" %\r
(Pcd.TokenSpaceGuidCName, Pcd.TokenCName, DefaultValueFromDec))\r
IsArray = IsFieldValueAnArray(FieldList[FieldName][0])\r
if IsArray:\r
try:\r
- FieldList[FieldName][0] = ValueExpressionEx(FieldList[FieldName][0], "VOID*", self._GuidDict)(True)\r
+ FieldList[FieldName][0] = ValueExpressionEx(FieldList[FieldName][0], TAB_VOID, self._GuidDict)(True)\r
except BadExpression:\r
EdkLogger.error('Build', FORMAT_INVALID, "Invalid value format for %s. From %s Line %d " %\r
(".".join((Pcd.TokenSpaceGuidCName, Pcd.TokenCName, FieldName)), FieldList[FieldName][1],FieldList[FieldName][2]))\r
IsArray = IsFieldValueAnArray(FieldList)\r
if IsArray:\r
try:\r
- FieldList = ValueExpressionEx(FieldList, "VOID*")(True)\r
+ FieldList = ValueExpressionEx(FieldList, TAB_VOID)(True)\r
except BadExpression:\r
EdkLogger.error("Build", FORMAT_INVALID, "Invalid value format for %s.%s, from DSC: %s" %\r
(Pcd.TokenSpaceGuidCName, Pcd.TokenCName, FieldList))\r
IsArray = IsFieldValueAnArray(FieldList[FieldName][0])\r
if IsArray:\r
try:\r
- FieldList[FieldName][0] = ValueExpressionEx(FieldList[FieldName][0], "VOID*", self._GuidDict)(True)\r
+ FieldList[FieldName][0] = ValueExpressionEx(FieldList[FieldName][0], TAB_VOID, self._GuidDict)(True)\r
except BadExpression:\r
EdkLogger.error('Build', FORMAT_INVALID, "Invalid value format for %s. From %s Line %d " %\r
(".".join((Pcd.TokenSpaceGuidCName, Pcd.TokenCName, FieldName)), FieldList[FieldName][1], FieldList[FieldName][2]))\r
IsArray = IsFieldValueAnArray(FieldList)\r
if IsArray:\r
try:\r
- FieldList = ValueExpressionEx(FieldList, "VOID*")(True)\r
+ FieldList = ValueExpressionEx(FieldList, TAB_VOID)(True)\r
except BadExpression:\r
EdkLogger.error("Build", FORMAT_INVALID, "Invalid value format for %s.%s, from Command: %s" %\r
(Pcd.TokenSpaceGuidCName, Pcd.TokenCName, FieldList))\r
IsArray = IsFieldValueAnArray(FieldList[FieldName][0])\r
if IsArray:\r
try:\r
- FieldList[FieldName][0] = ValueExpressionEx(FieldList[FieldName][0], "VOID*", self._GuidDict)(True)\r
+ FieldList[FieldName][0] = ValueExpressionEx(FieldList[FieldName][0], TAB_VOID, self._GuidDict)(True)\r
except BadExpression:\r
EdkLogger.error('Build', FORMAT_INVALID, "Invalid value format for %s. From %s Line %d " %\r
(".".join((Pcd.TokenSpaceGuidCName, Pcd.TokenCName, FieldName)), FieldList[FieldName][1], FieldList[FieldName][2]))\r
MaxSize = int(pcd.MaxDatumSize, 0)\r
else:\r
MaxSize = 0\r
- if pcd.DatumType not in ['BOOLEAN','UINT8','UINT16','UINT32','UINT64']:\r
+ if pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:\r
for (_, skuobj) in pcd.SkuInfoList.items():\r
datalen = 0\r
skuobj.HiiDefaultValue = StringToArray(skuobj.HiiDefaultValue)\r
First = False\r
\r
\r
- if Pcd.DatumType in ('UINT8', 'UINT16', 'UINT32', 'UINT64'):\r
+ if Pcd.DatumType in TAB_PCD_CLEAN_NUMERIC_TYPES:\r
PcdValueNumber = int(PcdValue.strip(), 0)\r
if DecDefaultValue is None:\r
DecMatch = True\r
ModuleOverride = self.ModulePcdOverride.get((Pcd.TokenCName, Pcd.TokenSpaceGuidCName), {})\r
for ModulePath in ModuleOverride:\r
ModuleDefault = ModuleOverride[ModulePath]\r
- if Pcd.DatumType in ('UINT8', 'UINT16', 'UINT32', 'UINT64'):\r
+ if Pcd.DatumType in TAB_PCD_CLEAN_NUMERIC_TYPES:\r
ModulePcdDefaultValueNumber = int(ModuleDefault.strip(), 0)\r
Match = (ModulePcdDefaultValueNumber == PcdValueNumber)\r
else:\r