BaseTools: change the Division Operator in the expression

PEP 238 -- Changing the Division Operator
x/y to return a reasonable approximation of the mathematical result
    of the division ("true division")
x//y to return the floor ("floor division")

Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Yunhua Feng
2018-08-14 15:57:47 +08:00
committed by Yonghong Zhu
parent 00fcce9153
commit 2e300969ae
14 changed files with 49 additions and 42 deletions

View File

@ -425,6 +425,13 @@ class ValueExpression(BaseExpression):
else:
Val = Val3
continue
#
# PEP 238 -- Changing the Division Operator
# x/y to return a reasonable approximation of the mathematical result of the division ("true division")
# x//y to return the floor ("floor division")
#
if Op == '/':
Op = '//'
try:
Val = self.Eval(Op, Val, EvalFunc())
except WrnExpression as Warn:
@ -898,7 +905,7 @@ class ValueExpressionEx(ValueExpression):
if TmpValue.bit_length() == 0:
PcdValue = '{0x00}'
else:
for I in range((TmpValue.bit_length() + 7) / 8):
for I in range((TmpValue.bit_length() + 7) // 8):
TmpList.append('0x%02x' % ((TmpValue >> I * 8) & 0xff))
PcdValue = '{' + ', '.join(TmpList) + '}'
except: