From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.43; helo=mga05.intel.com; envelope-from=jaben.carsey@intel.com; receiver=edk2-devel@lists.01.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 6941F203B8C8D for ; Fri, 27 Apr 2018 15:33:03 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 27 Apr 2018 15:33:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,336,1520924400"; d="scan'208";a="54252896" Received: from jcarsey-desk1.amr.corp.intel.com ([10.7.159.144]) by orsmga002.jf.intel.com with ESMTP; 27 Apr 2018 15:33:01 -0700 From: Jaben Carsey To: edk2-devel@lists.01.org Cc: Liming Gao , Yonghong Zhu Date: Fri, 27 Apr 2018 15:32:55 -0700 Message-Id: X-Mailer: git-send-email 2.16.2.windows.1 In-Reply-To: References: In-Reply-To: References: Subject: [PATCH v1 41/42] BaseTools: create base expression class X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Apr 2018 22:33:04 -0000 this class has a fucntion to share between Exception and RangeExpression change both classes to call this function init in their init Cc: Liming Gao Cc: Yonghong Zhu Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jaben Carsey --- BaseTools/Source/Python/Common/Expression.py | 29 ++++++++++++-------- BaseTools/Source/Python/Common/RangeExpression.py | 27 ++---------------- 2 files changed, 20 insertions(+), 36 deletions(-) diff --git a/BaseTools/Source/Python/Common/Expression.py b/BaseTools/Source/Python/Common/Expression.py index 53504c110d6d..b5f76d860773 100644 --- a/BaseTools/Source/Python/Common/Expression.py +++ b/BaseTools/Source/Python/Common/Expression.py @@ -201,7 +201,22 @@ def IntToStr(Value): SupportedInMacroList = ['TARGET', 'TOOL_CHAIN_TAG', 'ARCH', 'FAMILY'] -class ValueExpression(object): +class BaseExpression(object): + def __init__(self, *args, **kwargs): + super(BaseExpression, self).__init__() + + # Check if current token matches the operators given from parameter + def _IsOperator(self, OpSet): + Idx = self._Idx + self._GetOperator() + if self._Token in OpSet: + if self._Token in self.LogicalOperators: + self._Token = self.LogicalOperators[self._Token] + return True + self._Idx = Idx + return False + +class ValueExpression(BaseExpression): # Logical operator mapping LogicalOperators = { '&&' : 'and', '||' : 'or', @@ -307,6 +322,7 @@ class ValueExpression(object): return Val def __init__(self, Expression, SymbolTable={}): + super(ValueExpression, self).__init__(self, Expression, SymbolTable) self._NoProcess = False if type(Expression) != type(''): self._Expr = Expression @@ -780,17 +796,6 @@ class ValueExpression(object): self._Token = OpToken return OpToken - # Check if current token matches the operators given from OpList - def _IsOperator(self, OpList): - Idx = self._Idx - self._GetOperator() - if self._Token in OpList: - if self._Token in self.LogicalOperators: - self._Token = self.LogicalOperators[self._Token] - return True - self._Idx = Idx - return False - class ValueExpressionEx(ValueExpression): def __init__(self, PcdValue, PcdType, SymbolTable={}): ValueExpression.__init__(self, PcdValue, SymbolTable) diff --git a/BaseTools/Source/Python/Common/RangeExpression.py b/BaseTools/Source/Python/Common/RangeExpression.py index 35b35e4893bc..a37d0ca70d87 100644 --- a/BaseTools/Source/Python/Common/RangeExpression.py +++ b/BaseTools/Source/Python/Common/RangeExpression.py @@ -16,7 +16,7 @@ from Common.GlobalData import * from CommonDataClass.Exceptions import BadExpression from CommonDataClass.Exceptions import WrnExpression import uuid -from Common.Expression import PcdPattern +from Common.Expression import PcdPattern,BaseExpression from Common.DataType import * ERR_STRING_EXPR = 'This operator cannot be used in string expression: [%s].' @@ -186,7 +186,7 @@ def GetOperatorObject(Operator): else: raise BadExpression("Bad Operator") -class RangeExpression(object): +class RangeExpression(BaseExpression): # Logical operator mapping LogicalOperators = { '&&' : 'and', '||' : 'or', @@ -347,6 +347,7 @@ class RangeExpression(object): def __init__(self, Expression, PcdDataType, SymbolTable = {}): + super(RangeExpression, self).__init__(self, Expression, PcdDataType, SymbolTable) self._NoProcess = False if type(Expression) != type(''): self._Expr = Expression @@ -693,25 +694,3 @@ class RangeExpression(object): raise BadExpression(ERR_OPERATOR_UNSUPPORT % OpToken) self._Token = OpToken return OpToken - - # Check if current token matches the operators given from OpList - def _IsOperator(self, OpList): - Idx = self._Idx - self._GetOperator() - if self._Token in OpList: - if self._Token in self.LogicalOperators: - self._Token = self.LogicalOperators[self._Token] - return True - self._Idx = Idx - return False - - - - - - - - - - -# UTRangeList() -- 2.16.2.windows.1