1 ## @file 2 # This file is used to define a class object to describe a package 3 # 4 # Copyright (c) 2007, Intel Corporation. All rights reserved.<BR> 5 # This program and the accompanying materials 6 # are licensed and made available under the terms and conditions of the BSD License 7 # which accompanies this distribution. The full text of the license may be found at 8 # http://opensource.org/licenses/bsd-license.php 9 # 10 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 ## 14 # Import Modules 15 # 16 from CommonClass import * 17 from Common.Misc import sdict 18 19 ## PackageHeaderClass 20 # 21 # This class defined header items used in Package file 22 # 23 # @param IdentificationClass: Inherited from IdentificationClass class 24 # @param CommonHeaderClass: Inherited from CommonHeaderClass class 25 # 26 # @var DecSpecification: To store value for DecSpecification 27 # @var ReadOnly: To store value for ReadOnly 28 # @var RePackage: To store value for RePackage 29 # @var ClonedFrom: To store value for ClonedFrom, it is a set structure as 30 # [ ClonedRecordClass, ...] 31 # 32 class PackageHeaderClass(IdentificationClass, CommonHeaderClass): 33 def __init__(self): 34 IdentificationClass.__init__(self) 35 CommonHeaderClass.__init__(self) 36 self.DecSpecification = '' 37 self.ReadOnly = False 38 self.RePackage = False 39 self.PackagePath = '' 40 self.ClonedFrom = [] 41 42 ## PackageIndustryStdHeaderClass 43 # 44 # This class defined industry std header items used in Package file 45 # 46 # @param CommonHeaderClass: Inherited from CommonHeaderClass class 47 # 48 # @var Name: To store value for Name 49 # @var IncludeHeader: To store value for IncludeHeader 50 # 51 class PackageIndustryStdHeaderClass(CommonClass): 52 def __init__(self): 53 self.Name = '' 54 self.IncludeHeader = '' 55 CommonClass.__init__(self) 56 57 ## PackageIncludePkgHeaderClass 58 # 59 # This class defined include Pkg header items used in Package file 60 # 61 # @param object: Inherited from object class 62 # 63 # @var IncludeHeader: To store value for IncludeHeader 64 # @var ModuleType: To store value for ModuleType, it is a set structure as 65 # BASE | SEC | PEI_CORE | PEIM | DXE_CORE | DXE_DRIVER | DXE_RUNTIME_DRIVER | DXE_SAL_DRIVER | DXE_SMM_DRIVER | TOOL | UEFI_DRIVER | UEFI_APPLICATION | USER_DEFINED | SMM_CORE 66 # 67 class PackageIncludePkgHeaderClass(object): 68 def __init__(self): 69 self.IncludeHeader = '' 70 self.ModuleType = [] 71 72 ## PackageClass 73 # 74 # This class defined a complete package item 75 # 76 # @param object: Inherited from object class 77 # 78 # @var Header: To store value for Header, it is a structure as 79 # {Arch : PackageHeaderClass} 80 # @var Includes: To store value for Includes, it is a list structure as 81 # [ IncludeClass, ...] 82 # @var LibraryClassDeclarations: To store value for LibraryClassDeclarations, it is a list structure as 83 # [ LibraryClassClass, ...] 84 # @var IndustryStdHeaders: To store value for IndustryStdHeaders, it is a list structure as 85 # [ PackageIndustryStdHeader, ...] 86 # @var ModuleFiles: To store value for ModuleFiles, it is a list structure as 87 # [ '', '', ...] 88 # @var PackageIncludePkgHeaders: To store value for PackageIncludePkgHeaders, it is a list structure as 89 # [ PackageIncludePkgHeader, ...] 90 # @var GuidDeclarations: To store value for GuidDeclarations, it is a list structure as 91 # [ GuidClass, ...] 92 # @var ProtocolDeclarations: To store value for ProtocolDeclarations, it is a list structure as 93 # [ ProtocolClass, ...] 94 # @var PpiDeclarations: To store value for PpiDeclarations, it is a list structure as 95 # [ PpiClass, ...] 96 # @var PcdDeclarations: To store value for PcdDeclarations, it is a list structure as 97 # [ PcdClass, ...] 98 # @var UserExtensions: To store value for UserExtensions, it is a list structure as 99 # [ UserExtensionsClass, ...] 100 # 101 class PackageClass(object): 102 def __init__(self): 103 self.PackageHeader = PackageHeaderClass() 104 self.Header = {} 105 self.Includes = [] 106 self.LibraryClassDeclarations = [] 107 self.IndustryStdHeaders = [] 108 self.ModuleFiles = [] 109 # {[Guid, Value, Path(relative to WORKSPACE)]: ModuleClassObj} 110 self.Modules = sdict() 111 self.PackageIncludePkgHeaders = [] 112 self.GuidDeclarations = [] 113 self.ProtocolDeclarations = [] 114 self.PpiDeclarations = [] 115 self.PcdDeclarations = [] 116 self.PcdChecks = [] 117 self.UserExtensions = UserExtensionsClass() 118 self.MiscFiles = MiscFileClass() 119 self.FileList = [] 120 121 ## 122 # 123 # This acts like the main() function for the script, unless it is 'import'ed into another 124 # script. 125 # 126 if __name__ == '__main__': 127 P = PackageClass() 128