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
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