X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=BaseTools%2FSource%2FPython%2FAutoGen%2FValidCheckingInfoObject.py;h=92c8fe2df904cd73b582fecfa2dc6896a0c6aecc;hb=1549328f5f48c657137c3ead96f2ad3586713a33;hp=4a6e031053c64fecc96d34358126b5bf222d1bb2;hpb=82a6a9605c35f814bd6187979980258ed1b75abd;p=mirror_edk2.git diff --git a/BaseTools/Source/Python/AutoGen/ValidCheckingInfoObject.py b/BaseTools/Source/Python/AutoGen/ValidCheckingInfoObject.py index 4a6e031053..92c8fe2df9 100644 --- a/BaseTools/Source/Python/AutoGen/ValidCheckingInfoObject.py +++ b/BaseTools/Source/Python/AutoGen/ValidCheckingInfoObject.py @@ -1,4 +1,4 @@ -# Copyright (c) 2015, Intel Corporation. All rights reserved.
+# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.
# 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 @@ -19,6 +19,7 @@ from Common.RangeExpression import RangeExpression from Common.Misc import * from StringIO import StringIO from struct import pack +from Common.DataType import * class VAR_CHECK_PCD_VARIABLE_TAB_CONTAINER(object): def __init__(self): @@ -31,7 +32,7 @@ class VAR_CHECK_PCD_VARIABLE_TAB_CONTAINER(object): break else: self.var_check_info.append(var_check_tab) - + def dump(self, dest, Phase): FormatMap = {} @@ -62,7 +63,7 @@ class VAR_CHECK_PCD_VARIABLE_TAB_CONTAINER(object): itemIndex += 1 realLength += 5 for v_data in item.data: - if type(v_data) == type(1): + if type(v_data) in (int, long): realLength += item.StorageWidth else: realLength += item.StorageWidth @@ -153,9 +154,8 @@ class VAR_CHECK_PCD_VARIABLE_TAB_CONTAINER(object): b = pack("=B", item.StorageWidth) Buffer += b realLength += 1 - for v_data in item.data: - if type(v_data) == type(1): + if type(v_data) in (int, long): b = pack(FormatMap[item.StorageWidth], v_data) Buffer += b realLength += item.StorageWidth @@ -244,40 +244,24 @@ class VAR_CHECK_PCD_VALID_OBJ(object): 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: + try: + self.StorageWidth = MAX_SIZE_TYPE[self.PcdDataType] + self.ValidData = True + except: self.StorageWidth = 0 self.ValidData = False def __eq__(self, validObj): - if self.VarOffset == validObj.VarOffset: - return True - else: - return False + return validObj and self.VarOffset == validObj.VarOffset 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(',')) @@ -285,14 +269,11 @@ class VAR_CHECK_PCD_VALID_LIST(VAR_CHECK_PCD_VALID_OBJ): valid_num = valid_num.strip() if valid_num.startswith('0x') or valid_num.startswith('0X'): - data_list.append(int(valid_num, 16)) + self.data.add(int(valid_num, 16)) else: - data_list.append(int(valid_num)) + self.data.add(int(valid_num)) - self.data = set(data_list) - - def update_size(self): self.Length = 5 + len(self.data) * self.StorageWidth @@ -300,11 +281,7 @@ 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: @@ -314,38 +291,14 @@ class VAR_CHECK_PCD_VALID_RANGE(VAR_CHECK_PCD_VALID_OBJ): 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.data.add((obj.start, obj.end)) 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 - +def GetValidationObject(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