summaryrefslogtreecommitdiffstats
path: root/BaseTools/Source/Python/Workspace/BuildClassObject.py
diff options
context:
space:
mode:
authorCarsey, Jaben <jaben.carsey@intel.com>2018-04-28 06:32:32 +0800
committerYonghong Zhu <yonghong.zhu@intel.com>2018-05-04 13:03:05 +0800
commit5565a8c4d2196b5e55e702169feefeeb07a330d9 (patch)
tree209dad0eab7b1fe7d3993ddaff977249b4efa0b3 /BaseTools/Source/Python/Workspace/BuildClassObject.py
parent88252a90d1ca7846731cd2e4e8e860454f7d97a3 (diff)
downloadedk2-5565a8c4d2196b5e55e702169feefeeb07a330d9.tar.gz
edk2-5565a8c4d2196b5e55e702169feefeeb07a330d9.tar.bz2
edk2-5565a8c4d2196b5e55e702169feefeeb07a330d9.zip
BaseTools: move PCD size calculation functions to PcdClassObject
move both GetPcdMaxSize and GetPcdSize to the PcdClassObject. fix MAX_SIZE_TYPE to have int values 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> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
Diffstat (limited to 'BaseTools/Source/Python/Workspace/BuildClassObject.py')
-rw-r--r--BaseTools/Source/Python/Workspace/BuildClassObject.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py b/BaseTools/Source/Python/Workspace/BuildClassObject.py
index 258905e80f..209315d901 100644
--- a/BaseTools/Source/Python/Workspace/BuildClassObject.py
+++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py
@@ -72,6 +72,37 @@ class PcdClassObject(object):
self.PcdValueFromComm = ""
self.DefinitionPosition = ("","")
+ ## Get the maximum number of bytes
+ def GetPcdMaxSize(self):
+ if self.DatumType in TAB_PCD_NUMERIC_TYPES:
+ return MAX_SIZE_TYPE[self.DatumType]
+
+ MaxSize = int(self.MaxDatumSize,10) if self.MaxDatumSize else 0
+ if self.PcdValueFromComm:
+ if self.PcdValueFromComm.startswith("{") and self.PcdValueFromComm.endswith("}"):
+ return max([len(self.PcdValueFromComm.split(",")),MaxSize])
+ elif self.PcdValueFromComm.startswith("\"") or self.PcdValueFromComm.startswith("\'"):
+ return max([len(self.PcdValueFromComm)-2+1,MaxSize])
+ elif self.PcdValueFromComm.startswith("L\""):
+ return max([2*(len(self.PcdValueFromComm)-3+1),MaxSize])
+ else:
+ return max([len(self.PcdValueFromComm),MaxSize])
+ return MaxSize
+
+ ## Get the number of bytes
+ def GetPcdSize(self):
+ if self.DatumType in TAB_PCD_NUMERIC_TYPES:
+ return MAX_SIZE_TYPE[self.DatumType]
+ if not self.DefaultValue:
+ return 1
+ elif self.DefaultValue[0] == 'L':
+ return (len(self.DefaultValue) - 2) * 2
+ elif self.DefaultValue[0] == '{':
+ return len(self.DefaultValue.split(','))
+ else:
+ return len(self.DefaultValue) - 1
+
+
## Convert the class to a string
#
# Convert each member of the class to string