]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Workspace/BuildClassObject.py
BaseTools: move PCD size calculation functions to PcdClassObject
[mirror_edk2.git] / BaseTools / Source / Python / Workspace / BuildClassObject.py
index 258905e80f25a4bfa6e2879847dfedd22aad92d1..209315d901b2cc192cd86ea4889b7e11ca207419 100644 (file)
@@ -72,6 +72,37 @@ class PcdClassObject(object):
         self.PcdValueFromComm = ""\r
         self.DefinitionPosition = ("","")\r
 \r
+    ## Get the maximum number of bytes\r
+    def GetPcdMaxSize(self):\r
+        if self.DatumType in TAB_PCD_NUMERIC_TYPES:\r
+            return MAX_SIZE_TYPE[self.DatumType]\r
+\r
+        MaxSize = int(self.MaxDatumSize,10) if self.MaxDatumSize else 0\r
+        if self.PcdValueFromComm:\r
+            if self.PcdValueFromComm.startswith("{") and self.PcdValueFromComm.endswith("}"):\r
+                return max([len(self.PcdValueFromComm.split(",")),MaxSize])\r
+            elif self.PcdValueFromComm.startswith("\"") or self.PcdValueFromComm.startswith("\'"):\r
+                return max([len(self.PcdValueFromComm)-2+1,MaxSize])\r
+            elif self.PcdValueFromComm.startswith("L\""):\r
+                return max([2*(len(self.PcdValueFromComm)-3+1),MaxSize])\r
+            else:\r
+                return max([len(self.PcdValueFromComm),MaxSize])\r
+        return MaxSize\r
+\r
+    ## Get the number of bytes\r
+    def GetPcdSize(self):\r
+        if self.DatumType in TAB_PCD_NUMERIC_TYPES:\r
+            return MAX_SIZE_TYPE[self.DatumType]\r
+        if not self.DefaultValue:\r
+            return 1\r
+        elif self.DefaultValue[0] == 'L':\r
+            return (len(self.DefaultValue) - 2) * 2\r
+        elif self.DefaultValue[0] == '{':\r
+            return len(self.DefaultValue.split(','))\r
+        else:\r
+            return len(self.DefaultValue) - 1\r
+\r
+\r
     ## Convert the class to a string\r
     #\r
     #  Convert each member of the class to string\r