]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/ValidCheckingInfoObject.py
BaseTools: Replace StringIO.StringIO with io.BytesIO
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / ValidCheckingInfoObject.py
index 92ede7a82324f59a82028368da2075487005e7b2..49fbdf3246a584fd895ce26f335230e71aad786b 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>\r
 # This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
 # which accompanies this distribution.  The full text of the license may be found at\r
@@ -17,8 +17,9 @@
 import os\r
 from Common.RangeExpression import RangeExpression\r
 from Common.Misc import *\r
-from StringIO import StringIO\r
+from io import BytesIO\r
 from struct import pack\r
+from Common.DataType import *\r
 \r
 class VAR_CHECK_PCD_VARIABLE_TAB_CONTAINER(object):\r
     def __init__(self):\r
@@ -34,12 +35,6 @@ class VAR_CHECK_PCD_VARIABLE_TAB_CONTAINER(object):
     \r
     def dump(self, dest, Phase):\r
         \r
-        FormatMap = {}\r
-        FormatMap[1] = "=B"\r
-        FormatMap[2] = "=H"\r
-        FormatMap[4] = "=L"\r
-        FormatMap[8] = "=Q"\r
-        \r
         if not os.path.isabs(dest):\r
             return\r
         if not os.path.exists(dest):\r
@@ -105,19 +100,7 @@ class VAR_CHECK_PCD_VARIABLE_TAB_CONTAINER(object):
             realLength += 4\r
 \r
             Guid = var_check_tab.Guid\r
-            b = pack('=LHHBBBBBBBB',\r
-                Guid[0],\r
-                Guid[1],\r
-                Guid[2],\r
-                Guid[3],\r
-                Guid[4],\r
-                Guid[5],\r
-                Guid[6],\r
-                Guid[7],\r
-                Guid[8],\r
-                Guid[9],\r
-                Guid[10],\r
-                )\r
+            b = PackByteFormatGUID(Guid)\r
             Buffer += b\r
             realLength += 16\r
 \r
@@ -155,14 +138,14 @@ class VAR_CHECK_PCD_VARIABLE_TAB_CONTAINER(object):
                 realLength += 1\r
                 for v_data in item.data:\r
                     if type(v_data) in (int, long):\r
-                        b = pack(FormatMap[item.StorageWidth], v_data)\r
+                        b = pack(PACK_CODE_BY_SIZE[item.StorageWidth], v_data)\r
                         Buffer += b\r
                         realLength += item.StorageWidth\r
                     else:\r
-                        b = pack(FormatMap[item.StorageWidth], v_data[0])\r
+                        b = pack(PACK_CODE_BY_SIZE[item.StorageWidth], v_data[0])\r
                         Buffer += b\r
                         realLength += item.StorageWidth\r
-                        b = pack(FormatMap[item.StorageWidth], v_data[1])\r
+                        b = pack(PACK_CODE_BY_SIZE[item.StorageWidth], v_data[1])\r
                         Buffer += b\r
                         realLength += item.StorageWidth\r
 \r
@@ -179,7 +162,7 @@ class VAR_CHECK_PCD_VARIABLE_TAB_CONTAINER(object):
                             Buffer += b\r
                             realLength += 1\r
         \r
-        DbFile = StringIO()\r
+        DbFile = BytesIO()\r
         if Phase == 'DXE' and os.path.exists(BinFilePath):\r
             BinFile = open(BinFilePath, "rb")\r
             BinBuffer = BinFile.read()\r
@@ -243,40 +226,24 @@ class VAR_CHECK_PCD_VALID_OBJ(object):
         self.Type = 1\r
         self.Length = 0  # Length include this header\r
         self.VarOffset = VarOffset\r
-        self.StorageWidth = 0\r
         self.PcdDataType = PcdDataType.strip()\r
         self.rawdata = data\r
         self.data = set()\r
-        self.ValidData = True\r
-        self.updateStorageWidth()\r
-    def updateStorageWidth(self):\r
-        if self.PcdDataType == "UINT8" or self.PcdDataType == "BOOLEAN":\r
-            self.StorageWidth = 1\r
-        elif self.PcdDataType == "UINT16":\r
-            self.StorageWidth = 2\r
-        elif self.PcdDataType == "UINT32":\r
-            self.StorageWidth = 4\r
-        elif self.PcdDataType == "UINT64":\r
-            self.StorageWidth = 8\r
-        else:\r
+        try:\r
+            self.StorageWidth = MAX_SIZE_TYPE[self.PcdDataType]\r
+            self.ValidData = True\r
+        except:\r
             self.StorageWidth = 0\r
             self.ValidData = False\r
             \r
     def __eq__(self, validObj):       \r
