try:\r
PcdValue = ValueExpression.__call__(self, RealValue, Depth)\r
if self.PcdType == 'VOID*' and (PcdValue.startswith("'") or PcdValue.startswith("L'")):\r
- raise BadExpression\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
PcdValue.startswith('"') or PcdValue.startswith("L'") or PcdValue.startswith('L"') or PcdValue.startswith('{')):\r
raise BadExpression\r
TmpValue = 0\r
Size = 0\r
for Item in PcdValue:\r
+ if Item.startswith('UINT8'):\r
+ ItemSize = 1\r
if Item.startswith('UINT16'):\r
ItemSize = 2\r
elif Item.startswith('UINT32'):\r
TmpValue = (ItemValue << (Size * 8)) | TmpValue\r
Size = Size + ItemSize\r
else:\r
- TmpValue, Size = ParseFieldValue(PcdValue)\r
+ try:\r
+ TmpValue, Size = ParseFieldValue(PcdValue)\r
+ except BadExpression:\r
+ raise BadExpression("Type: %s, Value: %s, format or value error" % (self.PcdType, PcdValue))\r
if type(TmpValue) == type(''):\r
TmpValue = int(TmpValue)\r
else:\r
else:\r
raise BadExpression('%s not defined before use' % Offset)\r
ValueType = ""\r
- if Item.startswith('UINT16'):\r
+ if Item.startswith('UINT8'):\r
ItemSize = 1\r
ValueType = "UINT8"\r
elif Item.startswith('UINT16'):\r
\r
if Size > 0:\r
PcdValue = '{' + ValueStr[:-2] + '}'\r
+ else:\r
+ raise BadExpression("Type: %s, Value: %s, format or value error"%(self.PcdType, PcdValue))\r
+\r
if PcdValue == 'True':\r
PcdValue = '1'\r
if PcdValue == 'False':\r
if Value.startswith("L'") and Value.endswith("'"):\r
# Unicode Character Constant\r
List = list(Value[2:-1])\r
+ if len(List) == 0:\r
+ raise BadExpression('Length %s is %s' % (Value, len(List)))\r
List.reverse()\r
Value = 0\r
for Char in List:\r
if Value.startswith("'") and Value.endswith("'"):\r
# Character constant\r
List = list(Value[1:-1])\r
+ if len(List) == 0:\r
+ raise BadExpression('Length %s is %s' % (Value, len(List)))\r
List.reverse()\r
Value = 0\r
for Char in List:\r