summaryrefslogtreecommitdiff
path: root/BaseTools/Source/Python/AutoGen/ValidCheckingInfoObject.py
diff options
context:
space:
mode:
Diffstat (limited to 'BaseTools/Source/Python/AutoGen/ValidCheckingInfoObject.py')
-rw-r--r--BaseTools/Source/Python/AutoGen/ValidCheckingInfoObject.py350
1 files changed, 0 insertions, 350 deletions
diff --git a/BaseTools/Source/Python/AutoGen/ValidCheckingInfoObject.py b/BaseTools/Source/Python/AutoGen/ValidCheckingInfoObject.py
deleted file mode 100644
index 92ede7a823..0000000000
--- a/BaseTools/Source/Python/AutoGen/ValidCheckingInfoObject.py
+++ /dev/null
@@ -1,350 +0,0 @@
-# Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
-# This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-#
-# This file is used to collect the Variable checking information
-#
-
-# #
-# Import Modules
-#
-import os
-from Common.RangeExpression import RangeExpression
-from Common.Misc import *
-from StringIO import StringIO
-from struct import pack
-
-class VAR_CHECK_PCD_VARIABLE_TAB_CONTAINER(object):
- def __init__(self):
- self.var_check_info = []
-
- def push_back(self, var_check_tab):
- for tab in self.var_check_info:
- if tab.equal(var_check_tab):
- tab.merge(var_check_tab)
- break
- else:
- self.var_check_info.append(var_check_tab)
-
- def dump(self, dest, Phase):
-
- FormatMap = {}
- FormatMap[1] = "=B"
- FormatMap[2] = "=H"
- FormatMap[4] = "=L"
- FormatMap[8] = "=Q"
-
- if not os.path.isabs(dest):
- return
- if not os.path.exists(dest):
- os.mkdir(dest)
- BinFileName = "PcdVarCheck.bin"
- BinFilePath = os.path.join(dest, BinFileName)
- Buffer = ''
- index = 0
- for var_check_tab in self.var_check_info:
- index += 1
- realLength = 0
- realLength += 32
- Name = var_check_tab.Name[1:-1]
- NameChars = Name.split(",")
- realLength += len(NameChars)
- if (index < len(self.var_check_info) and realLength % 4) or (index == len(self.var_check_info) and len(var_check_tab.validtab) > 0 and realLength % 4):
- realLength += (4 - (realLength % 4))
- itemIndex = 0
- for item in var_check_tab.validtab:
- itemIndex += 1
- realLength += 5
- for v_data in item.data:
- if type(v_data) in (int, long):
- realLength += item.StorageWidth
- else:
- realLength += item.StorageWidth
- realLength += item.StorageWidth
- if (index == len(self.var_check_info)) :
- if (itemIndex < len(var_check_tab.validtab)) and realLength % 4:
- realLength += (4 - (realLength % 4))
- else:
- if realLength % 4:
- realLength += (4 - (realLength % 4))
- var_check_tab.Length = realLength
- realLength = 0
- index = 0
- for var_check_tab in self.var_check_info:
- index += 1
-
- b = pack("=H", var_check_tab.Revision)
- Buffer += b
- realLength += 2
-
- b = pack("=H", var_check_tab.HeaderLength)
- Buffer += b
- realLength += 2
-
- b = pack("=L", var_check_tab.Length)
- Buffer += b
- realLength += 4
-
- b = pack("=B", var_check_tab.Type)
- Buffer += b
- realLength += 1
-
- for i in range(0, 3):
- b = pack("=B", var_check_tab.Reserved)
- Buffer += b
- realLength += 1
-
- b = pack("=L", var_check_tab.Attributes)
- Buffer += b
- realLength += 4
-
- Guid = var_check_tab.Guid
- b = pack('=LHHBBBBBBBB',
- Guid[0],
- Guid[1],
- Guid[2],
- Guid[3],
- Guid[4],
- Guid[5],
- Guid[6],
- Guid[7],
- Guid[8],
- Guid[9],
- Guid[10],
- )
- Buffer += b
- realLength += 16
-
- Name = var_check_tab.Name[1:-1]
- NameChars = Name.split(",")
- for NameChar in NameChars:
- NameCharNum = int(NameChar, 16)
- b = pack("=B", NameCharNum)
- Buffer += b
- realLength += 1
-
- if (index < len(self.var_check_info) and realLength % 4) or (index == len(self.var_check_info) and len(var_check_tab.validtab) > 0 and realLength % 4):
- for i in range(4 - (realLength % 4)):
- b = pack("=B", var_check_tab.pad)
- Buffer += b
- realLength += 1
- itemIndex = 0
- for item in var_check_tab.validtab:
- itemIndex += 1
-
- b = pack("=B", item.Type)
- Buffer += b
- realLength += 1
-
- b = pack("=B", item.Length)
- Buffer += b
- realLength += 1
-
- b = pack("=H", int(item.VarOffset, 16))
- Buffer += b
- realLength += 2
-
- b = pack("=B", item.StorageWidth)
- Buffer += b
- realLength += 1
- for v_data in item.data:
- if type(v_data) in (int, long):
- b = pack(FormatMap[item.StorageWidth], v_data)
- Buffer += b
- realLength += item.StorageWidth
- else:
- b = pack(FormatMap[item.StorageWidth], v_data[0])
- Buffer += b
- realLength += item.StorageWidth
- b = pack(FormatMap[item.StorageWidth], v_data[1])
- Buffer += b
- realLength += item.StorageWidth
-
- if (index == len(self.var_check_info)) :
- if (itemIndex < len(var_check_tab.validtab)) and realLength % 4:
- for i in range(4 - (realLength % 4)):
- b = pack("=B", var_check_tab.pad)
- Buffer += b
- realLength += 1
- else:
- if realLength % 4:
- for i in range(4 - (realLength % 4)):
- b = pack("=B", var_check_tab.pad)
- Buffer += b
- realLength += 1
-
- DbFile = StringIO()
- if Phase == 'DXE' and os.path.exists(BinFilePath):
- BinFile = open(BinFilePath, "rb")
- BinBuffer = BinFile.read()
- BinFile.close()
- BinBufferSize = len(BinBuffer)
- if (BinBufferSize % 4):
- for i in range(4 - (BinBufferSize % 4)):
- b = pack("=B", VAR_CHECK_PCD_VARIABLE_TAB.pad)
- BinBuffer += b
- Buffer = BinBuffer + Buffer
- DbFile.write(Buffer)
- SaveFileOnChange(BinFilePath, DbFile.getvalue(), True)
-
-
-class VAR_CHECK_PCD_VARIABLE_TAB(object):
- pad = 0xDA
- def __init__(self, TokenSpaceGuid, PcdCName):
- self.Revision = 0x0001
- self.HeaderLength = 0
- self.Length = 0 # Length include this header
- self.Type = 0
- self.Reserved = 0
- self.Attributes = 0x00000000
- self.Guid = eval("[" + TokenSpaceGuid.replace("{", "").replace("}", "") + "]")
- self.Name = PcdCName
- self.validtab = []
-
- def UpdateSize(self):
- self.HeaderLength = 32 + len(self.Name.split(","))
- self.Length = 32 + len(self.Name.split(",")) + self.GetValidTabLen()
-
- def GetValidTabLen(self):
- validtablen = 0
- for item in self.validtab:
- validtablen += item.Length
- return validtablen
-
- def SetAttributes(self, attributes):
- self.Attributes = attributes
-
- def push_back(self, valid_obj):
- if valid_obj is not None:
- self.validtab.append(valid_obj)
-
- def equal(self, varchecktab):
- if self.Guid == varchecktab.Guid and self.Name == varchecktab.Name:
- return True
- else:
- return False
-
- def merge(self, varchecktab):
- for validobj in varchecktab.validtab:
- if validobj in self.validtab:
- continue
- self.validtab.append(validobj)
- self.UpdateSize()
-
-
-class VAR_CHECK_PCD_VALID_OBJ(object):
- def __init__(self, VarOffset, data, PcdDataType):
- self.Type = 1
- self.Length = 0 # Length include this header
- self.VarOffset = VarOffset
- self.StorageWidth = 0
- self.PcdDataType = PcdDataType.strip()
- self.rawdata = data
- self.data = set()
- self.ValidData = True
- self.updateStorageWidth()
- def updateStorageWidth(self):
- if self.PcdDataType == "UINT8" or self.PcdDataType == "BOOLEAN":
- self.StorageWidth = 1
- elif self.PcdDataType == "UINT16":
- self.StorageWidth = 2
- elif self.PcdDataType == "UINT32":
- self.StorageWidth = 4
- elif self.PcdDataType == "UINT64":
- self.StorageWidth = 8
- else:
- self.StorageWidth = 0
- self.ValidData = False
-
- def __eq__(self, validObj):
- if self.VarOffset == validObj.VarOffset:
- return True
- else:
- return False
-
-class VAR_CHECK_PCD_VALID_LIST(VAR_CHECK_PCD_VALID_OBJ):
- def __init__(self, VarOffset, validlist, PcdDataType):
- super(VAR_CHECK_PCD_VALID_LIST, self).__init__(VarOffset, validlist, PcdDataType)
- self.Type = 1
- self.update_data()
- self.update_size()
- def update_data(self):
- valid_num_list = []
- data_list = []
- for item in self.rawdata:
- valid_num_list.extend(item.split(','))
-
- for valid_num in valid_num_list:
- valid_num = valid_num.strip()
-
- if valid_num.startswith('0x') or valid_num.startswith('0X'):
- data_list.append(int(valid_num, 16))
- else:
- data_list.append(int(valid_num))
-
-
- self.data = set(data_list)
-
- def update_size(self):
- self.Length = 5 + len(self.data) * self.StorageWidth
-
-
-class VAR_CHECK_PCD_VALID_RANGE(VAR_CHECK_PCD_VALID_OBJ):
- def __init__(self, VarOffset, validrange, PcdDataType):
- super(VAR_CHECK_PCD_VALID_RANGE, self).__init__(VarOffset, validrange, PcdDataType)
- self.Type = 2
- self.update_data()
- self.update_size()
- def update_data(self):
- RangeExpr = ""
- data_list = []
- i = 0
- for item in self.rawdata:
- if i == 0:
- RangeExpr = "( " + item + " )"
- else:
- RangeExpr = RangeExpr + "OR ( " + item + " )"
- range_result = RangeExpression(RangeExpr, self.PcdDataType)(True)
- for rangelist in range_result:
- for obj in rangelist.pop():
- data_list.append((obj.start, obj.end))
- self.data = set(data_list)
-
- def update_size(self):
- self.Length = 5 + len(self.data) * 2 * self.StorageWidth
-
-
-class VAR_VALID_OBJECT_FACTORY(object):
- def __init__(self):
- pass
- @staticmethod
- def Get_valid_object(PcdClass, VarOffset):
- if PcdClass.validateranges:
- return VAR_CHECK_PCD_VALID_RANGE(VarOffset, PcdClass.validateranges, PcdClass.DatumType)
- if PcdClass.validlists:
- return VAR_CHECK_PCD_VALID_LIST(VarOffset, PcdClass.validlists, PcdClass.DatumType)
- else:
- return None
-
-if __name__ == "__main__":
- class TestObj(object):
- def __init__(self, number1):
- self.number_1 = number1
- def __eq__(self, testobj):
- if self.number_1 == testobj.number_1:
- return True
- else:
- return False
- test1 = TestObj(1)
- test2 = TestObj(2)
-
- testarr = [test1, test2]
- print TestObj(2) in testarr
- print TestObj(2) == test2
-