[edk2] [PATCH v1 08/42] BaseTools: AutoGen - share StripComments API

Jaben Carsey posted 42 patches 7 years, 9 months ago
[edk2] [PATCH v1 08/42] BaseTools: AutoGen - share StripComments API
Posted by Jaben Carsey 7 years, 9 months ago
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 <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>
---
 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

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel