4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This file is used to define class objects of INF file [LibraryClasses] section.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# It will consumed by InfParser.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This program and the accompanying materials are licensed and made available
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# under the terms and conditions of the BSD License which accompanies this
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync'''
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncInfLibraryClassesObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync'''
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Logger import StringTable as ST
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Logger import ToolError
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncimport Logger.Log as Logger
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Library import GlobalData
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Library.Misc import Sdict
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Object.Parser.InfCommonObject import CurrentLine
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Library.ExpressionValidate import IsValidFeatureFlagExp
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Library.ParserValidate import IsValidLibName
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## GetArchModuleType
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Get Arch List and ModuleType List
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncdef GetArchModuleType(KeyList):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync __SupArchList = []
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync __SupModuleList = []
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (ArchItem, ModuleItem) in KeyList:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Validate Arch
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (ArchItem == '' or ArchItem == None):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ArchItem = 'COMMON'
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (ModuleItem == '' or ModuleItem == None):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ModuleItem = 'COMMON'
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ArchItem not in __SupArchList:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync __SupArchList.append(ArchItem)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync List = ModuleItem.split('|')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for Entry in List:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if Entry not in __SupModuleList:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync __SupModuleList.append(Entry)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return (__SupArchList, __SupModuleList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncclass InfLibraryClassItem():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def __init__(self, LibName='', FeatureFlagExp='', HelpString=None):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.LibName = LibName
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.FeatureFlagExp = FeatureFlagExp
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.HelpString = HelpString
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.CurrentLine = CurrentLine()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.SupArchList = []
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.SupModuleList = []
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.FileGuid = ''
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Version = ''
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def SetLibName(self, LibName):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.LibName = LibName
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def GetLibName(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.LibName
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def SetHelpString(self, HelpString):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.HelpString = HelpString
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def GetHelpString(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.HelpString
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def SetFeatureFlagExp(self, FeatureFlagExp):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.FeatureFlagExp = FeatureFlagExp
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def GetFeatureFlagExp(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.FeatureFlagExp
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def SetSupArchList(self, SupArchList):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.SupArchList = SupArchList
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def GetSupArchList(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.SupArchList
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def SetSupModuleList(self, SupModuleList):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.SupModuleList = SupModuleList
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def GetSupModuleList(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.SupModuleList
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # As Build related information
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def SetFileGuid(self, FileGuid):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.FileGuid = FileGuid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def GetFileGuid(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.FileGuid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def SetVersion(self, Version):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Version = Version
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def GetVersion(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.Version
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## INF LibraryClass Section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncclass InfLibraryClassObject():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def __init__(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.LibraryClasses = Sdict()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Macro defined in this section should be only used in this section.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Macros = {}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ##SetLibraryClasses
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param HelpString: It can be a common comment or contain a recommend
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def SetLibraryClasses(self, LibContent, KeyList=None):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Validate Arch
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (__SupArchList, __SupModuleList) = GetArchModuleType(KeyList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for LibItem in LibContent:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibItemObj = InfLibraryClassItem()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if not GlobalData.gIS_BINARY_INF:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HelpStringObj = LibItem[1]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibItemObj.CurrentLine.SetFileName(LibItem[2][2])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibItemObj.CurrentLine.SetLineNo(LibItem[2][1])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibItemObj.CurrentLine.SetLineString(LibItem[2][0])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibItem = LibItem[0]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if HelpStringObj != None:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibItemObj.SetHelpString(HelpStringObj)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if len(LibItem) >= 1:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if LibItem[0].strip() != '':
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if IsValidLibName(LibItem[0].strip()):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if LibItem[0].strip() != 'NULL':
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibItemObj.SetLibName(LibItem[0])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Logger.Error("InfParser",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ToolError.FORMAT_INVALID,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ST.ERR_INF_PARSER_DEFINE_LIB_NAME_INVALID,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync File=GlobalData.gINF_MODULE_NAME,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Line=LibItemObj.CurrentLine.GetLineNo(),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ExtraData=LibItemObj.CurrentLine.GetLineString())
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Logger.Error("InfParser",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ToolError.FORMAT_INVALID,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ST.ERR_INF_PARSER_DEFINE_FROMAT_INVALID % (LibItem[0]),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync File=GlobalData.gINF_MODULE_NAME,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Line=LibItemObj.CurrentLine.GetLineNo(),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ExtraData=LibItemObj.CurrentLine.GetLineString())
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Logger.Error("InfParser",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ToolError.FORMAT_INVALID,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ST.ERR_INF_PARSER_LIBRARY_SECTION_LIBNAME_MISSING,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync File=GlobalData.gINF_MODULE_NAME,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Line=LibItemObj.CurrentLine.GetLineNo(),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ExtraData=LibItemObj.CurrentLine.GetLineString())
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if len(LibItem) == 2:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if LibItem[1].strip() == '':
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Logger.Error("InfParser",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ToolError.FORMAT_INVALID,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ST.ERR_INF_PARSER_FEATURE_FLAG_EXP_MISSING,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync File=GlobalData.gINF_MODULE_NAME,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Line=LibItemObj.CurrentLine.GetLineNo(),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ExtraData=LibItemObj.CurrentLine.GetLineString())
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Validate FFE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FeatureFlagRtv = IsValidFeatureFlagExp(LibItem[1].strip())
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if not FeatureFlagRtv[0]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Logger.Error("InfParser",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ToolError.FORMAT_INVALID,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ST.ERR_INF_PARSER_FEATURE_FLAG_EXP_SYNTAX_INVLID % (FeatureFlagRtv[1]),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync File=GlobalData.gINF_MODULE_NAME,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Line=LibItemObj.CurrentLine.GetLineNo(),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ExtraData=LibItemObj.CurrentLine.GetLineString())
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibItemObj.SetFeatureFlagExp(LibItem[1].strip())
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Invalid strings
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if len(LibItem) < 1 or len(LibItem) > 2:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Logger.Error("InfParser",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ToolError.FORMAT_INVALID,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ST.ERR_INF_PARSER_LIBRARY_SECTION_CONTENT_ERROR,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync File=GlobalData.gINF_MODULE_NAME,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Line=LibItemObj.CurrentLine.GetLineNo(),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ExtraData=LibItemObj.CurrentLine.GetLineString())
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibItemObj.SetSupArchList(__SupArchList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibItemObj.SetSupModuleList(__SupModuleList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Determine Library class duplicate. Follow below rule:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # A library class keyword must not be duplicated within a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # [LibraryClasses] section. Library class keywords may appear in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # multiple architectural and module type [LibraryClasses] sections.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # A library class keyword listed in an architectural or module type
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # [LibraryClasses] section must not be listed in the common
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # architectural or module type [LibraryClasses] section.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # NOTE: This check will not report error now. But keep code for future enhancement.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# for Item in self.LibraryClasses:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# if Item.GetLibName() == LibItemObj.GetLibName():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# ItemSupArchList = Item.GetSupArchList()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# ItemSupModuleList = Item.GetSupModuleList()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# for ItemArch in ItemSupArchList:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# for ItemModule in ItemSupModuleList:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# for LibItemObjArch in __SupArchList:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# for LibItemObjModule in __SupModuleList:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# if ItemArch == LibItemObjArch and LibItemObjModule == ItemModule:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# # ERR_INF_PARSER_ITEM_DUPLICATE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# pass
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# if (ItemArch.upper() == 'COMMON' or LibItemObjArch.upper() == 'COMMON') \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# and LibItemObjModule == ItemModule:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# # ERR_INF_PARSER_ITEM_DUPLICATE_COMMON
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# pass
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Assume the file GUID is well formatted.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibItemObj.SetFileGuid(LibItem[0])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibItemObj.SetVersion(LibItem[1])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if self.LibraryClasses.has_key((LibItemObj)):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibraryList = self.LibraryClasses[LibItemObj]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibraryList.append(LibItemObj)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.LibraryClasses[LibItemObj] = LibraryList
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibraryList = []
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LibraryList.append(LibItemObj)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.LibraryClasses[LibItemObj] = LibraryList
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return True
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def GetLibraryClasses(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.LibraryClasses