BaseTools: merge towards minimum PCD MAX <something> methods
we have 5 different max val or max byte for PCDs. refactor and remove 2 methods. we need 3, as one computes for VOID* PCDs. Cc: Bob Feng <bob.feng@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Yonghong Zhu <yonghong.zhu@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jaben Carsey <jaben.carsey@intel.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
This commit is contained in:
committed by
Yonghong Zhu
parent
9eb87141ec
commit
25598f8bdb
@ -17,6 +17,7 @@ from CommonDataClass.Exceptions import BadExpression
|
||||
from CommonDataClass.Exceptions import WrnExpression
|
||||
import uuid
|
||||
from Common.Expression import PcdPattern
|
||||
from Common.DataType import *
|
||||
|
||||
ERR_STRING_EXPR = 'This operator cannot be used in string expression: [%s].'
|
||||
ERR_SNYTAX = 'Syntax error, the rest of expression cannot be evaluated: [%s].'
|
||||
@ -39,16 +40,6 @@ ERR_ARRAY_ELE = 'This must be HEX value for NList or Array: [%s].'
|
||||
ERR_EMPTY_EXPR = 'Empty expression is not allowed.'
|
||||
ERR_IN_OPERAND = 'Macro after IN operator can only be: $(FAMILY), $(ARCH), $(TOOL_CHAIN_TAG) and $(TARGET).'
|
||||
|
||||
def MaxOfType(DataType):
|
||||
if DataType == 'UINT8':
|
||||
return int('0xFF', 16)
|
||||
if DataType == 'UINT16':
|
||||
return int('0xFFFF', 16)
|
||||
if DataType == 'UINT32':
|
||||
return int('0xFFFFFFFF', 16)
|
||||
if DataType == 'UINT64':
|
||||
return int('0xFFFFFFFFFFFFFFFF', 16)
|
||||
|
||||
class RangeObject(object):
|
||||
def __init__(self, start, end, empty = False):
|
||||
|
||||
@ -111,7 +102,7 @@ class XOROperatorObject(object):
|
||||
rangeId = str(uuid.uuid1())
|
||||
rangeContainer = RangeContainer()
|
||||
rangeContainer.push(RangeObject(0, int(Operand) - 1))
|
||||
rangeContainer.push(RangeObject(int(Operand) + 1, MaxOfType(DataType)))
|
||||
rangeContainer.push(RangeObject(int(Operand) + 1, MAX_VAL_TYPE[DataType]))
|
||||
SymbolTable[rangeId] = rangeContainer
|
||||
return rangeId
|
||||
|
||||
@ -149,7 +140,7 @@ class GEOperatorObject(object):
|
||||
raise BadExpression(ERR_SNYTAX % Expr)
|
||||
rangeId1 = str(uuid.uuid1())
|
||||
rangeContainer = RangeContainer()
|
||||
rangeContainer.push(RangeObject(int(Operand), MaxOfType(DataType)))
|
||||
rangeContainer.push(RangeObject(int(Operand), MAX_VAL_TYPE[DataType]))
|
||||
SymbolTable[rangeId1] = rangeContainer
|
||||
return rangeId1
|
||||
|
||||
@ -162,7 +153,7 @@ class GTOperatorObject(object):
|
||||
raise BadExpression(ERR_SNYTAX % Expr)
|
||||
rangeId1 = str(uuid.uuid1())
|
||||
rangeContainer = RangeContainer()
|
||||
rangeContainer.push(RangeObject(int(Operand) + 1, MaxOfType(DataType)))
|
||||
rangeContainer.push(RangeObject(int(Operand) + 1, MAX_VAL_TYPE[DataType]))
|
||||
SymbolTable[rangeId1] = rangeContainer
|
||||
return rangeId1
|
||||
|
||||
@ -307,18 +298,18 @@ class RangeExpression(object):
|
||||
rangeContainer = RangeContainer()
|
||||
rangeid = str(uuid.uuid1())
|
||||
if rangeobj.empty:
|
||||
rangeContainer.push(RangeObject(0, MaxOfType(self.PcdDataType)))
|
||||
rangeContainer.push(RangeObject(0, MAX_VAL_TYPE[self.PcdDataType]))
|
||||
else:
|
||||
if rangeobj.start > 0:
|
||||
rangeContainer.push(RangeObject(0, rangeobj.start - 1))
|
||||
if rangeobj.end < MaxOfType(self.PcdDataType):
|
||||
rangeContainer.push(RangeObject(rangeobj.end + 1, MaxOfType(self.PcdDataType)))
|
||||
if rangeobj.end < MAX_VAL_TYPE[self.PcdDataType]:
|
||||
rangeContainer.push(RangeObject(rangeobj.end + 1, MAX_VAL_TYPE[self.PcdDataType]))
|
||||
self.operanddict[rangeid] = rangeContainer
|
||||
rangeids.append(rangeid)
|
||||
|
||||
if len(rangeids) == 0:
|
||||
rangeContainer = RangeContainer()
|
||||
rangeContainer.push(RangeObject(0, MaxOfType(self.PcdDataType)))
|
||||
rangeContainer.push(RangeObject(0, MAX_VAL_TYPE[self.PcdDataType]))
|
||||
rangeid = str(uuid.uuid1())
|
||||
self.operanddict[rangeid] = rangeContainer
|
||||
return rangeid
|
||||
|
Reference in New Issue
Block a user