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.115; helo=mga14.intel.com; envelope-from=jaben.carsey@intel.com; receiver=edk2-devel@lists.01.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 23F5C2034C8BC for ; Fri, 27 Apr 2018 15:33:00 -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 fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 27 Apr 2018 15:33:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,336,1520924400"; d="scan'208";a="54252795" Received: from jcarsey-desk1.amr.corp.intel.com ([10.7.159.144]) by orsmga002.jf.intel.com with ESMTP; 27 Apr 2018 15:32:59 -0700 From: Jaben Carsey To: edk2-devel@lists.01.org Cc: Liming Gao , Yonghong Zhu Date: Fri, 27 Apr 2018 15:32:22 -0700 Message-Id: X-Mailer: git-send-email 2.16.2.windows.1 In-Reply-To: References: In-Reply-To: References: Subject: [PATCH v1 08/42] BaseTools: AutoGen - share StripComments API 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:01 -0000 add the API root in one class file. delete the static API out of both classes. share it in the single location. Cc: Liming Gao Cc: Yonghong Zhu Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jaben Carsey --- BaseTools/Source/Python/AutoGen/IdfClassObject.py | 19 ++----------- BaseTools/Source/Python/AutoGen/UniClassObject.py | 29 ++++++++++---------- 2 files changed, 16 insertions(+), 32 deletions(-) diff --git a/BaseTools/Source/Python/AutoGen/IdfClassObject.py b/BaseTools/Source/Python/AutoGen/IdfClassObject.py index 6953854a5247..82396d3744d5 100644 --- a/BaseTools/Source/Python/AutoGen/IdfClassObject.py +++ b/BaseTools/Source/Python/AutoGen/IdfClassObject.py @@ -22,6 +22,7 @@ from Common.LongFilePathSupport import LongFilePath import re import os from Common.GlobalData import gIdentifierPattern +from UniClassObject import StripComments IMAGE_TOKEN = re.compile('IMAGE_TOKEN *\(([A-Z0-9_]+) *\)', re.MULTILINE | re.UNICODE) @@ -91,7 +92,7 @@ class IdfFileClassObject(object): ImageFileList = [] for Line in FileIn.splitlines(): Line = Line.strip() - Line = self.StripComments(Line) + Line = StripComments(Line) if len(Line) == 0: continue @@ -121,22 +122,6 @@ class IdfFileClassObject(object): if ImageFileList: self.ImageFilesDict[File] = ImageFileList - def StripComments(self, Line): - Comment = '//' - CommentPos = Line.find(Comment) - while CommentPos >= 0: - # if there are non matched quotes before the comment header - # then we are in the middle of a string - # but we need to ignore the escaped quotes and backslashes. - if ((Line.count('"', 0, CommentPos) - Line.count('\\"', 0, CommentPos)) & 1) == 1: - CommentPos = Line.find (Comment, CommentPos + 1) - else: - return Line[:CommentPos].strip() - return Line.strip() - - def ImageDecoder(self, File): - pass - def SearchImageID(ImageFileObject, FileList): if FileList == []: return ImageFileObject diff --git a/BaseTools/Source/Python/AutoGen/UniClassObject.py b/BaseTools/Source/Python/AutoGen/UniClassObject.py index 5b879d784d9c..4e16afec5c28 100644 --- a/BaseTools/Source/Python/AutoGen/UniClassObject.py +++ b/BaseTools/Source/Python/AutoGen/UniClassObject.py @@ -218,6 +218,19 @@ class StringDefClassObject(object): self.StringValueByteList = UniToHexList(self.StringValue) self.Length = len(self.StringValueByteList) +def StripComments(Line): + Comment = u'//' + CommentPos = Line.find(Comment) + while CommentPos >= 0: + # if there are non matched quotes before the comment header + # then we are in the middle of a string + # but we need to ignore the escaped quotes and backslashes. + if ((Line.count(u'"', 0, CommentPos) - Line.count(u'\\"', 0, CommentPos)) & 1) == 1: + CommentPos = Line.find (Comment, CommentPos + 1) + else: + return Line[:CommentPos].strip() + return Line.strip() + ## UniFileClassObject # # A structure for .uni file definition @@ -371,20 +384,6 @@ class UniFileClassObject(object): FileName = Item[Item.find(u'#include ') + len(u'#include ') :Item.find(u' ', len(u'#include '))][1:-1] self.LoadUniFile(FileName) - def StripComments(self, Line): - Comment = u'//' - CommentPos = Line.find(Comment) - while CommentPos >= 0: - # if there are non matched quotes before the comment header - # then we are in the middle of a string - # but we need to ignore the escaped quotes and backslashes. - if ((Line.count(u'"', 0, CommentPos) - Line.count(u'\\"', 0, CommentPos)) & 1) == 1: - CommentPos = Line.find (Comment, CommentPos + 1) - else: - return Line[:CommentPos].strip() - return Line.strip() - - # # Pre-process before parse .uni file # @@ -406,7 +405,7 @@ class UniFileClassObject(object): for Line in FileIn: Line = Line.strip() Line = Line.replace(u'\\\\', BACK_SLASH_PLACEHOLDER) - Line = self.StripComments(Line) + Line = StripComments(Line) # # Ignore empty line -- 2.16.2.windows.1