]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/BPDG/GenVpd.py
BaseTools: refactor the error for PCD value is negative or exceed max
[mirror_edk2.git] / BaseTools / Source / Python / BPDG / GenVpd.py
index c5e91a3e812ad71ccb2ab88085986db97c2c34e7..d7852d29eed09df7b016ab7fadc8aff991973146 100644 (file)
@@ -21,6 +21,7 @@ import array
 import re\r
 from Common.LongFilePathSupport import OpenLongFilePath as open\r
 from struct import *\r
+from Common.DataType import MAX_SIZE_TYPE, MAX_VAL_TYPE\r
 import Common.EdkLogger as EdkLogger\r
 import Common.BuildToolError as BuildToolError\r
 \r
@@ -125,37 +126,18 @@ class PcdEntry:
             EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID,\r
                             "Invalid size %d for PCD %s in integer datum size(File: %s Line: %s)." % (Size, self.PcdCName, self.FileName, self.Lineno))\r
 \r
-        if Size == 1:\r
-            if IntValue < 0:\r
-                EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID,\r
-                                "PCD can't be set to negative value %d for PCD %s in UINT8 datum type(File: %s Line: %s)." % (IntValue, self.PcdCName, self.FileName, self.Lineno))\r
-            elif IntValue >= 0x100:\r
-                EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID,\r
-                                "Too large PCD value %d for datum type UINT8 for PCD %s(File: %s Line: %s)." % (IntValue, self.PcdCName, self.FileName, self.Lineno))\r
-        elif Size == 2:\r
-            if IntValue < 0:\r
-                EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID,\r
-                                "PCD can't be set to negative value %d for PCD %s in UINT16 datum type(File: %s Line: %s)." % (IntValue, self.PcdCName, self.FileName, self.Lineno))\r
-            elif IntValue >= 0x10000:\r
-                EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID,\r
-                                "Too large PCD value %d for datum type UINT16 for PCD %s(File: %s Line: %s)." % (IntValue, self.PcdCName, self.FileName, self.Lineno))\r
-        elif Size == 4:\r
-            if IntValue < 0:\r
-                EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID,\r
-                                "PCD can't be set to negative value %d for PCD %s in UINT32 datum type(File: %s Line: %s)." % (IntValue, self.PcdCName, self.FileName, self.Lineno))\r
-            elif IntValue >= 0x100000000:\r
-                EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID,\r
-                                "Too large PCD value %d for datum type UINT32 for PCD %s(File: %s Line: %s)." % (IntValue, self.PcdCName, self.FileName, self.Lineno))\r
-        elif Size == 8:\r
-            if IntValue < 0:\r
-                EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID,\r
-                                "PCD can't be set to negative value %d for PCD %s in UINT32 datum type(File: %s Line: %s)." % (IntValue, self.PcdCName, self.FileName, self.Lineno))\r
-            elif IntValue >= 0x10000000000000000:\r
-                EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID,\r
-                                "Too large PCD value %d for datum type UINT32 for PCD %s(File: %s Line: %s)." % (IntValue, self.PcdCName, self.FileName, self.Lineno))\r
-        else:\r
-            EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID,\r
-                            "Invalid size %d for PCD %s in integer datum size(File: %s Line: %s)." % (Size, self.PcdCName, self.FileName, self.Lineno))\r
+        for Type, MaxSize in MAX_SIZE_TYPE.items():\r
+            if Type == 'BOOLEAN':\r
+                continue\r
+            if Size == MaxSize:\r
+                if IntValue < 0:\r
+                    EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID,\r
+                                    "PCD can't be set to negative value %d for PCD %s in %s datum type(File: %s Line: %s)." % (\r
+                                    IntValue, self.PcdCName, Type, self.FileName, self.Lineno))\r
+                elif IntValue > MAX_VAL_TYPE[Type]:\r
+                    EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID,\r
+                                    "Too large PCD value %d for datum type %s for PCD %s(File: %s Line: %s)." % (\r
+                                    IntValue, Type, self.PcdCName, self.FileName, self.Lineno))\r
 \r
         try:\r
             self.PcdValue = pack(_FORMAT_CHAR[Size], IntValue)\r