BaseTools: AutoGen - refactor more functions only called in __init__

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>
This commit is contained in:
Carsey, Jaben 2018-04-28 06:32:43 +08:00 committed by Yonghong Zhu
parent 1549328f5f
commit cb7e6aa77a
1 changed files with 40 additions and 49 deletions

View File

@ -66,61 +66,52 @@ EFI_HII_PACKAGE_TYPE_SYSTEM_END = 0xFF
class IdfFileClassObject(object): class IdfFileClassObject(object):
def __init__(self, FileList = []): def __init__(self, FileList = []):
self.FileList = FileList
self.ImageFilesDict = {} self.ImageFilesDict = {}
self.ImageIDList = [] self.ImageIDList = []
if len(self.FileList) > 0: for File in FileList:
self.LoadIdfFiles(FileList) if File is None:
EdkLogger.error("Image Definition File Parser", PARSER_ERROR, 'No Image definition file is given.')
self.File = File
def LoadIdfFiles(self, FileList): try:
if len(FileList) > 0: IdfFile = open(LongFilePath(File.Path), mode='r')
for File in FileList: FileIn = IdfFile.read()
self.LoadIdfFile(File) IdfFile.close()
except:
EdkLogger.error("build", FILE_OPEN_FAILURE, ExtraData=File)
def LoadIdfFile(self, File = None): ImageFileList = []
if File is None: for Line in FileIn.splitlines():
EdkLogger.error("Image Definition File Parser", PARSER_ERROR, 'No Image definition file is given.') Line = Line.strip()
self.File = File Line = StripComments(Line)
if len(Line) == 0:
continue
try: LineNo = GetLineNo(FileIn, Line, False)
IdfFile = open(LongFilePath(File.Path), mode='r') if not Line.startswith('#image '):
FileIn = IdfFile.read() EdkLogger.error("Image Definition File Parser", PARSER_ERROR, 'The %s in Line %s of File %s is invalid.' % (Line, LineNo, File.Path))
IdfFile.close()
except:
EdkLogger.error("build", FILE_OPEN_FAILURE, ExtraData=File)
ImageFileList = [] if Line.find('#image ') >= 0:
for Line in FileIn.splitlines(): LineDetails = Line.split()
Line = Line.strip() Len = len(LineDetails)
Line = StripComments(Line) if Len != 3 and Len != 4:
if len(Line) == 0: EdkLogger.error("Image Definition File Parser", PARSER_ERROR, 'The format is not match #image IMAGE_ID [TRANSPARENT] ImageFileName in Line %s of File %s.' % (LineNo, File.Path))
continue if Len == 4 and LineDetails[2] != 'TRANSPARENT':
EdkLogger.error("Image Definition File Parser", PARSER_ERROR, 'Please use the keyword "TRANSPARENT" to describe the transparency setting in Line %s of File %s.' % (LineNo, File.Path))
LineNo = GetLineNo(FileIn, Line, False) MatchString = gIdentifierPattern.match(LineDetails[1])
if not Line.startswith('#image '): if MatchString is None:
EdkLogger.error("Image Definition File Parser", PARSER_ERROR, 'The %s in Line %s of File %s is invalid.' % (Line, LineNo, File.Path)) EdkLogger.error('Image Definition File Parser', FORMAT_INVALID, 'The Image token name %s defined in Idf file %s contains the invalid character.' % (LineDetails[1], File.Path))
if LineDetails[1] not in self.ImageIDList:
if Line.find('#image ') >= 0: self.ImageIDList.append(LineDetails[1])
LineDetails = Line.split() else:
Len = len(LineDetails) EdkLogger.error("Image Definition File Parser", PARSER_ERROR, 'The %s in Line %s of File %s is already defined.' % (LineDetails[1], LineNo, File.Path))
if Len != 3 and Len != 4: if Len == 4:
EdkLogger.error("Image Definition File Parser", PARSER_ERROR, 'The format is not match #image IMAGE_ID [TRANSPARENT] ImageFileName in Line %s of File %s.' % (LineNo, File.Path)) ImageFile = ImageFileObject(LineDetails[Len-1], LineDetails[1], True)
if Len == 4 and LineDetails[2] != 'TRANSPARENT': else:
EdkLogger.error("Image Definition File Parser", PARSER_ERROR, 'Please use the keyword "TRANSPARENT" to describe the transparency setting in Line %s of File %s.' % (LineNo, File.Path)) ImageFile = ImageFileObject(LineDetails[Len-1], LineDetails[1], False)
MatchString = gIdentifierPattern.match(LineDetails[1]) ImageFileList.append(ImageFile)
if MatchString is None: if ImageFileList:
EdkLogger.error('Image Definition File Parser', FORMAT_INVALID, 'The Image token name %s defined in Idf file %s contains the invalid character.' % (LineDetails[1], File.Path)) self.ImageFilesDict[File] = ImageFileList
if LineDetails[1] not in self.ImageIDList:
self.ImageIDList.append(LineDetails[1])
else:
EdkLogger.error("Image Definition File Parser", PARSER_ERROR, 'The %s in Line %s of File %s is already defined.' % (LineDetails[1], LineNo, File.Path))
if Len == 4:
ImageFile = ImageFileObject(LineDetails[Len-1], LineDetails[1], True)
else:
ImageFile = ImageFileObject(LineDetails[Len-1], LineDetails[1], False)
ImageFileList.append(ImageFile)
if ImageFileList:
self.ImageFilesDict[File] = ImageFileList
def SearchImageID(ImageFileObject, FileList): def SearchImageID(ImageFileObject, FileList):
if FileList == []: if FileList == []: