from CommonDataClass.Exceptions import WrnExpression\r
import uuid\r
from Common.Expression import PcdPattern\r
+from Common.DataType import *\r
\r
ERR_STRING_EXPR = 'This operator cannot be used in string expression: [%s].'\r
ERR_SNYTAX = 'Syntax error, the rest of expression cannot be evaluated: [%s].'\r
ERR_EMPTY_EXPR = 'Empty expression is not allowed.'\r
ERR_IN_OPERAND = 'Macro after IN operator can only be: $(FAMILY), $(ARCH), $(TOOL_CHAIN_TAG) and $(TARGET).'\r
\r
-def MaxOfType(DataType):\r
- if DataType == 'UINT8':\r
- return int('0xFF', 16)\r
- if DataType == 'UINT16':\r
- return int('0xFFFF', 16)\r
- if DataType == 'UINT32':\r
- return int('0xFFFFFFFF', 16)\r
- if DataType == 'UINT64':\r
- return int('0xFFFFFFFFFFFFFFFF', 16)\r
-\r
class RangeObject(object):\r
def __init__(self, start, end, empty = False):\r
\r
rangeId = str(uuid.uuid1())\r
rangeContainer = RangeContainer()\r
rangeContainer.push(RangeObject(0, int(Operand) - 1))\r
- rangeContainer.push(RangeObject(int(Operand) + 1, MaxOfType(DataType)))\r
+ rangeContainer.push(RangeObject(int(Operand) + 1, MAX_VAL_TYPE[DataType]))\r
SymbolTable[rangeId] = rangeContainer\r
return rangeId\r
\r
raise BadExpression(ERR_SNYTAX % Expr)\r
rangeId1 = str(uuid.uuid1())\r
rangeContainer = RangeContainer()\r
- rangeContainer.push(RangeObject(int(Operand), MaxOfType(DataType)))\r
+ rangeContainer.push(RangeObject(int(Operand), MAX_VAL_TYPE[DataType]))\r
SymbolTable[rangeId1] = rangeContainer\r
return rangeId1 \r
\r
raise BadExpression(ERR_SNYTAX % Expr)\r
rangeId1 = str(uuid.uuid1())\r
rangeContainer = RangeContainer()\r
- rangeContainer.push(RangeObject(int(Operand) + 1, MaxOfType(DataType)))\r
+ rangeContainer.push(RangeObject(int(Operand) + 1, MAX_VAL_TYPE[DataType]))\r
SymbolTable[rangeId1] = rangeContainer\r
return rangeId1 \r
\r
rangeContainer = RangeContainer()\r
rangeid = str(uuid.uuid1())\r
if rangeobj.empty:\r
- rangeContainer.push(RangeObject(0, MaxOfType(self.PcdDataType)))\r
+ rangeContainer.push(RangeObject(0, MAX_VAL_TYPE[self.PcdDataType]))\r
else:\r
if rangeobj.start > 0:\r
rangeContainer.push(RangeObject(0, rangeobj.start - 1))\r
- if rangeobj.end < MaxOfType(self.PcdDataType):\r
- rangeContainer.push(RangeObject(rangeobj.end + 1, MaxOfType(self.PcdDataType)))\r
+ if rangeobj.end < MAX_VAL_TYPE[self.PcdDataType]:\r
+ rangeContainer.push(RangeObject(rangeobj.end + 1, MAX_VAL_TYPE[self.PcdDataType]))\r
self.operanddict[rangeid] = rangeContainer\r
rangeids.append(rangeid)\r
\r
if len(rangeids) == 0:\r
rangeContainer = RangeContainer()\r
- rangeContainer.push(RangeObject(0, MaxOfType(self.PcdDataType)))\r
+ rangeContainer.push(RangeObject(0, MAX_VAL_TYPE[self.PcdDataType]))\r
rangeid = str(uuid.uuid1())\r
self.operanddict[rangeid] = rangeContainer\r
return rangeid\r