\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
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
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
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 == TAB_UINT8 or self.PcdDataType == "BOOLEAN":\r
- self.StorageWidth = 1\r
- elif self.PcdDataType == TAB_UINT16:\r
- self.StorageWidth = 2\r
- elif self.PcdDataType == TAB_UINT32:\r
- self.StorageWidth = 4\r
- elif self.PcdDataType == TAB_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
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
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
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