]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Common/Expression.py
BaseTools: use in to compare single chars
[mirror_edk2.git] / BaseTools / Source / Python / Common / Expression.py
index 09240de6978180050be22a554293ce86b38f9593..320f0015009b3c28e16562cda31116b179597e8d 100644 (file)
@@ -835,7 +835,7 @@ class ValueExpressionEx(ValueExpression):
                         elif Item.startswith('UINT64'):\r
                             ItemSize = 8\r
                             ValueType = 'UINT64'\r
-                        elif Item.startswith('"') or Item.startswith("'") or Item.startswith('L'):\r
+                        elif Item[0] in ['"',"'",'L']:\r
                             ItemSize = 0\r
                             ValueType = 'VOID*'\r
                         else:\r
@@ -845,7 +845,7 @@ class ValueExpressionEx(ValueExpression):
 \r
                         if ItemSize == 0:\r
                             try:\r
-                                tmpValue = int(Item, 16) if Item.upper().startswith('0X') else int(Item, 0)\r
+                                tmpValue = int(Item, 0)\r
                                 if tmpValue > 255:\r
                                     raise BadExpression("Byte  array number %s should less than 0xFF." % Item)\r
                             except BadExpression, Value:\r
@@ -857,7 +857,7 @@ class ValueExpressionEx(ValueExpression):
                             ItemValue = ParseFieldValue(Item)[0]\r
 \r
                         if type(ItemValue) == type(''):\r
-                            ItemValue = int(ItemValue, 16) if ItemValue.startswith('0x') else int(ItemValue)\r
+                            ItemValue = int(ItemValue, 0)\r
 \r
                         TmpValue = (ItemValue << (Size * 8)) | TmpValue\r
                         Size = Size + ItemSize\r
@@ -936,12 +936,13 @@ class ValueExpressionEx(ValueExpression):
                                 OffsetList = _ReOffset.findall(Item)\r
                             except:\r
                                 pass\r
+                            # replace each offset, except errors\r
                             for Offset in OffsetList:\r
-                                if Offset in LabelDict.keys():\r
-                                    Re = re.compile('OFFSET_OF\(%s\)' % Offset)\r
-                                    Item = Re.sub(LabelDict[Offset], Item)\r
-                                else:\r
+                                try:\r
+                                    Item = Item.replace('OFFSET_OF({})'.format(Offset),LabelDict[Offset])\r
+                                except:\r
                                     raise BadExpression('%s not defined' % Offset)\r
+\r
                             NewPcdValueList.append(Item)\r
 \r
                         AllPcdValueList = []\r