]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/GenFds/FdfParser.py
BaseTools: make static functions when self is not needed
[mirror_edk2.git] / BaseTools / Source / Python / GenFds / FdfParser.py
index 8a894f1528165c38638746fcdccc524552a0077f..9b7e898570a3ecfd0d34364fa1ba65b4f519bd59 100644 (file)
@@ -42,6 +42,7 @@ import ComponentStatement
 import OptionRom\r
 import OptRomInfStatement\r
 import OptRomFileStatement\r
+import string\r
 \r
 from GenFdsGlobalVariable import GenFdsGlobalVariable\r
 from Common.BuildToolError import *\r
@@ -60,7 +61,7 @@ from Common.LongFilePathSupport import OpenLongFilePath as open
 from Capsule import EFI_CERT_TYPE_PKCS7_GUID\r
 from Capsule import EFI_CERT_TYPE_RSA2048_SHA256_GUID\r
 from Common.RangeExpression import RangeExpression\r
-from Common.FdfParserLite import FileExtensionPattern\r
+from Common.FdfParserLite import FileExtensionPattern,TokenFindPattern\r
 \r
 ##define T_CHAR_SPACE                ' '\r
 ##define T_CHAR_NULL                 '\0'\r
@@ -274,21 +275,6 @@ class FdfParser:
         if GenFdsGlobalVariable.WorkSpaceDir == '':\r
             GenFdsGlobalVariable.WorkSpaceDir = os.getenv("WORKSPACE")\r
 \r
-    ## __IsWhiteSpace() method\r
-    #\r
-    #   Whether char at current FileBufferPos is whitespace\r
-    #\r
-    #   @param  self        The object pointer\r
-    #   @param  Char        The char to test\r
-    #   @retval True        The char is a kind of white space\r
-    #   @retval False       The char is NOT a kind of white space\r
-    #\r
-    def __IsWhiteSpace(self, Char):\r
-        if Char in (T_CHAR_NULL, T_CHAR_CR, T_CHAR_SPACE, T_CHAR_TAB, T_CHAR_LF):\r
-            return True\r
-        else:\r
-            return False\r
-\r
     ## __SkipWhiteSpace() method\r
     #\r
     #   Skip white spaces from current char, return number of chars skipped\r
@@ -718,7 +704,8 @@ class FdfParser:
         # Preprocess done.\r
         self.Rewind()\r
         \r
-    def __GetIfListCurrentItemStat(self, IfList):\r
+    @staticmethod\r
+    def __GetIfListCurrentItemStat(IfList):\r
         if len(IfList) == 0:\r
             return True\r
         \r
@@ -1146,10 +1133,7 @@ class FdfParser:
         if Scope in ['UINT64', 'UINT8']:\r
             ValueNumber = 0\r
             try:\r
-                if Value.upper().startswith('0X'):\r
-                    ValueNumber = int (Value, 16)\r
-                else:\r
-                    ValueNumber = int (Value)\r
+                ValueNumber = int (Value, 0)\r
             except:\r
                 EdkLogger.error("FdfParser", FORMAT_INVALID, "The value is not valid dec or hex number for %s." % Name)\r
             if ValueNumber < 0:\r
@@ -1195,32 +1179,13 @@ class FdfParser:
 \r
         self.__GetOneChar()\r
 \r
-    ## __HexDigit() method\r
-    #\r
-    #   Whether char input is a Hex data bit\r
-    #\r
-    #   @param  self        The object pointer\r
-    #   @param  TempChar    The char to test\r
-    #   @retval True        The char is a Hex data bit\r
-    #   @retval False       The char is NOT a Hex data bit\r
-    #\r
-    def __HexDigit(self, TempChar):\r
-        if (TempChar >= 'a' and TempChar <= 'f') or (TempChar >= 'A' and TempChar <= 'F') \\r
-                or (TempChar >= '0' and TempChar <= '9'):\r
-                    return True\r
-        else:\r
-            return False\r
-\r
     def __IsHex(self, HexStr):\r
         if not HexStr.upper().startswith("0X"):\r
             return False\r
         if len(self.__Token) <= 2:\r
             return False\r
-        charList = [c for c in HexStr[2 : ] if not self.__HexDigit( c)]\r
-        if len(charList) == 0:\r
-            return True\r
-        else:\r
-            return False\r
+        return True if all(x in string.hexdigits for x in HexStr[2:]) else False\r
+\r
     ## __GetNextHexNumber() method\r
     #\r
     #   Get next HEX data before a seperator\r
@@ -2661,13 +2626,12 @@ class FdfParser:
     #\r
     #   Check whether reloc strip flag can be set for a file type.\r
     #\r
-    #   @param  self        The object pointer\r
     #   @param  FileType    The file type to check with\r
     #   @retval True        This type could have relocation strip flag\r
     #   @retval False       No way to have it\r
     #\r
-\r
-    def __FileCouldHaveRelocFlag (self, FileType):\r
+    @staticmethod\r
+    def __FileCouldHaveRelocFlag (FileType):\r
         if FileType in ('SEC', 'PEI_CORE', 'PEIM', 'PEI_DXE_COMBO'):\r
             return True\r
         else:\r
