* [Patch] BaseTools: Fix PcdArray issue
@ 2018-12-14 9:55 BobCF
2018-12-14 11:21 ` Philippe Mathieu-Daudé
0 siblings, 1 reply; 2+ messages in thread
From: BobCF @ 2018-12-14 9:55 UTC (permalink / raw)
To: edk2-devel; +Cc: Bob Feng, Liming Gao, Ard Biesheuvel
https://bugzilla.tianocore.org/show_bug.cgi?id=1390
1. support hex number for array index
2. support Non-Dynamic Pcd for array data type
3. support {} and {CODE()} for array data type
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
BaseTools/Source/Python/Common/Misc.py | 6 ++
.../Python/Workspace/BuildClassObject.py | 3 +-
.../Source/Python/Workspace/DscBuildData.py | 59 ++++++++++++-------
3 files changed, 45 insertions(+), 23 deletions(-)
diff --git a/BaseTools/Source/Python/Common/Misc.py b/BaseTools/Source/Python/Common/Misc.py
index b063f064fb..ea09f85e70 100644
--- a/BaseTools/Source/Python/Common/Misc.py
+++ b/BaseTools/Source/Python/Common/Misc.py
@@ -2144,10 +2144,16 @@ def CopyDict(ori_dict):
if isinstance(ori_dict[key],(dict,OrderedDict)):
new_dict[key] = CopyDict(ori_dict[key])
else:
new_dict[key] = ori_dict[key]
return new_dict
+
+#
+# Remove the c/c++ comments: // and /* */
+#
+def RemoveCComments(ctext):
+ return re.sub('//.*?\n|/\*.*?\*/', '\n', ctext, flags=re.S)
##
#
# This acts like the main() function for the script, unless it is 'import'ed into another
# script.
#
diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py b/BaseTools/Source/Python/Workspace/BuildClassObject.py
index 008eee1a16..e9a1195fd2 100644
--- a/BaseTools/Source/Python/Workspace/BuildClassObject.py
+++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py
@@ -17,11 +17,11 @@ import collections
import re
from collections import OrderedDict
from Common.Misc import CopyDict
import copy
StructPattern = re.compile(r'[_a-zA-Z][0-9A-Za-z_\[\]]*$')
-ArrayIndex = re.compile("\[\s*\d{0,1}\s*\]")
+ArrayIndex = re.compile("\[\s*[0-9a-fA-FxX]*\s*\]")
## PcdClassObject
#
# This Class is used for PcdObject
#
# @param object: Inherited from object class
@@ -82,10 +82,11 @@ class PcdClassObject(object):
dimension = ArrayIndex.findall(self._DatumType)
for item in dimension:
maxsize = item.lstrip("[").rstrip("]").strip()
if not maxsize:
maxsize = "-1"
+ maxsize = str(int(maxsize,16)) if maxsize.startswith(("0x","0X")) else maxsize
self._Capacity.append(maxsize)
if hasattr(self, "SkuOverrideValues"):
for sku in self.SkuOverrideValues:
for defaultstore in self.SkuOverrideValues[sku]:
fields = self.SkuOverrideValues[sku][defaultstore]
diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/Source/Python/Workspace/DscBuildData.py
index b485c75a84..37fb8d56b6 100644
--- a/BaseTools/Source/Python/Workspace/DscBuildData.py
+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
@@ -31,11 +31,11 @@ from .MetaDataTable import *
from .MetaFileTable import *
from .MetaFileParser import *
from .WorkspaceCommon import GetDeclaredPcd
from Common.Misc import AnalyzeDscPcd
-from Common.Misc import ProcessDuplicatedInf
+from Common.Misc import ProcessDuplicatedInf,RemoveCComments
import re
from Common.Parsing import IsValidWord
from Common.VariableAttributes import VariableAttributes
import Common.GlobalData as GlobalData
import subprocess
@@ -1573,11 +1573,11 @@ class DscBuildData(PlatformBuildClassObject):
mindefaultstorename = DefaultStoreObj.GetMin(PcdDefaultStoreSet)
str_pcd_obj.SkuInfoList[self.SkuIdMgr.SystemSkuId].HiiDefaultValue = str_pcd_obj.SkuInfoList[self.SkuIdMgr.SystemSkuId].DefaultStoreDict[mindefaultstorename]
for str_pcd_obj in S_pcd_set.values():
- str_pcd_obj.MaxDatumSize = self.GetStructurePcdMaxSize(str_pcd_obj)
+ str_pcd_obj.MaxDatumSize = DscBuildData.GetStructurePcdMaxSize(str_pcd_obj)
Pcds[str_pcd_obj.TokenCName, str_pcd_obj.TokenSpaceGuidCName] = str_pcd_obj
Pcds[str_pcd_obj.TokenCName, str_pcd_obj.TokenSpaceGuidCName].CustomAttribute['IsStru']=True
for pcdkey in Pcds:
pcd = Pcds[pcdkey]
@@ -1687,13 +1687,14 @@ class DscBuildData(PlatformBuildClassObject):
if SkuName not in Pcds[PcdCName, TokenSpaceGuid].DscRawValue:
Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName] = {}
Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName][TAB_DEFAULT_STORES_DEFAULT] = Settings[0]
return Pcds
- def GetStructurePcdMaxSize(self, str_pcd):
+ @staticmethod
+ def GetStructurePcdMaxSize(str_pcd):
pcd_default_value = str_pcd.DefaultValue
- sku_values = [skuobj.HiiDefaultValue if str_pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]] else skuobj.DefaultValue for skuobj in str_pcd.SkuInfoList.values()]
+ sku_values = [skuobj.HiiDefaultValue if str_pcd.Type in [DscBuildData._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], DscBuildData._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]] else skuobj.DefaultValue for skuobj in str_pcd.SkuInfoList.values()]
sku_values.append(pcd_default_value)
def get_length(value):
Value = value.strip()
if len(value) > 1:
@@ -1701,11 +1702,14 @@ class DscBuildData(PlatformBuildClassObject):
return 16
if Value.startswith('L"') and Value.endswith('"'):
return len(Value[2:-1])
if Value[0] == '"' and Value[-1] == '"':
return len(Value) - 2
- if Value[0] == '{' and Value[-1] == '}':
+ if Value.strip().startswith("{CODE("):
+ tmpValue = RemoveCComments(Value)
+ return len(tmpValue.split(","))
+ if (Value[0] == '{' and Value[-1] == '}'):
return len(Value.split(","))
if Value.startswith("L'") and Value.endswith("'") and len(list(Value[2:-1])) > 1:
return len(list(Value[2:-1]))
if Value[0] == "'" and Value[-1] == "'" and len(list(Value[1:-1])) > 1:
return len(Value) - 2
@@ -1864,11 +1868,12 @@ class DscBuildData(PlatformBuildClassObject):
for dem in Pcd.Capacity:
if dem == '0':
r_datatype.append("[1]")
else:
r_datatype.append("[" + dem + "]")
- CApp = ' Size = sizeof(%s);\n' % ("".join(r_datatype))
+ sizebasevalue = "(%s / sizeof(%s) + 1)" % ((DscBuildData.GetStructurePcdMaxSize(Pcd), Pcd.BaseDatumType))
+ CApp = ' Size = sizeof(%s) > %s?sizeof(%s) : %s ;\n' % ( ("".join(r_datatype), sizebasevalue, "".join(r_datatype), sizebasevalue) )
else:
CApp = ' Size = sizeof(%s);\n' % (Pcd.DatumType)
CApp = CApp + ' Cal_%s_%s_Size(&Size);\n' % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName)
return CApp
@@ -2246,11 +2251,11 @@ class DscBuildData(PlatformBuildClassObject):
CApp = CApp + '\n'
PcdDefaultValue = StringToArray(Pcd.DefaultValueFromDec.strip())
- InitByteValue += '%s.%s.%s.%s|%s|%s\n' % (SkuName, DefaultStoreName, Pcd.TokenSpaceGuidCName, Pcd.TokenCName, Pcd.BaseDatumType, PcdDefaultValue)
+ InitByteValue += '%s.%s.%s.%s|%s|%s\n' % (SkuName, DefaultStoreName, Pcd.TokenSpaceGuidCName, Pcd.TokenCName, Pcd.DatumType, PcdDefaultValue)
#
# Get current PCD value and size
#
CApp = CApp + ' OriginalPcd = PcdGetPtr (%s, %s, %s, %s, &OriginalSize);\n' % (SkuName, DefaultStoreName, Pcd.TokenSpaceGuidCName, Pcd.TokenCName)
@@ -2316,33 +2321,43 @@ class DscBuildData(PlatformBuildClassObject):
return CApp
if not Pcd.IsArray():
return CApp
Demesion = ""
for d in Pcd.Capacity:
- if d == "0":
- Demesion += "[]"
- else:
- Demesion += "["+d+"]"
+ Demesion += "[]"
Value = Pcd.DefaultValueFromDec
if "{CODE(" in Pcd.DefaultValueFromDec:
realvalue = Pcd.DefaultValueFromDec.strip()[6:-2] # "{CODE(").rstrip(")}"
- CApp += "static %s %s_%s_INIT_Value%s = %s;\n" % (Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Demesion,realvalue)
+ else:
+ realvalue = Pcd.DefaultValueFromDec.strip()
+ CApp += "static %s %s_%s_INIT_Value%s = %s;\n" % (Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Demesion,realvalue)
- for skuname in Pcd.SkuInfoList:
- skuinfo = Pcd.SkuInfoList[skuname]
- if skuinfo.VariableName:
- for defaultstore in skuinfo.DefaultStoreDict:
- Value = skuinfo[defaultstore]
+ if Pcd.Type in PCD_DYNAMIC_TYPE_SET | PCD_DYNAMIC_EX_TYPE_SET:
+ for skuname in Pcd.SkuInfoList:
+ skuinfo = Pcd.SkuInfoList[skuname]
+ if skuinfo.VariableName:
+ for defaultstore in skuinfo.DefaultStoreDict:
+ Value = skuinfo[defaultstore]
+ if "{CODE(" in Value:
+ realvalue = Value.strip()[6:-2] # "{CODE(").rstrip(")}"
+ else:
+ realvalue = Value.strip()
+ CApp += "static %s %s_%s_%s_%s_Value%s = %s;\n" % (Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore,Demesion,realvalue)
+ else:
+ Value = skuinfo.DefaultValue
if "{CODE(" in Value:
realvalue = Value.strip()[6:-2] # "{CODE(").rstrip(")}"
- CApp += "static %s %s_%s_%s_%s_Value%s = %s;\n" % (Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore,Demesion,realvalue)
- else:
- Value = skuinfo.DefaultValue
- if "{CODE(" in Value:
- realvalue = Value.strip()[6:-2] # "{CODE(").rstrip(")}"
+ else:
+ realvalue = Value.strip()
CApp += "static %s %s_%s_%s_%s_Value%s = %s;\n" % (Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_DEFAULT_STORES_DEFAULT,Demesion,realvalue)
+ else:
+ if "{CODE(" in Pcd.DefaultValue:
+ realvalue = Pcd.DefaultValue.strip()[6:-2] # "{CODE(").rstrip(")}"
+ else:
+ realvalue = Pcd.DefaultValue.strip()
+ CApp += "static %s %s_%s_DEFAULT_STANDARD_Value%s = %s;\n" % (Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Demesion,realvalue)
return CApp
def SkuOverrideValuesEmpty(self,OverrideValues):
if not OverrideValues:
return True
for key in OverrideValues:
--
2.19.1.windows.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Patch] BaseTools: Fix PcdArray issue
2018-12-14 9:55 [Patch] BaseTools: Fix PcdArray issue BobCF
@ 2018-12-14 11:21 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 2+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-12-14 11:21 UTC (permalink / raw)
To: BobCF, edk2-devel; +Cc: Liming Gao
Hi Bob,
On 12/14/18 10:55 AM, BobCF wrote:
> https://bugzilla.tianocore.org/show_bug.cgi?id=1390
> 1. support hex number for array index
> 2. support Non-Dynamic Pcd for array data type
> 3. support {} and {CODE()} for array data type
>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Bob Feng <bob.c.feng@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> ---
> BaseTools/Source/Python/Common/Misc.py | 6 ++
> .../Python/Workspace/BuildClassObject.py | 3 +-
> .../Source/Python/Workspace/DscBuildData.py | 59 ++++++++++++-------
> 3 files changed, 45 insertions(+), 23 deletions(-)
>
> diff --git a/BaseTools/Source/Python/Common/Misc.py b/BaseTools/Source/Python/Common/Misc.py
> index b063f064fb..ea09f85e70 100644
> --- a/BaseTools/Source/Python/Common/Misc.py
> +++ b/BaseTools/Source/Python/Common/Misc.py
> @@ -2144,10 +2144,16 @@ def CopyDict(ori_dict):
> if isinstance(ori_dict[key],(dict,OrderedDict)):
> new_dict[key] = CopyDict(ori_dict[key])
> else:
> new_dict[key] = ori_dict[key]
> return new_dict
> +
> +#
> +# Remove the c/c++ comments: // and /* */
> +#
> +def RemoveCComments(ctext):
> + return re.sub('//.*?\n|/\*.*?\*/', '\n', ctext, flags=re.S)
What about multi-line comments?
> ##
> #
> # This acts like the main() function for the script, unless it is 'import'ed into another
> # script.
> #
> diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py b/BaseTools/Source/Python/Workspace/BuildClassObject.py
> index 008eee1a16..e9a1195fd2 100644
> --- a/BaseTools/Source/Python/Workspace/BuildClassObject.py
> +++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py
> @@ -17,11 +17,11 @@ import collections
> import re
> from collections import OrderedDict
> from Common.Misc import CopyDict
> import copy
> StructPattern = re.compile(r'[_a-zA-Z][0-9A-Za-z_\[\]]*$')
> -ArrayIndex = re.compile("\[\s*\d{0,1}\s*\]")
> +ArrayIndex = re.compile("\[\s*[0-9a-fA-FxX]*\s*\]")
These regex changes seems easily unit-testable, is it possible to add
some tests? In particular the RemoveCComments() seems fragile.
> ## PcdClassObject
> #
> # This Class is used for PcdObject
> #
> # @param object: Inherited from object class
> @@ -82,10 +82,11 @@ class PcdClassObject(object):
> dimension = ArrayIndex.findall(self._DatumType)
> for item in dimension:
> maxsize = item.lstrip("[").rstrip("]").strip()
> if not maxsize:
> maxsize = "-1"
> + maxsize = str(int(maxsize,16)) if maxsize.startswith(("0x","0X")) else maxsize
> self._Capacity.append(maxsize)
> if hasattr(self, "SkuOverrideValues"):
> for sku in self.SkuOverrideValues:
> for defaultstore in self.SkuOverrideValues[sku]:
> fields = self.SkuOverrideValues[sku][defaultstore]
> diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/Source/Python/Workspace/DscBuildData.py
> index b485c75a84..37fb8d56b6 100644
> --- a/BaseTools/Source/Python/Workspace/DscBuildData.py
> +++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
> @@ -31,11 +31,11 @@ from .MetaDataTable import *
> from .MetaFileTable import *
> from .MetaFileParser import *
>
> from .WorkspaceCommon import GetDeclaredPcd
> from Common.Misc import AnalyzeDscPcd
> -from Common.Misc import ProcessDuplicatedInf
> +from Common.Misc import ProcessDuplicatedInf,RemoveCComments
> import re
> from Common.Parsing import IsValidWord
> from Common.VariableAttributes import VariableAttributes
> import Common.GlobalData as GlobalData
> import subprocess
> @@ -1573,11 +1573,11 @@ class DscBuildData(PlatformBuildClassObject):
> mindefaultstorename = DefaultStoreObj.GetMin(PcdDefaultStoreSet)
> str_pcd_obj.SkuInfoList[self.SkuIdMgr.SystemSkuId].HiiDefaultValue = str_pcd_obj.SkuInfoList[self.SkuIdMgr.SystemSkuId].DefaultStoreDict[mindefaultstorename]
>
> for str_pcd_obj in S_pcd_set.values():
>
> - str_pcd_obj.MaxDatumSize = self.GetStructurePcdMaxSize(str_pcd_obj)
> + str_pcd_obj.MaxDatumSize = DscBuildData.GetStructurePcdMaxSize(str_pcd_obj)
This static change isn't described in the commit, if you think this
isn't worth a separate commit, can you add a note about it?
> Pcds[str_pcd_obj.TokenCName, str_pcd_obj.TokenSpaceGuidCName] = str_pcd_obj
> Pcds[str_pcd_obj.TokenCName, str_pcd_obj.TokenSpaceGuidCName].CustomAttribute['IsStru']=True
>
> for pcdkey in Pcds:
> pcd = Pcds[pcdkey]
> @@ -1687,13 +1687,14 @@ class DscBuildData(PlatformBuildClassObject):
> if SkuName not in Pcds[PcdCName, TokenSpaceGuid].DscRawValue:
> Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName] = {}
> Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName][TAB_DEFAULT_STORES_DEFAULT] = Settings[0]
> return Pcds
>
> - def GetStructurePcdMaxSize(self, str_pcd):
> + @staticmethod
> + def GetStructurePcdMaxSize(str_pcd):
> pcd_default_value = str_pcd.DefaultValue
> - sku_values = [skuobj.HiiDefaultValue if str_pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]] else skuobj.DefaultValue for skuobj in str_pcd.SkuInfoList.values()]
> + sku_values = [skuobj.HiiDefaultValue if str_pcd.Type in [DscBuildData._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], DscBuildData._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]] else skuobj.DefaultValue for skuobj in str_pcd.SkuInfoList.values()]
> sku_values.append(pcd_default_value)
>
> def get_length(value):
> Value = value.strip()
> if len(value) > 1:
> @@ -1701,11 +1702,14 @@ class DscBuildData(PlatformBuildClassObject):
> return 16
> if Value.startswith('L"') and Value.endswith('"'):
> return len(Value[2:-1])
> if Value[0] == '"' and Value[-1] == '"':
> return len(Value) - 2
> - if Value[0] == '{' and Value[-1] == '}':
> + if Value.strip().startswith("{CODE("):
> + tmpValue = RemoveCComments(Value)
> + return len(tmpValue.split(","))
> + if (Value[0] == '{' and Value[-1] == '}'):
OK.
> return len(Value.split(","))
> if Value.startswith("L'") and Value.endswith("'") and len(list(Value[2:-1])) > 1:
> return len(list(Value[2:-1]))
> if Value[0] == "'" and Value[-1] == "'" and len(list(Value[1:-1])) > 1:
> return len(Value) - 2
> @@ -1864,11 +1868,12 @@ class DscBuildData(PlatformBuildClassObject):
> for dem in Pcd.Capacity:
> if dem == '0':
> r_datatype.append("[1]")
> else:
> r_datatype.append("[" + dem + "]")
> - CApp = ' Size = sizeof(%s);\n' % ("".join(r_datatype))
> + sizebasevalue = "(%s / sizeof(%s) + 1)" % ((DscBuildData.GetStructurePcdMaxSize(Pcd), Pcd.BaseDatumType))
> + CApp = ' Size = sizeof(%s) > %s?sizeof(%s) : %s ;\n' % ( ("".join(r_datatype), sizebasevalue, "".join(r_datatype), sizebasevalue) )
> else:
> CApp = ' Size = sizeof(%s);\n' % (Pcd.DatumType)
> CApp = CApp + ' Cal_%s_%s_Size(&Size);\n' % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName)
> return CApp
>
> @@ -2246,11 +2251,11 @@ class DscBuildData(PlatformBuildClassObject):
>
> CApp = CApp + '\n'
>
> PcdDefaultValue = StringToArray(Pcd.DefaultValueFromDec.strip())
>
> - InitByteValue += '%s.%s.%s.%s|%s|%s\n' % (SkuName, DefaultStoreName, Pcd.TokenSpaceGuidCName, Pcd.TokenCName, Pcd.BaseDatumType, PcdDefaultValue)
> + InitByteValue += '%s.%s.%s.%s|%s|%s\n' % (SkuName, DefaultStoreName, Pcd.TokenSpaceGuidCName, Pcd.TokenCName, Pcd.DatumType, PcdDefaultValue)
>
> #
> # Get current PCD value and size
> #
> CApp = CApp + ' OriginalPcd = PcdGetPtr (%s, %s, %s, %s, &OriginalSize);\n' % (SkuName, DefaultStoreName, Pcd.TokenSpaceGuidCName, Pcd.TokenCName)
> @@ -2316,33 +2321,43 @@ class DscBuildData(PlatformBuildClassObject):
> return CApp
> if not Pcd.IsArray():
> return CApp
> Demesion = ""
> for d in Pcd.Capacity:
> - if d == "0":
> - Demesion += "[]"
> - else:
> - Demesion += "["+d+"]"
> + Demesion += "[]"
>
> Value = Pcd.DefaultValueFromDec
> if "{CODE(" in Pcd.DefaultValueFromDec:
> realvalue = Pcd.DefaultValueFromDec.strip()[6:-2] # "{CODE(").rstrip(")}"
> - CApp += "static %s %s_%s_INIT_Value%s = %s;\n" % (Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Demesion,realvalue)
> + else:
> + realvalue = Pcd.DefaultValueFromDec.strip()
> + CApp += "static %s %s_%s_INIT_Value%s = %s;\n" % (Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Demesion,realvalue)
>
> - for skuname in Pcd.SkuInfoList:
> - skuinfo = Pcd.SkuInfoList[skuname]
> - if skuinfo.VariableName:
> - for defaultstore in skuinfo.DefaultStoreDict:
> - Value = skuinfo[defaultstore]
> + if Pcd.Type in PCD_DYNAMIC_TYPE_SET | PCD_DYNAMIC_EX_TYPE_SET:
> + for skuname in Pcd.SkuInfoList:
> + skuinfo = Pcd.SkuInfoList[skuname]
> + if skuinfo.VariableName:
> + for defaultstore in skuinfo.DefaultStoreDict:
> + Value = skuinfo[defaultstore]
> + if "{CODE(" in Value:
> + realvalue = Value.strip()[6:-2] # "{CODE(").rstrip(")}"
> + else:
> + realvalue = Value.strip()
> + CApp += "static %s %s_%s_%s_%s_Value%s = %s;\n" % (Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore,Demesion,realvalue)
> + else:
> + Value = skuinfo.DefaultValue
> if "{CODE(" in Value:
> realvalue = Value.strip()[6:-2] # "{CODE(").rstrip(")}"
> - CApp += "static %s %s_%s_%s_%s_Value%s = %s;\n" % (Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore,Demesion,realvalue)
> - else:
> - Value = skuinfo.DefaultValue
> - if "{CODE(" in Value:
> - realvalue = Value.strip()[6:-2] # "{CODE(").rstrip(")}"
> + else:
> + realvalue = Value.strip()
> CApp += "static %s %s_%s_%s_%s_Value%s = %s;\n" % (Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_DEFAULT_STORES_DEFAULT,Demesion,realvalue)
> + else:
> + if "{CODE(" in Pcd.DefaultValue:
> + realvalue = Pcd.DefaultValue.strip()[6:-2] # "{CODE(").rstrip(")}"
> + else:
> + realvalue = Pcd.DefaultValue.strip()
> + CApp += "static %s %s_%s_DEFAULT_STANDARD_Value%s = %s;\n" % (Pcd.BaseDatumType,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Demesion,realvalue)
> return CApp
> def SkuOverrideValuesEmpty(self,OverrideValues):
> if not OverrideValues:
> return True
> for key in OverrideValues:
>
Rest looks OK.
Regards,
Phil.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-12-14 11:21 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-12-14 9:55 [Patch] BaseTools: Fix PcdArray issue BobCF
2018-12-14 11:21 ` Philippe Mathieu-Daudé
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox