- raise BadExpression(Value)\r
- else:\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
- raise BadExpression('Type %s PCD Value Size is Larger than 1 byte' % self.PcdType)\r
- if self.PcdType == '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
- raise BadExpression('Type %s PCD Value Size is Larger than 4 byte' % self.PcdType)\r
- if self.PcdType == 'UINT64' and Size > 8:\r
- raise BadExpression('Type %s PCD Value Size is Larger than 8 byte' % self.PcdType)\r
- else:\r
- try:\r
- TmpValue = long(PcdValue)\r
- TmpList = []\r
- if TmpValue.bit_length() == 0:\r
- PcdValue = '{0x00}'\r
- else:\r
- for I in range((TmpValue.bit_length() + 7) / 8):\r
- TmpList.append('0x%02x' % ((TmpValue >> I * 8) & 0xff))\r
- PcdValue = '{' + ', '.join(TmpList) + '}'\r
- except:\r
- if PcdValue.strip().startswith('{'):\r
- PcdValueList = SplitPcdValueString(PcdValue.strip()[1:-1])\r
- LabelDict = {}\r
- NewPcdValueList = []\r
- ReLabel = re.compile('LABEL\((\w+)\)')\r
- ReOffset = re.compile('OFFSET_OF\((\w+)\)')\r
- LabelOffset = 0\r
- for Index, Item in enumerate(PcdValueList):\r
- # compute byte offset of every LABEL\r
- LabelList = ReLabel.findall(Item)\r
- Item = ReLabel.sub('', Item)\r
- Item = Item.strip()\r
- if LabelList:\r
- for Label in LabelList:\r
- if not IsValidCString(Label):\r
- raise BadExpression('%s is not a valid c variable name' % Label)\r
- if Label not in LabelDict.keys():\r
- LabelDict[Label] = str(LabelOffset)\r
- if Item.startswith('UINT8'):\r
- LabelOffset = LabelOffset + 1\r
- elif Item.startswith('UINT16'):\r
- LabelOffset = LabelOffset + 2\r
- elif Item.startswith('UINT32'):\r
- LabelOffset = LabelOffset + 4\r
- elif Item.startswith('UINT64'):\r
- LabelOffset = LabelOffset + 8\r
- else:\r
- try:\r
- ItemValue, ItemSize = ParseFieldValue(Item)\r
- LabelOffset = LabelOffset + ItemSize\r
- except:\r
+ if PcdValue.strip().startswith('{'):\r
+ PcdValueList = SplitPcdValueString(PcdValue.strip()[1:-1])\r
+ LabelDict = {}\r
+ NewPcdValueList = []\r
+ LabelOffset = 0\r
+ for Item in PcdValueList:\r
+ # compute byte offset of every LABEL\r
+ LabelList = _ReLabel.findall(Item)\r
+ Item = _ReLabel.sub('', Item)\r
+ Item = Item.strip()\r
+ if LabelList:\r
+ for Label in LabelList:\r
+ if not IsValidCName(Label):\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(TAB_UINT8):\r