## @file\r
# This file is used to create a database used by build tool\r
#\r
-# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2008 - 2019, Intel Corporation. All rights reserved.<BR>\r
# (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
from collections import OrderedDict, defaultdict\r
from .BuildClassObject import ArrayIndex\r
\r
+def _IsFieldValueAnArray (Value):\r
+ Value = Value.strip()\r
+ if Value.startswith(TAB_GUID) and Value.endswith(')'):\r
+ return True\r
+ if Value.startswith('L"') and Value.endswith('"') and len(list(Value[2:-1])) > 1:\r
+ return True\r
+ if Value[0] == '"' and Value[-1] == '"' and len(list(Value[1:-1])) > 1:\r
+ return True\r
+ if Value[0] == '{' and Value[-1] == '}':\r
+ return True\r
+ if Value.startswith("L'") and Value.endswith("'") and len(list(Value[2:-1])) > 1:\r
+ return True\r
+ if Value[0] == "'" and Value[-1] == "'" and len(list(Value[1:-1])) > 1:\r
+ return True\r
+ return False\r
+\r
PcdValueInitName = 'PcdValueInit'\r
\r
PcdMainCHeader = '''\r
IsArray = False\r
TokenCName += '.' + FieldName\r
if PcdValue.startswith('H'):\r
- if FieldName and IsFieldValueAnArray(PcdValue[1:]):\r
+ if FieldName and _IsFieldValueAnArray(PcdValue[1:]):\r
PcdDatumType = TAB_VOID\r
IsArray = True\r
if FieldName and not IsArray:\r
EdkLogger.error('Parser', FORMAT_INVALID, 'PCD [%s.%s] Value "%s", %s' %\r
(TokenSpaceGuidCName, TokenCName, PcdValue, Value))\r
elif PcdValue.startswith("L'") or PcdValue.startswith("'"):\r
- if FieldName and IsFieldValueAnArray(PcdValue):\r
+ if FieldName and _IsFieldValueAnArray(PcdValue):\r
PcdDatumType = TAB_VOID\r
IsArray = True\r
if FieldName and not IsArray:\r
(TokenSpaceGuidCName, TokenCName, PcdValue, Value))\r
elif PcdValue.startswith('L'):\r
PcdValue = 'L"' + PcdValue[1:] + '"'\r
- if FieldName and IsFieldValueAnArray(PcdValue):\r
+ if FieldName and _IsFieldValueAnArray(PcdValue):\r
PcdDatumType = TAB_VOID\r
IsArray = True\r
if FieldName and not IsArray:\r
Num = int(PcdValue, Base)\r
except:\r
PcdValue = '"' + PcdValue + '"'\r
- if IsFieldValueAnArray(PcdValue):\r
+ if _IsFieldValueAnArray(PcdValue):\r
PcdDatumType = TAB_VOID\r
IsArray = True\r
if not IsArray:\r
continue\r
for FieldName in FieldList:\r
FieldName = "." + FieldName\r
- IsArray = IsFieldValueAnArray(FieldList[FieldName.strip(".")][0])\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], TAB_VOID, self._GuidDict)(True)\r
continue\r
for FieldName in FieldList:\r
FieldName = "." + FieldName\r
- IsArray = IsFieldValueAnArray(FieldList[FieldName.strip(".")][0])\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], TAB_VOID, self._GuidDict)(True)\r
CApp = CApp + "// From fdf \n"\r
for FieldName in Pcd.PcdFieldValueFromFdf:\r
FieldName = "." + FieldName\r
- IsArray = IsFieldValueAnArray(Pcd.PcdFieldValueFromFdf[FieldName.strip(".")][0])\r
+ IsArray = _IsFieldValueAnArray(Pcd.PcdFieldValueFromFdf[FieldName.strip(".")][0])\r
if IsArray and not (Pcd.PcdFieldValueFromFdf[FieldName.strip(".")][0].startswith('{GUID') and Pcd.PcdFieldValueFromFdf[FieldName.strip(".")][0].endswith('}')):\r
try:\r
Value = ValueExpressionEx(Pcd.PcdFieldValueFromFdf[FieldName.strip(".")][0], TAB_VOID, self._GuidDict)(True)\r
CApp = CApp + "// From Command Line \n"\r
for FieldName in Pcd.PcdFieldValueFromComm:\r
FieldName = "." + FieldName\r
- IsArray = IsFieldValueAnArray(Pcd.PcdFieldValueFromComm[FieldName.strip(".")][0])\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], TAB_VOID, self._GuidDict)(True)\r
CApp = CApp + ' UINT32 FieldSize;\n'\r
CApp = CApp + ' CHAR8 *Value;\n'\r
DefaultValueFromDec = Pcd.DefaultValueFromDec\r
- IsArray = IsFieldValueAnArray(Pcd.DefaultValueFromDec)\r
+ IsArray = _IsFieldValueAnArray(Pcd.DefaultValueFromDec)\r
if IsArray:\r
try:\r
DefaultValueFromDec = ValueExpressionEx(Pcd.DefaultValueFromDec, TAB_VOID)(True)\r
if not FieldList:\r
continue\r
for FieldName in FieldList:\r
- IsArray = IsFieldValueAnArray(FieldList[FieldName][0])\r
+ IsArray = _IsFieldValueAnArray(FieldList[FieldName][0])\r
if IsArray:\r
try:\r
FieldList[FieldName][0] = ValueExpressionEx(FieldList[FieldName][0], TAB_VOID, self._GuidDict)(True)\r
pcddefaultvalue = self.GetPcdDscRawDefaultValue(Pcd, SkuName, DefaultStoreName)\r
if pcddefaultvalue:\r
FieldList = pcddefaultvalue\r
- IsArray = IsFieldValueAnArray(FieldList)\r
+ IsArray = _IsFieldValueAnArray(FieldList)\r
if IsArray:\r
if "{CODE(" not in FieldList:\r
try:\r
if (SkuName, DefaultStoreName) == (TAB_DEFAULT, TAB_DEFAULT_STORES_DEFAULT) or (( (SkuName, '') not in Pcd.ValueChain) and ( (SkuName, DefaultStoreName) not in Pcd.ValueChain )):\r
for FieldName in FieldList:\r
indicator = self.GetIndicator(index, FieldName,Pcd)\r
- IsArray = IsFieldValueAnArray(FieldList[FieldName][0])\r
+ IsArray = _IsFieldValueAnArray(FieldList[FieldName][0])\r
if IsArray:\r
try:\r
FieldList[FieldName][0] = ValueExpressionEx(FieldList[FieldName][0], TAB_VOID, self._GuidDict)(True)\r
if not FieldList:\r
continue\r
if pcddefaultvalue and FieldList == pcddefaultvalue:\r
- IsArray = IsFieldValueAnArray(FieldList)\r
+ IsArray = _IsFieldValueAnArray(FieldList)\r
if IsArray:\r
try:\r
FieldList = ValueExpressionEx(FieldList, TAB_VOID)(True)\r
CApp = CApp + ' memcpy (Pcd, Value, %d);\n' % (ValueSize)\r
continue\r
for FieldName in FieldList:\r
- IsArray = IsFieldValueAnArray(FieldList[FieldName][0])\r
+ IsArray = _IsFieldValueAnArray(FieldList[FieldName][0])\r
if IsArray:\r
try:\r
FieldList[FieldName][0] = ValueExpressionEx(FieldList[FieldName][0], TAB_VOID, self._GuidDict)(True)\r
if not FieldList:\r
continue\r
if pcddefaultvalue and FieldList == pcddefaultvalue:\r
- IsArray = IsFieldValueAnArray(FieldList)\r
+ IsArray = _IsFieldValueAnArray(FieldList)\r
if IsArray:\r
try:\r
FieldList = ValueExpressionEx(FieldList, TAB_VOID)(True)\r
CApp = CApp + ' memcpy (Pcd, Value, %d);\n' % (ValueSize)\r
continue\r
for FieldName in FieldList:\r
- IsArray = IsFieldValueAnArray(FieldList[FieldName][0])\r
+ IsArray = _IsFieldValueAnArray(FieldList[FieldName][0])\r
if IsArray:\r
try:\r
FieldList[FieldName][0] = ValueExpressionEx(FieldList[FieldName][0], TAB_VOID, self._GuidDict)(True)\r