def __init__(self, DecFile, Parse=True): try: Content = ConvertSpecialChar(open(DecFile, 'rb').readlines()) except BaseException: Logger.Error(TOOL_NAME, FILE_OPEN_FAILURE, File=DecFile, ExtraData=ST.ERR_DECPARSE_FILEOPEN % DecFile) RawData = FileContent(DecFile, Content) _DecComments.__init__(self) _DecBase.__init__(self, RawData) self.BinaryHeadComment = [] self.PcdErrorCommentDict = {} self._Define = _DecDefine(RawData) self._Include = _DecInclude(RawData) self._Guid = _DecGuid(RawData) self._LibClass = _DecLibraryclass(RawData) self._Pcd = _DecPcd(RawData) self._UserEx = _DecUserExtension(RawData) # # DEC file supported data types (one type per section) # self._SectionParser = { DT.TAB_DEC_DEFINES.upper(): self._Define, DT.TAB_INCLUDES.upper(): self._Include, DT.TAB_LIBRARY_CLASSES.upper(): self._LibClass, DT.TAB_GUIDS.upper(): self._Guid, DT.TAB_PPIS.upper(): self._Guid, DT.TAB_PROTOCOLS.upper(): self._Guid, DT.TAB_PCDS_FIXED_AT_BUILD_NULL.upper(): self._Pcd, DT.TAB_PCDS_PATCHABLE_IN_MODULE_NULL.upper(): self._Pcd, DT.TAB_PCDS_FEATURE_FLAG_NULL.upper(): self._Pcd, DT.TAB_PCDS_DYNAMIC_NULL.upper(): self._Pcd, DT.TAB_PCDS_DYNAMIC_EX_NULL.upper(): self._Pcd, DT.TAB_USER_EXTENSIONS.upper(): self._UserEx } if Parse: self.ParseDecComment() self.Parse() # # Parsing done, check required fields # self.CheckRequiredFields()
def __init__(self, DecFile, Parse = True): try: Content = ConvertSpecialChar(open(DecFile, 'r').readlines()) except BaseException: Logger.Error(TOOL_NAME, FILE_OPEN_FAILURE, File=DecFile, ExtraData=ST.ERR_DECPARSE_FILEOPEN % DecFile) # # Pre-parser for Private section # self._Private = '' __IsFoundPrivate = False NewContent = [] for Line in Content: Line = Line.strip() if Line.startswith(DT.TAB_SECTION_START) and Line.endswith(DT.TAB_PRIVATE + DT.TAB_SECTION_END): __IsFoundPrivate = True if Line.startswith(DT.TAB_SECTION_START) and Line.endswith(DT.TAB_SECTION_END)\ and not Line.endswith(DT.TAB_PRIVATE + DT.TAB_SECTION_END): __IsFoundPrivate = False if __IsFoundPrivate: self._Private += Line + '\r' if not __IsFoundPrivate: NewContent.append(Line + '\r') RawData = FileContent(DecFile, NewContent) _DecComments.__init__(self) _DecBase.__init__(self, RawData) self.BinaryHeadComment = [] self.PcdErrorCommentDict = {} self._Define = _DecDefine(RawData) self._Include = _DecInclude(RawData) self._Guid = _DecGuid(RawData) self._LibClass = _DecLibraryclass(RawData) self._Pcd = _DecPcd(RawData) self._UserEx = _DecUserExtension(RawData) # # DEC file supported data types (one type per section) # self._SectionParser = { DT.TAB_DEC_DEFINES.upper() : self._Define, DT.TAB_INCLUDES.upper() : self._Include, DT.TAB_LIBRARY_CLASSES.upper() : self._LibClass, DT.TAB_GUIDS.upper() : self._Guid, DT.TAB_PPIS.upper() : self._Guid, DT.TAB_PROTOCOLS.upper() : self._Guid, DT.TAB_PCDS_FIXED_AT_BUILD_NULL.upper() : self._Pcd, DT.TAB_PCDS_PATCHABLE_IN_MODULE_NULL.upper() : self._Pcd, DT.TAB_PCDS_FEATURE_FLAG_NULL.upper() : self._Pcd, DT.TAB_PCDS_DYNAMIC_NULL.upper() : self._Pcd, DT.TAB_PCDS_DYNAMIC_EX_NULL.upper() : self._Pcd, DT.TAB_USER_EXTENSIONS.upper() : self._UserEx } if Parse: self.ParseDecComment() self.Parse() # # Parsing done, check required fields # self.CheckRequiredFields()