mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-30 18:53:45 +01:00 
			
		
		
		
	Signed-off-by: lgao4 Reviewed-by: gikidy git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12372 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			747 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			747 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| ## @file
 | |
| # Open an MSA file and load all its contents to a ModuleClass object.
 | |
| #
 | |
| # Copyright (c) 2007, 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.
 | |
| #
 | |
| 
 | |
| ##
 | |
| # Import Modules
 | |
| #
 | |
| import os
 | |
| from CommonDataClass.ModuleClass import *
 | |
| from Common.XmlRoutines import *
 | |
| from Common.MigrationUtilities import *
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Cloned Records.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Cloned Records
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel ClonedRecords        A list of Cloned Records loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleClonedRecords(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/ModuleDefinitions/ClonedFrom/Cloned"
 | |
|     return map(LoadClonedRecord, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| ## Load Module Header.
 | |
| #
 | |
| # Read an input Module XML DOM object and return Module Header class object
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| # @param  MsaFileName          The file path of MSA File.
 | |
| #
 | |
| # @retvel ModuleHeader         A new Module Header object loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleHeader(XmlMsa, MsaFileName):
 | |
|     ModuleHeader = ModuleHeaderClass()
 | |
|     
 | |
|     XmlTag = "ModuleSurfaceArea/MsaHeader"
 | |
|     MsaHeader = XmlNode(XmlMsa, XmlTag)
 | |
|     
 | |
|     SetIdentification(ModuleHeader, MsaHeader, "ModuleName", MsaFileName)
 | |
|     SetCommonHeader(ModuleHeader, MsaHeader)
 | |
| 
 | |
|     XmlTag = "ModuleSurfaceArea/ModuleDefinitions/SupportedArchitectures"
 | |
|     ModuleHeader.SupArchList = XmlElement(XmlMsa, XmlTag).split()
 | |
| 
 | |
|     XmlTag = "ModuleSurfaceArea/ModuleDefinitions/BinaryModule"
 | |
|     if XmlElement(XmlMsa, XmlTag).lower() == "true":
 | |
|         ModuleHeader.BinaryModule = True
 | |
| 
 | |
|     XmlTag = "ModuleSurfaceArea/ModuleDefinitions/OutputFileBasename"
 | |
|     ModuleHeader.OutputFileBasename = XmlElement(XmlMsa, XmlTag)
 | |
|     
 | |
|     XmlTag = "ModuleSurfaceArea/ModuleDefinitions/ClonedForm"
 | |
|     ModuleHeader.ClonedFrom = LoadModuleClonedRecords(XmlMsa)
 | |
| 
 | |
|     XmlTag = "ModuleSurfaceArea/Externs/PcdDriverTypes"
 | |
|     ModuleHeader.PcdIsDriver = XmlElement(XmlMsa, XmlTag)
 | |
|     
 | |
|     XmlTag = "ModuleSurfaceArea/Externs/TianoEdkFlashMap_h"
 | |
|     if XmlElement(XmlMsa, XmlTag).lower() == "true":
 | |
|         ModuleHeader.TianoEdkFlashMap_h = True
 | |
| 
 | |
|     XmlTag = "ModuleSurfaceArea/Externs/Specification"
 | |
|     for Specification in XmlElementList(XmlMsa, XmlTag):
 | |
|         AddToSpecificationDict(ModuleHeader.Specification, Specification)
 | |
|         
 | |
|     return ModuleHeader
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Library Classes.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Library Classes
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel LibraryClasses       A list of Library Classes loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleLibraryClasses(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/LibraryClassDefinitions/LibraryClass"
 | |
|     return map(LoadLibraryClass, XmlList(XmlMsa, XmlTag))
 | |
|     
 | |
| 
 | |
| ## Load a new Module Source class object.
 | |
| #
 | |
| # Read an input XML Source DOM object and return an object of Source
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlFilename          A child XML DOM object in Module XML DOM.
 | |
| #
 | |
| # @retvel ModuleSource         A new Source object created by XmlFilename.
 | |
| #
 | |
| def LoadModuleSource(XmlFilename):
 | |
|     ModuleSource = ModuleSourceFileClass()
 | |
|     
 | |
|     ModuleSource.SourceFile = XmlElementData(XmlFilename)
 | |
| 
 | |
|     XmlTag = "TagName"
 | |
|     ModuleSource.TagName = XmlAttribute(XmlFilename, XmlTag)
 | |
|     
 | |
|     XmlTag = "ToolCode"
 | |
|     ModuleSource.ToolCode = XmlAttribute(XmlFilename, XmlTag)
 | |
|     
 | |
|     XmlTag = "ToolChainFamily"
 | |
|     ModuleSource.ToolChainFamily = XmlAttribute(XmlFilename, XmlTag)
 | |
|     
 | |
|     SetCommon(ModuleSource, XmlFilename)
 | |
|     
 | |
|     return ModuleSource
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Sources.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Sources
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel Sources              A list of Sources loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleSources(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/SourceFiles/Filename"
 | |
|     return map(LoadModuleSource, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| 
 | |
| ## Load a new Module Binary class object.
 | |
| #
 | |
| # Read an input XML Binary DOM object and return an object of Binary
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlFilename          A child XML DOM object in Module XML DOM.
 | |
| #
 | |
| # @retvel ModuleBinary         A new Binary object created by XmlFilename.
 | |
| #
 | |
| def LoadModuleBinary(XmlFilename):
 | |
|     ModuleBinary = ModuleBinaryFileClass()
 | |
|     
 | |
|     ModuleBinary.BinaryFile = XmlElementData(XmlFilename)
 | |
|     
 | |
|     XmlTag = "FileType"
 | |
|     ModuleBinary.FileType = XmlElementAttribute(XmlFilename, XmlTag)
 | |
|     
 | |
|     SetCommon(ModuleBinary, XmlFilename)
 | |
|     
 | |
| 
 | |
| ## Load a list of Module Binaries.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Binaries
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel Binaries             A list of Binaries loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleBinaries(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/BinaryFiles/Filename"
 | |
|     return map(LoadModuleBinary, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Non Processed Files.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Non Processed Files
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel NonProcessedFiles    A list of Non Processed Files loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleNonProcessedFiles(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/NonProcessedFiles/Filename"
 | |
|     return XmlElementList(XmlMsa, XmlTag)
 | |
| 
 | |
| 
 | |
| ## Load a new Module Package Dependency class object.
 | |
| #
 | |
| # Read an input XML PackageDependency DOM object and return an object of Package Dependency
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlPackage              A child XML DOM object in Module XML DOM.
 | |
| #
 | |
| # @retvel ModulePackageDependency A new Package Dependency object created by XmlPackage.
 | |
| #
 | |
| def LoadModulePackageDependency(XmlPackage):
 | |
|     ModulePackageDependency = ModulePackageDependencyClass()
 | |
| 
 | |
|     XmlTag = "PackageGuid"
 | |
|     PackageKey = XmlAttribute(XmlPackage, XmlTag)
 | |
|     
 | |
|     #
 | |
|     #TODO: Add resolution for Package name, package Version
 | |
|     #
 | |
|     ModulePackageDependency.PackageGuid = PackageKey
 | |
|     SetCommon(ModulePackageDependency, XmlPackage)
 | |
| 
 | |
|     return ModulePackageDependency
 | |
|     
 | |
| 
 | |
| ## Load a list of Module Package Dependencies.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Package Dependencies
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel PackageDependencies  A list of Package Dependencies loaded from XmlMsa.
 | |
| #
 | |
| def LoadModulePackageDependencies(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/PackageDependencies/Package"
 | |
|     return map(LoadModulePackageDependency, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Protocols.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Protocols
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel Protocols            A list of Protocols loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleProtocols(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/Protocols/Protocol"
 | |
|     XmlProtocolList = XmlList(XmlMsa, XmlTag)
 | |
| 
 | |
|     XmlTag = "ModuleSurfaceArea/Protocols/ProtocolNotify"
 | |
|     XmlProtocolList += XmlList(XmlMsa, XmlTag)
 | |
| 
 | |
|     return map(LoadGuidProtocolPpiCommon, XmlProtocolList)
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Ppis.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Ppis
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel Ppis                 A list of Ppis loaded from XmlMsa.
 | |
| #
 | |
| def LoadModulePpis(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/PPIs/Ppi"
 | |
|     XmlPpiList = XmlList(XmlMsa, XmlTag)
 | |
|     
 | |
|     XmlTag = "ModuleSurfaceArea/PPIs/PpiNotify"
 | |
|     XmlPpiList += XmlList(XmlMsa, XmlTag)
 | |
|     
 | |
|     return map(LoadGuidProtocolPpiCommon, XmlPpiList)
 | |
| 
 | |
| 
 | |
| ## Load a new Module Event class object.
 | |
| #
 | |
| # Read an input XML Event DOM object and return an object of Event
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlEvent             A child XML DOM object in Module XML DOM.
 | |
| # @param  Type                 Specify the event type: SIGNAL_EVENT or CREATE_EVENT.
 | |
| #
 | |
| # @retvel ModuleEvent          A new Event object created by XmlEvent.
 | |
| #
 | |
| def LoadModuleEvent(XmlEvent, Type):
 | |
|     ModuleEvent = ModuleEventClass()
 | |
|     
 | |
|     XmlTag = "EventTypes/EventType"
 | |
|     ModuleEvent.CName = XmlElement(XmlEvent, XmlTag)
 | |
|     
 | |
|     XmlTag = "EventGuidCName"
 | |
|     ModuleEvent.GuidCName = XmlAttribute(XmlEvent, XmlTag)
 | |
|     
 | |
|     ModuleEvent.Type = Type
 | |
|     
 | |
|     SetCommon(ModuleEvent, XmlEvent)
 | |
|     
 | |
|     return ModuleEvent
 | |
|     
 | |
| 
 | |
| ## Load a list of Module Events.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Events
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel Events               A list of Events loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleEvents(XmlMsa):
 | |
|     ModuleEvents = []
 | |
|     
 | |
|     XmlTag = "ModuleSurfaceArea/Events/CreateEvents/EventTypes"
 | |
|     for XmlCreateEvent in XmlList(XmlMsa, XmlTag):
 | |
|         ModuleEvent = LoadModuleEvent(XmlCreateEvent, "CREATE_EVENT")
 | |
|         ModuleEvents.append(ModuleEvent)
 | |
| 
 | |
|     XmlTag = "ModuleSurfaceArea/Events/SignalEvents/EventTypes"
 | |
|     for XmlCreateEvent in XmlList(XmlMsa, XmlTag):
 | |
|         ModuleEvent = LoadModuleEvent(XmlCreateEvent, "SIGNAL_EVENT")
 | |
|         ModuleEvents.append(ModuleEvent)
 | |
| 
 | |
|     return ModuleEvents
 | |
| 
 | |
| 
 | |
| ## Load a new Module Hob class object.
 | |
| #
 | |
| # Read an input XML Hob DOM object and return an object of Hob
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlHob               A child XML DOM object in Module XML DOM.
 | |
| #
 | |
| # @retvel ModuleHob            A new Hob object created by XmlHob.
 | |
| #
 | |
| def LoadModuleHob(XmlHob):
 | |
|     ModuleHob = ModuleHobClass()
 | |
|     
 | |
|     XmlTag = "HobTypes/HobType"
 | |
|     ModuleHob.Type = XmlElement(XmlHob, XmlTag)
 | |
|     
 | |
|     XmlTag = "HobGuidCName"
 | |
|     ModuleHob.GuidCName = XmlAttribute(XmlHob, XmlTag)
 | |
|     
 | |
|     SetCommon(ModuleHob, XmlHob)
 | |
|     
 | |
|     return ModuleHob
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Hobs.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Hobs
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel Hobs                 A list of Hobs loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleHobs(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/Hobs/HobTypes"
 | |
|     return map(LoadModuleHob, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| 
 | |
| ## Load a new Module Variable class object.
 | |
| #
 | |
| # Read an input XML Variable DOM object and return an object of Variable
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlVariable          A child XML DOM object in Module XML DOM.
 | |
| #
 | |
| # @retvel ModuleVariable       A new Variable object created by XmlVariable.
 | |
| #
 | |
| def LoadModuleVariable(XmlVariable):
 | |
|     ModuleVariable = ModuleVariableClass()
 | |
|     
 | |
|     XmlTag = "Variable/VariableName"
 | |
|     HexWordArray = XmlElement(XmlVariable, XmlTag).split()
 | |
|     try:
 | |
|         ModuleVariable.Name = "".join([unichr(int(a, 16)) for a in HexWordArray])
 | |
|     except:
 | |
|         ModuleVariable.Name = ""
 | |
|         
 | |
|     XmlTag = "Variable/GuidC_Name"
 | |
|     ModuleVariable.GuidCName = XmlElement(XmlVariable, XmlTag)
 | |
|     
 | |
|     SetCommon(ModuleVariable, XmlVariable)
 | |
|     
 | |
|     return ModuleVariable
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Variables.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Variables
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel Variables            A list of Variables loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleVariables(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/Variables/Variable"
 | |
|     return map(LoadModuleVariable, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| 
 | |
| ## Load a new Module Boot Mode class object.
 | |
| #
 | |
| # Read an input XML BootMode DOM object and return an object of Boot Mode
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlBootMode          A child XML DOM object in Module XML DOM.
 | |
| #
 | |
| # @retvel ModuleBootMode       A new Boot Mode object created by XmlBootMode.
 | |
| #
 | |
| def LoadModuleBootMode(XmlBootMode):
 | |
|     ModuleBootMode = ModuleBootModeClass()
 | |
|     
 | |
|     XmlTag = "BootModeName"
 | |
|     ModuleBootMode.Name = XmlAttribute(XmlBootMode, XmlTag)
 | |
|     
 | |
|     SetCommon(ModuleBootMode, XmlBootMode)
 | |
|     
 | |
|     return ModuleBootMode
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Boot Modes.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Boot Modes
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel BootModes            A list of Boot Modes loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleBootModes(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/BootModes/BootMode"
 | |
|     return map(LoadModuleBootMode, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| 
 | |
| ## Load a new Module System Table class object.
 | |
| #
 | |
| # Read an input XML SystemTable DOM object and return an object of System Table
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlSystemTable       A child XML DOM object in Module XML DOM.
 | |
| #
 | |
| # @retvel ModuleSystemTable    A new System Table object created by XmlSystemTable.
 | |
| #
 | |
| def LoadModuleSystemTable(XmlSystemTable):
 | |
|     ModuleSystemTable = ModuleSystemTableClass()
 | |
|     
 | |
|     XmlTag = "SystemTable/SystemTableCName"
 | |
|     ModuleSystemTable.CName = XmlElement(XmlSystemTable, XmlTag)
 | |
|     
 | |
|     SetCommon(ModuleSystemTable, XmlSystemTable)
 | |
|     
 | |
|     return ModuleSystemTable
 | |
|     
 | |
| 
 | |
| ## Load a list of Module System Tables.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of System Tables
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel SystemTables         A list of System Tables loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleSystemTables(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/SystemTables/SystemTableCNames"
 | |
|     return map(LoadModuleSystemTable, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| 
 | |
| ## Load a new Module Data Hub class object.
 | |
| #
 | |
| # Read an input XML DataHub DOM object and return an object of Data Hub
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlDataHub           A child XML DOM object in Module XML DOM.
 | |
| #
 | |
| # @retvel ModuleDataHub        A new Data Hub object created by XmlDataHub.
 | |
| #
 | |
| def LoadModuleDataHub(XmlDataHub):
 | |
|     ModuleDataHub = ModuleDataHubClass()
 | |
|     
 | |
|     XmlTag = "DataHub/DataHubCName"
 | |
|     ModuleDataHub.CName = XmlElement(XmlDataHub, "DataHubCName")
 | |
|     
 | |
|     SetCommon(ModuleDataHub, XmlDataHub)
 | |
| 
 | |
|     return ModuleDataHub
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Data Hubs.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Data Hubs
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel DataHubs             A list of Data Hubs loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleDataHubs(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/DataHubs/DataHubRecord"
 | |
|     return map(LoadModuleDataHub, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| 
 | |
| ## Load a new Module Hii Package class object.
 | |
| #
 | |
| # Read an input XML HiiPackage DOM object and return an object of Hii Package
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlHiiPackage        A child XML DOM object in Module XML DOM.
 | |
| #
 | |
| # @retvel ModuleHiiPackage     A new Hii Package object created by XmlHiiPackage.
 | |
| #
 | |
| def LoadModuleHiiPackage(XmlHiiPackage):
 | |
|     ModuleHiiPackage = ModuleHiiPackageClass()
 | |
| 
 | |
|     XmlTag = "HiiPackage/HiiPackageCName"
 | |
|     ModuleHiiPackage.CName = XmlElement(XmlHiiPackage, "HiiCName")
 | |
| 
 | |
|     SetCommon(ModuleHiiPackage, XmlHiiPackage)
 | |
| 
 | |
|     return ModuleHiiPackage
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Hii Packages.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Hii Packages
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel HiiPackages          A list of Hii Packages loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleHiiPackages(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/HiiPackages/HiiPackage"
 | |
|     return map(LoadModuleHiiPackage, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Guids.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Guids
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel Guids                A list of Guids loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleGuids(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/Guids/GuidCNames"
 | |
|     return map(LoadGuidProtocolPpiCommon, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Pcd Codes.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Pcd Codes
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel PcdCodes             A list of Pcd Codes loaded from XmlMsa.
 | |
| #
 | |
| def LoadModulePcdCodes(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/PcdCoded/PcdEntry"
 | |
|     return map(LoadPcd, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Extern Images.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Extern Images
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel ExternImages         A list of Extern Images loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleExternImages(XmlMsa):
 | |
|     ModuleExternImages = []
 | |
|     
 | |
|     XmlTag = "ModuleSurfaceArea/Externs/Extern"
 | |
|     for XmlExtern in XmlList(XmlMsa, XmlTag):
 | |
|         XmlTag = "Extern/ModuleEntryPoint"
 | |
|         ModuleEntryPoint = XmlElement(XmlExtern, XmlTag)
 | |
|         XmlTag = "Extern/ModuleUnloadImage"
 | |
|         ModuleUnloadImage = XmlElement(XmlExtern, XmlTag)
 | |
|         if ModuleEntryPoint == "" and ModuleUnloadImage == "":
 | |
|             continue
 | |
| 
 | |
|         ModuleExtern = ModuleExternImageClass()
 | |
|         ModuleExtern.ModuleEntryPoint = ModuleEntryPoint
 | |
|         ModuleExtern.ModuleUnloadImage = ModuleUnloadImage
 | |
|         ModuleExternImages.append(ModuleExtern)
 | |
| 
 | |
|     return ModuleExternImages
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Extern Libraries.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Extern Libraries
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel ExternLibraries      A list of Extern Libraries loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleExternLibraries(XmlMsa):
 | |
|     ModuleExternLibraries = []
 | |
|     
 | |
|     XmlTag = "ModuleSurfaceArea/Externs/Extern"
 | |
|     for XmlExtern in XmlList(XmlMsa, XmlTag):
 | |
|         XmlTag = "Extern/Constructor"
 | |
|         Constructor = XmlElement(XmlExtern, XmlTag)
 | |
|         XmlTag = "Extern/Destructor"
 | |
|         Destructor = XmlElement(XmlExtern, XmlTag)
 | |
|         if Constructor == "" and Destructor == "":
 | |
|             continue
 | |
|         
 | |
|         ModuleExtern = ModuleExternLibraryClass()
 | |
|         ModuleExtern.Constructor = Constructor
 | |
|         ModuleExtern.Destructor = Destructor
 | |
|         ModuleExternLibraries.append(ModuleExtern)
 | |
| 
 | |
|     return ModuleExternLibraries
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Extern Drivers.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Extern Drivers
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel ExternDrivers        A list of Extern Drivers loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleExternDrivers(XmlMsa):
 | |
|     ModuleExternDrivers = []
 | |
|     
 | |
|     XmlTag = "ModuleSurfaceArea/Externs/Extern"
 | |
|     for XmlExtern in XmlList(XmlMsa, XmlTag):
 | |
|         XmlTag = "Extern/DriverBinding"
 | |
|         DriverBinding = XmlElement(XmlExtern, XmlTag)
 | |
|         XmlTag = "Extern/ComponentName"
 | |
|         ComponentName = XmlElement(XmlExtern, XmlTag)
 | |
|         XmlTag = "Extern/DriverConfig"
 | |
|         DriverConfig = XmlElement(XmlExtern, XmlTag)
 | |
|         XmlTag = "Extern/DriverDiag"
 | |
|         DriverDiag = XmlElement(XmlExtern, XmlTag)
 | |
|         if DriverBinding == "":
 | |
|             continue
 | |
|         
 | |
|         ModuleExtern = ModuleExternDriverClass()
 | |
|         ModuleExtern.DriverBinding = DriverBinding
 | |
|         ModuleExtern.ComponentName = ComponentName
 | |
|         ModuleExtern.DriverConfig = DriverConfig
 | |
|         ModuleExtern.DriverDiag = DriverDiag
 | |
|         ModuleExternDrivers.append(ModuleExtern)
 | |
| 
 | |
|     return ModuleExternDrivers
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Extern Call Backs.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Extern Call Backs
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel ExternCallBacks      A list of Extern Call Backs loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleExternCallBacks(XmlMsa):
 | |
|     ModuleExternCallBacks = []
 | |
|     
 | |
|     XmlTag = "ModuleSurfaceArea/Externs/Extern"
 | |
|     for XmlExtern in XmlList(XmlMsa, XmlTag):
 | |
|         XmlTag = "Extern/SetVirtualAddressMapCallBack"
 | |
|         SetVirtualAddressMap = XmlElement(XmlExtern, XmlTag)
 | |
|         XmlTag = "Extern/ExitBootServicesCallBack"
 | |
|         ExitBootServices = XmlElement(XmlExtern, XmlTag)
 | |
|         if SetVirtualAddressMap == "" and ExitBootServices == "":
 | |
|             continue
 | |
|         
 | |
|         ModuleExtern = ModuleExternCallBackClass()
 | |
|         ModuleExtern.ExitBootServicesCallBack = ExitBootServices
 | |
|         ModuleExtern.SetVirtualAddressMapCallBack = SetVirtualAddressMap
 | |
|         ModuleExternCallBacks.append(ModuleExtern)
 | |
| 
 | |
|     return ModuleExternCallBacks
 | |
| 
 | |
| 
 | |
| ## Load a list of Module Build Options.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of Build Options
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel BuildOptions         A list of Build Options loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleBuildOptions(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/ModuleBuildOptions/Options/Option"
 | |
|     return map(LoadBuildOption, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| 
 | |
| ## Load a list of Module User Extensions.
 | |
| #
 | |
| # Read an input Module XML DOM object and return a list of User Extensions
 | |
| # contained in the DOM object.
 | |
| #
 | |
| # @param  XmlMsa               An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel UserExtensions       A list of User Extensions loaded from XmlMsa.
 | |
| #
 | |
| def LoadModuleUserExtensions(XmlMsa):
 | |
|     XmlTag = "ModuleSurfaceArea/UserExtensions"
 | |
|     return map(LoadUserExtensions, XmlList(XmlMsa, XmlTag))
 | |
| 
 | |
| ## Load a new Module class object.
 | |
| #
 | |
| # Read an input MSA File and return a new Module class Object.
 | |
| #
 | |
| # @param  MsaFileName          An XML DOM object read from MSA file.
 | |
| #
 | |
| # @retvel Module               A new Module class object loaded from MSA File.
 | |
| #
 | |
| def LoadMsa(MsaFileName):
 | |
|     XmlMsa = XmlParseFile(MsaFileName)
 | |
|     EdkLogger.verbose("Load MSA File: %s" % MsaFileName)
 | |
|     
 | |
|     Module = ModuleClass()
 | |
|     Module.Header = LoadModuleHeader(XmlMsa, MsaFileName)
 | |
|     Module.LibraryClasses = LoadModuleLibraryClasses(XmlMsa)
 | |
|     Module.Sources = LoadModuleSources(XmlMsa)
 | |
|     Module.BinaryFiles = LoadModuleBinaries(XmlMsa)
 | |
|     Module.NonProcessedFiles = LoadModuleNonProcessedFiles(XmlMsa)
 | |
|     Module.PackageDependencies = LoadModulePackageDependencies(XmlMsa)
 | |
|     Module.Protocols = LoadModuleProtocols(XmlMsa)
 | |
|     Module.Ppis = LoadModulePpis(XmlMsa)
 | |
|     Module.Events = LoadModuleEvents(XmlMsa)
 | |
|     Module.Hobs = LoadModuleHobs(XmlMsa)
 | |
|     Module.Variables = LoadModuleVariables(XmlMsa)
 | |
|     Module.BootModes = LoadModuleBootModes(XmlMsa)
 | |
|     Module.SystemTables = LoadModuleSystemTables(XmlMsa)
 | |
|     Module.DataHubs = LoadModuleDataHubs(XmlMsa)
 | |
|     Module.HiiPackages = LoadModuleHiiPackages(XmlMsa)
 | |
|     Module.Guids = LoadModuleGuids(XmlMsa)
 | |
|     Module.PcdCodes = LoadModulePcdCodes(XmlMsa)
 | |
|     Module.ExternImages = LoadModuleExternImages(XmlMsa)
 | |
|     Module.ExternLibraries = LoadModuleExternLibraries(XmlMsa)
 | |
|     Module.ExternDrivers = LoadModuleExternDrivers(XmlMsa)
 | |
|     Module.ExternCallBacks = LoadModuleExternCallBacks(XmlMsa)
 | |
|     Module.BuildOptions = LoadModuleBuildOptions(XmlMsa)
 | |
|     Module.UserExtensions = LoadModuleUserExtensions(XmlMsa)
 | |
|     
 | |
|     return Module
 | |
| 
 | |
| 
 | |
| # This acts like the main() function for the script, unless it is 'import'ed
 | |
| # into another script.
 | |
| if __name__ == '__main__':
 | |
|     pass |