-        if self.VarOffset == validObj.VarOffset:\r
-            return True\r
-        else:\r
-            return False\r
+        return validObj and self.VarOffset == validObj.VarOffset\r
          \r
 class VAR_CHECK_PCD_VALID_LIST(VAR_CHECK_PCD_VALID_OBJ):\r
     def __init__(self, VarOffset, validlist, PcdDataType):\r
         super(VAR_CHECK_PCD_VALID_LIST, self).__init__(VarOffset, validlist, PcdDataType)\r
         self.Type = 1\r
-        self.update_data()\r
-        self.update_size()\r
-    def update_data(self):\r
         valid_num_list = []\r
-        data_list = []\r
         for item in self.rawdata:\r
             valid_num_list.extend(item.split(','))\r
         \r
@@ -284,14 +251,11 @@ class VAR_CHECK_PCD_VALID_LIST(VAR_CHECK_PCD_VALID_OBJ):
             valid_num = valid_num.strip()\r
 \r
             if valid_num.startswith('0x') or valid_num.startswith('0X'):\r
-                data_list.append(int(valid_num, 16))\r
+                self.data.add(int(valid_num, 16))\r
             else:\r
-                data_list.append(int(valid_num))\r
+                self.data.add(int(valid_num))\r
 \r
                 \r
-        self.data = set(data_list)\r
-        \r
-    def update_size(self):\r
         self.Length = 5 + len(self.data) * self.StorageWidth\r
         \r
            \r
@@ -299,11 +263,7 @@ class VAR_CHECK_PCD_VALID_RANGE(VAR_CHECK_PCD_VALID_OBJ):
     def __init__(self, VarOffset, validrange, PcdDataType):\r
         super(VAR_CHECK_PCD_VALID_RANGE, self).__init__(VarOffset, validrange, PcdDataType)\r
         self.Type = 2\r
-        self.update_data()\r
-        self.update_size()\r
-    def update_data(self):\r
         RangeExpr = ""\r
-        data_list = []\r
         i = 0\r
         for item in self.rawdata:\r
             if i == 0:\r
@@ -313,38 +273,14 @@ class VAR_CHECK_PCD_VALID_RANGE(VAR_CHECK_PCD_VALID_OBJ):
         range_result = RangeExpression(RangeExpr, self.PcdDataType)(True)\r
         for rangelist in range_result:\r
             for obj in rangelist.pop():\r
-                data_list.append((obj.start, obj.end))\r
-        self.data = set(data_list)\r
-    \r
-    def update_size(self):\r
+                self.data.add((obj.start, obj.end))\r
         self.Length = 5 + len(self.data) * 2 * self.StorageWidth\r
         \r
 \r
-class VAR_VALID_OBJECT_FACTORY(object):\r
-    def __init__(self):\r
-        pass\r
-    @staticmethod\r
-    def Get_valid_object(PcdClass, VarOffset):\r
-        if PcdClass.validateranges:\r
-            return VAR_CHECK_PCD_VALID_RANGE(VarOffset, PcdClass.validateranges, PcdClass.DatumType)\r
-        if PcdClass.validlists:\r
-            return VAR_CHECK_PCD_VALID_LIST(VarOffset, PcdClass.validlists, PcdClass.DatumType)\r
-        else:\r
-            return None\r
-\r
-if __name__ == "__main__":\r
-    class TestObj(object):\r
-        def __init__(self, number1):\r
-            self.number_1 = number1\r
-        def __eq__(self, testobj):\r
-            if self.number_1 == testobj.number_1:\r
-                return True\r
-            else:\r
-                return False\r
-    test1 = TestObj(1)\r
-    test2 = TestObj(2)\r
-    \r
-    testarr = [test1, test2]\r
-    print TestObj(2) in testarr\r
-    print TestObj(2) == test2\r
-    \r
+def GetValidationObject(PcdClass, VarOffset):\r
+    if PcdClass.validateranges:\r
+        return VAR_CHECK_PCD_VALID_RANGE(VarOffset, PcdClass.validateranges, PcdClass.DatumType)\r
+    if PcdClass.validlists:\r
+        return VAR_CHECK_PCD_VALID_LIST(VarOffset, PcdClass.validlists, PcdClass.DatumType)\r
+    else:\r
+        return None\r