@@ -2677,13 +2641,12 @@ class FdfParser:
     #\r
     #   Check whether reloc strip flag can be set for a section type.\r
     #\r
-    #   @param  self        The object pointer\r
     #   @param  SectionType The section type to check with\r
     #   @retval True        This type could have relocation strip flag\r
     #   @retval False       No way to have it\r
     #\r
-\r
-    def __SectionCouldHaveRelocFlag (self, SectionType):\r
+    @staticmethod\r
+    def __SectionCouldHaveRelocFlag (SectionType):\r
         if SectionType in ('TE', 'PE32'):\r
             return True\r
         else:\r
@@ -2800,12 +2763,11 @@ class FdfParser:
     def __GetFileOpts(self, FfsFileObj):\r
 \r
         if self.__GetNextToken():\r
-            Pattern = re.compile(r'([a-zA-Z0-9\-]+|\$\(TARGET\)|\*)_([a-zA-Z0-9\-]+|\$\(TOOL_CHAIN_TAG\)|\*)_([a-zA-Z0-9\-]+|\$\(ARCH\)|\*)')\r
-            if Pattern.match(self.__Token):\r
+            if TokenFindPattern.match(self.__Token):\r
                 FfsFileObj.KeyStringList.append(self.__Token)\r
                 if self.__IsToken(","):\r
                     while self.__GetNextToken():\r
-                        if not Pattern.match(self.__Token):\r
+                        if not TokenFindPattern.match(self.__Token):\r
                             raise Warning("expected KeyString \"Target_Tag_Arch\"", self.FileName, self.CurrentLineNumber)\r
                         FfsFileObj.KeyStringList.append(self.__Token)\r
 \r
@@ -3749,12 +3711,11 @@ class FdfParser:
 \r
         KeyStringList = []\r
         if self.__GetNextToken():\r
-            Pattern = re.compile(r'([a-zA-Z0-9\-]+|\$\(TARGET\)|\*)_([a-zA-Z0-9\-]+|\$\(TOOL_CHAIN_TAG\)|\*)_([a-zA-Z0-9\-]+|\$\(ARCH\)|\*)')\r
-            if Pattern.match(self.__Token):\r
+            if TokenFindPattern.match(self.__Token):\r
                 KeyStringList.append(self.__Token)\r
                 if self.__IsToken(","):\r
                     while self.__GetNextToken():\r
-                        if not Pattern.match(self.__Token):\r
+                        if not TokenFindPattern.match(self.__Token):\r
                             raise Warning("expected KeyString \"Target_Tag_Arch\"", self.FileName, self.CurrentLineNumber)\r
                         KeyStringList.append(self.__Token)\r
 \r
@@ -4024,12 +3985,12 @@ class FdfParser:
     #\r
     #   Get whether a section could be optional\r
     #\r
-    #   @param  self        The object pointer\r
     #   @param  SectionType The section type to check\r
     #   @retval True        section could be optional\r
     #   @retval False       section never optional\r
     #\r
-    def __RuleSectionCouldBeOptional(self, SectionType):\r
+    @staticmethod\r
+    def __RuleSectionCouldBeOptional(SectionType):\r
         if SectionType in ("DXE_DEPEX", "UI", "VERSION", "PEI_DEPEX", "RAW", "SMM_DEPEX"):\r
             return True\r
         else:\r
@@ -4039,12 +4000,12 @@ class FdfParser:
     #\r
     #   Get whether a section could have build number information\r
     #\r
-    #   @param  self        The object pointer\r
     #   @param  SectionType The section type to check\r
     #   @retval True        section could have build number information\r
     #   @retval False       section never have build number information\r
     #\r
-    def __RuleSectionCouldHaveBuildNum(self, SectionType):\r
+    @staticmethod\r
+    def __RuleSectionCouldHaveBuildNum(SectionType):\r
         if SectionType in ("VERSION"):\r
             return True\r
         else:\r
@@ -4054,12 +4015,12 @@ class FdfParser:
     #\r
     #   Get whether a section could have string\r
     #\r
-    #   @param  self        The object pointer\r
     #   @param  SectionType The section type to check\r
     #   @retval True        section could have string\r
     #   @retval False       section never have string\r
     #\r
-    def __RuleSectionCouldHaveString(self, SectionType):\r
+    @staticmethod\r
+    def __RuleSectionCouldHaveString(SectionType):\r
         if SectionType in ("UI", "VERSION"):\r
             return True\r
         else:\r
@@ -4299,7 +4260,7 @@ class FdfParser:
             raise Warning("expected Component type", self.FileName, self.CurrentLineNumber)\r
         if self.__Token not in ("FIT", "PAL_B", "PAL_A", "OEM"):\r
             if not self.__Token.startswith("0x") or len(self.__Token) < 3 or len(self.__Token) > 4 or \\r
-                not self.__HexDigit(self.__Token[2]) or not self.__HexDigit(self.__Token[-1]):\r
+                not self.__Token[2] in string.hexdigits or not self.__Token[-1] in string.hexdigits:\r
                 raise Warning("Unknown location type '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
         CompStatementObj.CompType = self.__Token\r
 \r