git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@412 7335b...
[people/mcb30/basetools.git] / Source / Python / CommonDataClass / CommonClass.py
1 # Copyright (c) 2007, Intel Corporation\r
2 # All rights reserved. This program and the accompanying materials\r
3 # are licensed and made available under the terms and conditions of the BSD License\r
4 # which accompanies this distribution.    The full text of the license may be found at\r
5 # http://opensource.org/licenses/bsd-license.php\r
6 #\r
7 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
8 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
9 \r
10 #\r
11 # This file is used to define common items of class object\r
12 #\r
13 \r
14 class CommonClass(object):\r
15     def __init__(self, SupArchList = []):\r
16         self.Usage = []                                   #ALWAYS_CONSUMED | SOMETIMES_CONSUMED | ALWAYS_PRODUCED | SOMETIMES_PRODUCED | TO_START | BY_START | PRIVATE\r
17         self.FeatureFlag = ''\r
18         self.SupArchList = SupArchList                    #EBC | IA32 | X64 | IPF | ARM | PPC\r
19         self.HelpText = ''\r
20         \r
21 class CommonHeaderClass(object):\r
22     def __init__(self):\r
23         self.Abstract = ''\r
24         self.Description = ''\r
25         self.Copyright = ''\r
26         self.License = ''\r
27         self.Specification = {}                           #{ SpecificationName : SpecificationValue } \r
28 \r
29 class DefineClass(object):\r
30     def __init__(self):\r
31         self.Define = {}                                  #{ (DefineName, Arch) : DefineValue, ...}\r
32         \r
33 class ClonedRecordClass(object):\r
34     def __init__(self):\r
35         self.Id = 0\r
36         self.FarGuid = ''\r
37         self.PackageGuid = ''\r
38         self.PackageVersion = ''\r
39         self.ModuleGuid = ''\r
40         self.ModuleVersion = ''\r
41 \r
42 class IdentificationClass(object):\r
43     def __init__(self):\r
44         self.Name = ''                                    #ModuleName(BaseName) / PackageName / PlatformName\r
45         self.Guid = ''\r
46         self.Version = ''\r
47         self.FileName = ''\r
48         self.FullPath = ''\r
49 \r
50 class IncludeStatementClass(object):\r
51     def __init__(self):\r
52         self.IncludeFiles = {}                             #{ IncludeFile : [Arch1, Arch2, ...], ...}\r
53 \r
54 class GuidProtocolPpiCommonClass(CommonClass):\r
55     def __init__(self):\r
56         self.Name = ''\r
57         self.CName = ''\r
58         self.Guid = ''\r
59         self.Notify = False\r
60         self.GuidTypeList = []                            #DATA_HUB_RECORD | EFI_EVENT | EFI_SYSTEM_CONFIGURATION_TABLE | EFI_VARIABLE | GUID | HII_PACKAGE_LIST | HOB | TOKEN_SPACE_GUID\r
61         self.SupModuleList = []                           #BASE | SEC | PEI_CORE | PEIM | DXE_CORE | DXE_DRIVER | DXE_RUNTIME_DRIVER | DXE_SAL_DRIVER | DXE_SMM_DRIVER | UEFI_DRIVER | UEFI_APPLICATION | USER_DEFINED\r
62         CommonClass.__init__(self)\r
63         \r
64 class LibraryClassClass(CommonClass, DefineClass):\r
65     def __init__(self):\r
66         self.LibraryClass = ''\r
67         self.IncludeHeader = ''\r
68         self.RecommendedInstanceVersion = ''\r
69         self.RecommendedInstanceGuid = ''\r
70         self.RecommendedInstance = ''\r
71         self.SupModuleList = []                           #BASE | SEC | PEI_CORE | PEIM | DXE_CORE | DXE_DRIVER | DXE_RUNTIME_DRIVER | DXE_SAL_DRIVER | DXE_SMM_DRIVER | UEFI_DRIVER | UEFI_APPLICATION | USER_DEFINED\r
72         CommonClass.__init__(self)\r
73         DefineClass.__init__(self)\r
74 \r
75 class GuidClass(GuidProtocolPpiCommonClass):\r
76     def __init__(self):\r
77         GuidProtocolPpiCommonClass.__init__(self)\r
78 \r
79 class ProtocolClass(GuidProtocolPpiCommonClass):\r
80     def __init__(self):\r
81         GuidProtocolPpiCommonClass.__init__(self)\r
82         \r
83 class PpiClass(GuidProtocolPpiCommonClass):        \r
84     def __init__(self):\r
85         GuidProtocolPpiCommonClass.__init__(self)\r
86         \r
87 class SkuInfoClass(object):\r
88     def __init__(self, SkuIdName = '', SkuId = '', VariableName = '', VariableGuid = '', VariableOffset = '', HiiDefaultValue = '', VpdOffset = '', DefaultValue = ''):\r
89         self.SkuIdName = SkuIdName\r
90         self.SkuId = SkuId\r
91         #Used by Hii\r
92         self.VariableName = VariableName\r
93         self.VariableGuid = VariableGuid\r
94         self.VariableOffset = VariableOffset\r
95         self.HiiDefaultValue = HiiDefaultValue\r
96         \r
97         #Used by Vpd\r
98         self.VpdOffset = VpdOffset\r
99         \r
100         #Used by Default\r
101         self.DefaultValue = DefaultValue\r
102         \r
103     def __str__(self):\r
104         rtn = rtn = str(self.SkuId) + "," + \\r
105                     str(self.VariableName) + "," + \\r
106                     str(self.VariableGuid) + "," + \\r
107                     str(self.VariableOffset) + "," + \\r
108                     str(self.HiiDefaultValue) + "," + \\r
109                     str(self.VpdOffset) + "," + \\r
110                     str(self.DefaultValue) + ","\r
111         return rtn\r
112 \r
113 class PcdClass(CommonClass):\r
114     def __init__(self, CName = '', Token = '', TokenSpaceGuidCName = '', DatumType = '', MaxDatumSize = '', DefaultValue = '', ItemType = '', ValidUsage = [], SkuInfoList = {}, SupModuleList = []):\r
115         self.CName = CName\r
116         self.Token = Token\r
117         self.TokenSpaceGuidCName = TokenSpaceGuidCName\r
118         self.DatumType = DatumType                                 #UINT8 | UINT16 | UINT32 | UINT64 | VOID* | BOOLEAN \r
119         self.MaxDatumSize = MaxDatumSize\r
120         self.DefaultValue = DefaultValue\r
121         self.ItemType = ItemType                                   #FEATURE_FLAG | FIXED_AT_BUILD | PATCHABLE_IN_MODULE | DYNAMIC | DYNAMIC_EX\r
122         self.ValidUsage = ValidUsage                               #FEATURE_FLAG | FIXED_AT_BUILD | PATCHABLE_IN_MODULE | DYNAMIC | DYNAMIC_EX\r
123         self.SkuInfoList = SkuInfoList                             #{ [SkuIdName] : SkuInfoClass } \r
124         self.SupModuleList = SupModuleList                         #BASE | SEC | PEI_CORE | PEIM | DXE_CORE | DXE_DRIVER | DXE_RUNTIME_DRIVER | DXE_SAL_DRIVER | DXE_SMM_DRIVER | UEFI_DRIVER | UEFI_APPLICATION | USER_DEFINED\r
125         CommonClass.__init__(self)\r
126 \r
127 class BuildOptionClass(IncludeStatementClass):\r
128     def __init__(self, ToolChainFamily = '', ToolChain = '', Option = ''):\r
129         IncludeStatementClass.__init__(self)\r
130         self.Statement = ''                               #Family:Target_TagName_Tarch_ToolCode_FLAGS = String \r
131         self.ToolChainFamily = ToolChainFamily\r
132         self.ToolChain = ToolChain\r
133         self.Option = Option\r
134         self.BuildTarget = ''\r
135         self.TagName = ''\r
136         self.ToolCode = ''\r
137         self.SupArchList = []                             #EBC | IA32 | X64 | IPF | ARM | PPC\r
138         \r
139 class IncludeClass(CommonClass):\r
140     def __init__(self):\r
141         self.FilePath = ''\r
142         self.ModuleType = ''\r
143         self.Comment = ''\r
144         CommonClass.__init__(self)        \r
145                 \r
146 class UserExtensionsClass(object):\r
147     def __init__(self):\r
148         self.UserID = ''\r
149         self.Identifier = 0\r
150         self.Content = ''\r