BaseTools: Support nest field name in DSC/DEC

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Feng Bob C <bob.c.feng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Liming Gao
2017-12-19 16:01:38 +08:00
parent 520365decb
commit a09395932d
2 changed files with 16 additions and 13 deletions

View File

@ -1207,18 +1207,19 @@ class DscBuildData(PlatformBuildClassObject):
def get_length(value): def get_length(value):
Value = value.strip() Value = value.strip()
if Value.startswith('GUID') and Value.endswith(')'): if len(value) > 1:
return 16 if Value.startswith('GUID') and Value.endswith(')'):
if Value.startswith('L"') and Value.endswith('"'): return 16
return len(Value[2:-1]) if Value.startswith('L"') and Value.endswith('"'):
if Value[0] == '"' and Value[-1] == '"': return len(Value[2:-1])
return len(Value) - 2 if Value[0] == '"' and Value[-1] == '"':
if Value[0] == '{' and Value[-1] == '}': return len(Value) - 2
return len(Value.split(",")) if Value[0] == '{' and Value[-1] == '}':
if Value.startswith("L'") and Value.endswith("'") and len(list(Value[2:-1])) > 1: return len(Value.split(","))
return len(list(Value[2:-1])) if Value.startswith("L'") and Value.endswith("'") and len(list(Value[2:-1])) > 1:
if Value[0] == "'" and Value[-1] == "'" and len(list(Value[1:-1])) > 1: return len(list(Value[2:-1]))
return len(Value) - 2 if Value[0] == "'" and Value[-1] == "'" and len(list(Value[1:-1])) > 1:
return len(Value) - 2
return len(Value) return len(Value)
return str(max([pcd_size for pcd_size in [get_length(item) for item in sku_values]])) return str(max([pcd_size for pcd_size in [get_length(item) for item in sku_values]]))

View File

@ -1136,6 +1136,8 @@ class DscParser(MetaFileParser):
self._ValueList[0], self._ValueList[1] = PcdNameTockens[0], PcdNameTockens[1] self._ValueList[0], self._ValueList[1] = PcdNameTockens[0], PcdNameTockens[1]
elif len(PcdNameTockens) == 3: elif len(PcdNameTockens) == 3:
self._ValueList[0], self._ValueList[1] = ".".join((PcdNameTockens[0], PcdNameTockens[1])), PcdNameTockens[2] self._ValueList[0], self._ValueList[1] = ".".join((PcdNameTockens[0], PcdNameTockens[1])), PcdNameTockens[2]
elif len(PcdNameTockens) > 3:
self._ValueList[0], self._ValueList[1] = ".".join((PcdNameTockens[0], PcdNameTockens[1])), ".".join(PcdNameTockens[2:])
if len(TokenList) == 2: if len(TokenList) == 2:
self._ValueList[2] = TokenList[1] self._ValueList[2] = TokenList[1]
if self._ValueList[0] == '' or self._ValueList[1] == '': if self._ValueList[0] == '' or self._ValueList[1] == '':
@ -1910,7 +1912,7 @@ class DecParser(MetaFileParser):
if len(PcdNames) == 2: if len(PcdNames) == 2:
self._CurrentStructurePcdName = "" self._CurrentStructurePcdName = ""
else: else:
self._ValueList[1] = PcdNames[2] self._ValueList[1] = TAB_SPLIT.join(PcdNames[2:])
self._ValueList[2] = PcdTockens[1] self._ValueList[2] = PcdTockens[1]
if not self._CurrentStructurePcdName: if not self._CurrentStructurePcdName:
TokenList = GetSplitValueList(self._CurrentLine, TAB_VALUE_SPLIT, 1) TokenList = GetSplitValueList(self._CurrentLine, TAB_VALUE_SPLIT, 1)