def ToXml(self, Module): if self.Package: pass # # Create root node of module surface area # DomModule = minidom.Document().createElement('ModuleSurfaceArea') if Module.GetBinaryModule(): DomModule.setAttribute('BinaryModule', 'true') # # Header # Tmp = HeaderXml() DomModule.appendChild(Tmp.ToXml(Module, 'Header')) # # ModuleProperties # Tmp = ModulePropertyXml() DomModule.appendChild(Tmp.ToXml(Module, Module.GetBootModeList(), Module.GetEventList(), Module.GetHobList(), \ 'ModuleProperties')) # # ClonedFrom # Tmp = ClonedFromXml() if Module.GetClonedFrom(): DomModule.appendChild( Tmp.ToXml(Module.GetClonedFrom(), 'ClonedFrom')) # # LibraryClass # LibraryClassNode = CreateXmlElement('LibraryClassDefinitions', '', [], []) for LibraryClass in Module.GetLibraryClassList(): Tmp = LibraryClassXml() LibraryClassNode.appendChild( Tmp.ToXml2(LibraryClass, 'LibraryClass')) DomModule.appendChild(LibraryClassNode) # # SourceFile # SourceFileNode = CreateXmlElement('SourceFiles', '', [], []) for SourceFile in Module.GetSourceFileList(): Tmp = SourceFileXml() SourceFileNode.appendChild(Tmp.ToXml(SourceFile, 'Filename')) DomModule.appendChild(SourceFileNode) # # BinaryFile # BinaryFileNode = CreateXmlElement('BinaryFiles', '', [], []) for BinaryFile in Module.GetBinaryFileList(): Tmp = BinaryFileXml() BinaryFileNode.appendChild(Tmp.ToXml(BinaryFile, 'BinaryFile')) DomModule.appendChild(BinaryFileNode) # # PackageDependencies # PackageDependencyNode = CreateXmlElement('PackageDependencies', '', [], []) for PackageDependency in Module.GetPackageDependencyList(): Tmp = PackageXml() PackageDependencyNode.appendChild( Tmp.ToXml(PackageDependency, 'Package')) DomModule.appendChild(PackageDependencyNode) # # Guid # GuidProtocolPpiNode = CreateXmlElement('Guids', '', [], []) for GuidProtocolPpi in Module.GetGuidList(): Tmp = GuidXml('Module') GuidProtocolPpiNode.appendChild( Tmp.ToXml(GuidProtocolPpi, 'GuidCName')) DomModule.appendChild(GuidProtocolPpiNode) # # Protocol # GuidProtocolPpiNode = CreateXmlElement('Protocols', '', [], []) for GuidProtocolPpi in Module.GetProtocolList(): Tmp = ProtocolXml('Module') GuidProtocolPpiNode.appendChild( Tmp.ToXml(GuidProtocolPpi, 'Protocol')) DomModule.appendChild(GuidProtocolPpiNode) # # Ppi # GuidProtocolPpiNode = CreateXmlElement('PPIs', '', [], []) for GuidProtocolPpi in Module.GetPpiList(): Tmp = PpiXml('Module') GuidProtocolPpiNode.appendChild(Tmp.ToXml(GuidProtocolPpi, 'Ppi')) DomModule.appendChild(GuidProtocolPpiNode) # # Extern # ExternNode = CreateXmlElement('Externs', '', [], []) for Extern in Module.GetExternList(): Tmp = ExternXml() ExternNode.appendChild(Tmp.ToXml(Extern, 'Extern')) DomModule.appendChild(ExternNode) # # PcdCoded # PcdEntryNode = CreateXmlElement('PcdCoded', '', [], []) for PcdEntry in Module.GetPcdList(): Tmp = PcdEntryXml() PcdEntryNode.appendChild(Tmp.ToXml3(PcdEntry, 'PcdEntry')) DomModule.appendChild(PcdEntryNode) # # PeiDepex # if Module.GetPeiDepex(): for Item in Module.GetPeiDepex(): Tmp = DepexXml() DomModule.appendChild(Tmp.ToXml(Item, 'PeiDepex')) # # DxeDepex # if Module.GetDxeDepex(): for Item in Module.GetDxeDepex(): Tmp = DepexXml() DomModule.appendChild(Tmp.ToXml(Item, 'DxeDepex')) # # SmmDepex # if Module.GetSmmDepex(): for Item in Module.GetSmmDepex(): Tmp = DepexXml() DomModule.appendChild(Tmp.ToXml(Item, 'SmmDepex')) # # MiscellaneousFile # if Module.GetMiscFileList(): Tmp = MiscellaneousFileXml() DomModule.appendChild( Tmp.ToXml(Module.GetMiscFileList()[0], 'MiscellaneousFiles')) # # UserExtensions # if Module.GetUserExtensionList(): for UserExtension in Module.GetUserExtensionList(): Tmp = UserExtensionsXml() DomModule.appendChild( Tmp.ToXml(UserExtension, 'UserExtensions')) return DomModule
def FromXml(self, Item, Key, IsStandAlongModule=False): IsBinaryModule = XmlAttribute(Item, 'BinaryModule') # # Header # Tmp = HeaderXml() Module = Tmp.FromXml(XmlNode(Item, '/%s/Header' % Key), 'Header', True, IsStandAlongModule) Module.SetBinaryModule(IsBinaryModule) if IsBinaryModule: GlobalData.gIS_BINARY_INF = True # # ModuleProperties # Tmp = ModulePropertyXml() (Module, BootModes, Events, HOBs) = \ Tmp.FromXml(XmlNode(Item, '/ModuleSurfaceArea/ModuleProperties'), 'ModuleProperties', Module) Module.SetBootModeList(BootModes) Module.SetEventList(Events) Module.SetHobList(HOBs) # # ClonedFrom # Tmp = ClonedFromXml() ClonedFrom = Tmp.FromXml( XmlNode(Item, '/ModuleSurfaceArea/ClonedFrom'), 'ClonedFrom') if ClonedFrom: Module.SetClonedFrom(ClonedFrom) # # LibraryClass # for SubItem in XmlList( Item, '/ModuleSurfaceArea/LibraryClassDefinitions/LibraryClass'): Tmp = LibraryClassXml() LibraryClass = Tmp.FromXml(SubItem, 'LibraryClass') Module.SetLibraryClassList(Module.GetLibraryClassList() + [LibraryClass]) if XmlList(Item, '/ModuleSurfaceArea/LibraryClassDefinitions') and \ not XmlList(Item, '/ModuleSurfaceArea/LibraryClassDefinitions/LibraryClass'): Module.SetLibraryClassList([None]) # # SourceFiles # for SubItem in XmlList(Item, '/ModuleSurfaceArea/SourceFiles/Filename'): Tmp = SourceFileXml() SourceFile = Tmp.FromXml(SubItem, 'Filename') Module.SetSourceFileList(Module.GetSourceFileList() + [SourceFile]) if XmlList(Item, '/ModuleSurfaceArea/SourceFiles') and \ not XmlList(Item, '/ModuleSurfaceArea/SourceFiles/Filename') : Module.SetSourceFileList([None]) # # BinaryFile # for SubItem in XmlList(Item, '/ModuleSurfaceArea/BinaryFiles/BinaryFile'): Tmp = BinaryFileXml() BinaryFile = Tmp.FromXml(SubItem, 'BinaryFile') Module.SetBinaryFileList(Module.GetBinaryFileList() + [BinaryFile]) if XmlList(Item, '/ModuleSurfaceArea/BinaryFiles') and \ not XmlList(Item, '/ModuleSurfaceArea/BinaryFiles/BinaryFile') : Module.SetBinaryFileList([None]) # # PackageDependencies # for SubItem in XmlList( Item, '/ModuleSurfaceArea/PackageDependencies/Package'): Tmp = PackageXml() PackageDependency = Tmp.FromXml(SubItem, 'Package') Module.SetPackageDependencyList(Module.GetPackageDependencyList() + [PackageDependency]) if XmlList(Item, '/ModuleSurfaceArea/PackageDependencies') and \ not XmlList(Item, '/ModuleSurfaceArea/PackageDependencies/Package'): Module.SetPackageDependencyList([None]) # # Guid # for SubItem in XmlList(Item, '/ModuleSurfaceArea/Guids/GuidCName'): Tmp = GuidXml('Module') GuidProtocolPpi = Tmp.FromXml(SubItem, 'GuidCName') Module.SetGuidList(Module.GetGuidList() + [GuidProtocolPpi]) if XmlList(Item, '/ModuleSurfaceArea/Guids') and not XmlList( Item, '/ModuleSurfaceArea/Guids/GuidCName'): Module.SetGuidList([None]) # # Protocol # for SubItem in XmlList(Item, '/ModuleSurfaceArea/Protocols/Protocol'): Tmp = ProtocolXml('Module') GuidProtocolPpi = Tmp.FromXml(SubItem, 'Protocol') Module.SetProtocolList(Module.GetProtocolList() + [GuidProtocolPpi]) if XmlList(Item, '/ModuleSurfaceArea/Protocols') and not XmlList( Item, '/ModuleSurfaceArea/Protocols/Protocol'): Module.SetProtocolList([None]) # # Ppi # for SubItem in XmlList(Item, '/ModuleSurfaceArea/PPIs/Ppi'): Tmp = PpiXml('Module') GuidProtocolPpi = Tmp.FromXml(SubItem, 'Ppi') Module.SetPpiList(Module.GetPpiList() + [GuidProtocolPpi]) if XmlList(Item, '/ModuleSurfaceArea/PPIs') and not XmlList( Item, '/ModuleSurfaceArea/PPIs/Ppi'): Module.SetPpiList([None]) # # Extern # for SubItem in XmlList(Item, '/ModuleSurfaceArea/Externs/Extern'): Tmp = ExternXml() Extern = Tmp.FromXml(SubItem, 'Extern') Module.SetExternList(Module.GetExternList() + [Extern]) if XmlList(Item, '/ModuleSurfaceArea/Externs') and not XmlList( Item, '/ModuleSurfaceArea/Externs/Extern'): Module.SetExternList([None]) if not Module.GetBinaryModule(): # # PcdCoded # for SubItem in XmlList(Item, '/ModuleSurfaceArea/PcdCoded/PcdEntry'): Tmp = PcdEntryXml() PcdEntry = Tmp.FromXml3(SubItem, 'PcdEntry') Module.SetPcdList(Module.GetPcdList() + [PcdEntry]) if XmlList(Item, '/ModuleSurfaceArea/PcdCoded') and \ not XmlList(Item, '/ModuleSurfaceArea/PcdCoded/PcdEntry'): Module.SetPcdList([None]) Module = self.FromXml2(Item, Module) # # return the module object # self.Module = Module return self.Module