]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/CommonDataClass/CommonClass.py
BaseTools: use built in OrderedDict instead of custom version.
[mirror_edk2.git] / BaseTools / Source / Python / CommonDataClass / CommonClass.py
1 ## @file
2 # This file is used to define common items of class object
3 #
4 # Copyright (c) 2007 - 2015, 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 #
15 # Generate help text
16 #
17 def GenerateHelpText(Text, Lang):
18 if Text:
19 Ht = HelpTextClass()
20 Ht.Lang = Lang
21 Ht.String = Text
22
23 return Ht
24
25 return None
26
27 ## CommonClass
28 #
29 # This class defined common items used in Module/Platform/Package files
30 #
31 # @param object: Inherited from object class
32 # @param Usage: Input value for Usage, default is []
33 # @param FeatureFlag: Input value for FeatureFalg, default is ''
34 # @param SupArchList: Input value for SupArchList, default is []
35 # @param HelpText: Input value for HelpText, default is ''
36 #
37 # @var Usage: To store value for Usage, selection scope is in below list
38 # ALWAYS_CONSUMED | SOMETIMES_CONSUMED | ALWAYS_PRODUCED | SOMETIMES_PRODUCED | TO_START | BY_START | PRIVATE
39 # @var FeatureFlag: To store value for FeatureFlag
40 # @var SupArchList: To store value for SupArchList, selection scope is in below list
41 # EBC | IA32 | X64 | IPF | ARM | PPC | AARCH64
42 # @var HelpText: To store value for HelpText
43 #
44 class CommonClass(object):
45 def __init__(self, Usage = None, FeatureFlag = '', SupArchList = None, HelpText = ''):
46 self.Usage = Usage
47 if self.Usage is None:
48 self.Usage = []
49 self.FeatureFlag = FeatureFlag
50 self.SupArchList = SupArchList
51 if self.SupArchList is None:
52 self.SupArchList = []
53 self.HelpText = HelpText
54 self.HelpTextList = []
55
56 ## CommonHeaderClass
57 #
58 # This class defined common items used in Module/Platform/Package files
59 #
60 # @param object: Inherited from object class
61 #
62 # @var Abstract: To store value for Abstract
63 # @var Description: To store value for Description
64 # @var Copyright: To store value for Copyright
65 # @var License: To store value for License
66 # @var Specification: To store value for Specification
67 #
68 class CommonHeaderClass(object):
69 def __init__(self):
70 self.Abstract = ''
71 self.Description = ''
72 self.Copyright = ''
73 self.License = ''
74 self.Specification = {}
75
76 ## HelpTextClass
77 #
78 # This class defined HelpText item used in PKG file
79 #
80 # @param object: Inherited from object class
81 #
82 # @var Lang: To store value for Lang
83 # @var String: To store value for String
84 #
85 class HelpTextClass(object):
86 def __init__(self):
87 self.Lang = ''
88 self.String = ''
89
90 ## DefineClass
91 #
92 # This class defined item DEFINE used in Module/Platform/Package files
93 #
94 # @param object: Inherited from object class
95 #
96 # @var Define: To store value for Define, it is a set structure as
97 # { (DefineName, Arch) : DefineValue, ... }
98 #
99 class DefineClass(object):
100 def __init__(self):
101 self.Define = {}
102
103 ## ClonedRecordClass
104 #
105 # This class defined ClonedRecord items used in Module/Platform/Package files
106 #
107 # @param object: Inherited from object class
108 #
109 # @var Id: To store value for Id
110 # @var FarGuid: To store value for FarGuid
111 # @var PackageGuid: To store value for PackageGuid
112 # @var PackageVersion: To store value for PackageVersion
113 # @var ModuleGuid: To store value for ModuleGuid
114 # @var ModuleVersion: To store value for ModuleVersion
115 #
116 class ClonedRecordClass(object):
117 def __init__(self):
118 self.Id = 0
119 self.FarGuid = ''
120 self.PackageGuid = ''
121 self.PackageVersion = ''
122 self.ModuleGuid = ''
123 self.ModuleVersion = ''
124
125 ## IdentificationClass
126 #
127 # This class defined Identification items used in Module/Platform/Package files
128 #
129 # @param object: Inherited from object class
130 #
131 # @var Name: To store value for Name
132 # ModuleName(Inf) / PackageName(Dec) / PlatformName(Dsc)
133 # @var Guid: To store value for Guid
134 # @var Version: To store value for Version
135 # @var FileName: To store value for FileName
136 # @var FullPath: To store value for FullPath
137 #
138 class IdentificationClass(object):
139 def __init__(self):
140 self.Name = ''
141 self.BaseName = ''
142 self.Guid = ''
143 self.Version = ''
144 self.FileName = ''
145 self.FullPath = ''
146 self.RelaPath = ''
147 self.PackagePath = ''
148 self.ModulePath = ''
149 self.CombinePath = ''
150
151 ## IncludeStatementClass
152 #
153 # This class defined IncludeFiles item used in Module/Platform/Package files
154 #
155 # @param object: Inherited from object class
156 #
157 # @var IncludeFiles: To store value for IncludeFiles
158 # It is a set structure as { IncludeFile : [Arch1, Arch2, ...], ... }
159 #
160 class IncludeStatementClass(object):
161 def __init__(self):
162 self.IncludeFiles = {}
163
164 ## GuidProtocolPpiCommonClass
165 #
166 # This class defined Guid, Protocol and Ppi like items used in Module/Platform/Package files
167 #
168 # @param CommonClass: Inherited from CommonClass class
169 #
170 # @var Name: To store value for Name
171 # @var CName: To store value for CName
172 # @var Guid: To store value for Guid
173 # @var Notify: To store value for Notify
174 # @var GuidTypeList: To store value for GuidTypeList, selection scope is in below list
175 # DATA_HUB_RECORD | EFI_EVENT | EFI_SYSTEM_CONFIGURATION_TABLE | EFI_VARIABLE | GUID | HII_PACKAGE_LIST | HOB | TOKEN_SPACE_GUID
176 # @var SupModuleList: To store value for SupModuleList, selection scope is in below list
177 # BASE | SEC | PEI_CORE | PEIM | DXE_CORE | DXE_DRIVER | DXE_RUNTIME_DRIVER | DXE_SAL_DRIVER | DXE_SMM_DRIVER | UEFI_DRIVER | UEFI_APPLICATION | USER_DEFINED | SMM_CORE | MM_STANDALONE | MM_CORE_STANDALONE
178 #
179 class GuidProtocolPpiCommonClass(CommonClass):
180 def __init__(self):
181 self.Name = ''
182 self.CName = ''
183 self.Guid = ''
184 self.VariableName = ''
185 self.Notify = False
186 self.GuidTypeList = []
187 self.GuidTypeLists = []
188 self.SupModuleList = []
189 CommonClass.__init__(self)
190
191 ## LibraryClassClass
192 #
193 # This class defined Library item used in Module/Platform/Package files
194 #
195 # @param CommonClass: Inherited from CommonClass class
196 # @param DefineClass: Inherited from DefineClass class
197 #
198 # @var LibraryClass: To store value for LibraryClass
199 # @var IncludeHeader: To store value for IncludeHeader
200 # @var RecommendedInstanceVersion: To store value for RecommendedInstanceVersion
201 # @var RecommendedInstanceGuid: To store value for RecommendedInstanceGuid
202 # @var RecommendedInstance: To store value for RecommendedInstance, selection scope is in below list
203 # DATA_HUB_RECORD | EFI_EVENT | EFI_SYSTEM_CONFIGURATION_TABLE | EFI_VARIABLE | GUID | HII_PACKAGE_LIST | HOB | TOKEN_SPACE_GUID
204 # @var SupModuleList: To store value for SupModuleList, selection scope is in below list
205 # BASE | SEC | PEI_CORE | PEIM | DXE_CORE | DXE_DRIVER | DXE_RUNTIME_DRIVER | DXE_SAL_DRIVER | DXE_SMM_DRIVER | UEFI_DRIVER | UEFI_APPLICATION | USER_DEFINED | SMM_CORE | MM_STANDALONE | MM_CORE_STANDALONE
206 #
207 class LibraryClassClass(CommonClass, DefineClass):
208 def __init__(self):
209 self.LibraryClass = ''
210 self.IncludeHeader = ''
211 self.RecommendedInstanceVersion = ''
212 self.RecommendedInstanceGuid = ''
213 self.RecommendedInstance = ''
214 self.SupModuleList = []
215 CommonClass.__init__(self)
216 DefineClass.__init__(self)
217
218 ## GuidClass
219 #
220 # This class defined Guid item used in Module/Platform/Package files
221 #
222 # @param GuidProtocolPpiCommonClass: Inherited from GuidProtocolPpiCommonClass class
223 #
224 class GuidClass(GuidProtocolPpiCommonClass):
225 def __init__(self):
226 GuidProtocolPpiCommonClass.__init__(self)
227
228 ## ProtocolClass
229 #
230 # This class defined Protocol item used in Module/Platform/Package files
231 #
232 # @param GuidProtocolPpiCommonClass: Inherited from GuidProtocolPpiCommonClass class
233 #
234 class ProtocolClass(GuidProtocolPpiCommonClass):
235 def __init__(self):
236 GuidProtocolPpiCommonClass.__init__(self)
237
238 ## PpiClass
239 #
240 # This class defined Ppi item used in Module/Platform/Package files
241 #
242 # @param GuidProtocolPpiCommonClass: Inherited from GuidProtocolPpiCommonClass class
243 #
244 class PpiClass(GuidProtocolPpiCommonClass):
245 def __init__(self):
246 GuidProtocolPpiCommonClass.__init__(self)
247
248 ## SkuInfoClass
249 #
250 # This class defined SkuInfo item used in Module/Platform/Package files
251 #
252 # @param object: Inherited from object class
253 # @param SkuIdName: Input value for SkuIdName, default is ''
254 # @param SkuId: Input value for SkuId, default is ''
255 # @param VariableName: Input value for VariableName, default is ''
256 # @param VariableGuid: Input value for VariableGuid, default is ''
257 # @param VariableOffset: Input value for VariableOffset, default is ''
258 # @param HiiDefaultValue: Input value for HiiDefaultValue, default is ''
259 # @param VpdOffset: Input value for VpdOffset, default is ''
260 # @param DefaultValue: Input value for DefaultValue, default is ''
261 #
262 # @var SkuIdName: To store value for SkuIdName
263 # @var SkuId: To store value for SkuId
264 # @var VariableName: To store value for VariableName
265 # @var VariableGuid: To store value for VariableGuid
266 # @var VariableOffset: To store value for VariableOffset
267 # @var HiiDefaultValue: To store value for HiiDefaultValue
268 # @var VpdOffset: To store value for VpdOffset
269 # @var DefaultValue: To store value for DefaultValue
270 #
271 class SkuInfoClass(object):
272 def __init__(self, SkuIdName = '', SkuId = '', VariableName = '', VariableGuid = '', VariableOffset = '',
273 HiiDefaultValue = '', VpdOffset = '', DefaultValue = '', VariableGuidValue = '', VariableAttribute = '', DefaultStore = None):
274 self.SkuIdName = SkuIdName
275 self.SkuId = SkuId
276
277 #
278 # Used by Hii
279 #
280 if DefaultStore is None:
281 DefaultStore = {}
282 self.VariableName = VariableName
283 self.VariableGuid = VariableGuid
284 self.VariableGuidValue = VariableGuidValue
285 self.VariableOffset = VariableOffset
286 self.HiiDefaultValue = HiiDefaultValue
287 self.VariableAttribute = VariableAttribute
288 self.DefaultStoreDict = DefaultStore
289
290 #
291 # Used by Vpd
292 #
293 self.VpdOffset = VpdOffset
294
295 #
296 # Used by Default
297 #
298 self.DefaultValue = DefaultValue
299
300 ## Convert the class to a string
301 #
302 # Convert each member of the class to string
303 # Organize to a signle line format string
304 #
305 # @retval Rtn Formatted String
306 #
307 def __str__(self):
308 Rtn = 'SkuId = ' + str(self.SkuId) + "," + \
309 'SkuIdName = ' + str(self.SkuIdName) + "," + \
310 'VariableName = ' + str(self.VariableName) + "," + \
311 'VariableGuid = ' + str(self.VariableGuid) + "," + \
312 'VariableOffset = ' + str(self.VariableOffset) + "," + \
313 'HiiDefaultValue = ' + str(self.HiiDefaultValue) + "," + \
314 'VpdOffset = ' + str(self.VpdOffset) + "," + \
315 'DefaultValue = ' + str(self.DefaultValue) + ","
316 return Rtn
317 ## PcdErrorClass
318 #
319 #
320 #
321 class PcdErrorClass(object):
322 def __init__(self):
323 self.ValidValueList = ''
324 self.ValidValueListLang = ''
325 self.ValidValueRange = ''
326 self.Expression = ''
327 self.ErrorNumber = ''
328 self.ErrorMessage = []
329
330 ## PcdClass
331 #
332 # This class defined Pcd item used in Module/Platform/Package files
333 #
334 # @param CommonClass: Inherited from CommonClass class
335 # @param CName: Input value for CName, default is ''
336 # @param Token: Input value for Token, default is ''
337 # @param TokenSpaceGuidCName: Input value for TokenSpaceGuidCName, default is ''
338 # @param DatumType: Input value for DatumType, default is ''
339 # @param MaxDatumSize: Input value for MaxDatumSize, default is ''
340 # @param DefaultValue: Input value for DefaultValue, default is ''
341 # @param ItemType: Input value for ItemType, default is ''
342 # @param ValidUsage: Input value for ValidUsage, default is []
343 # @param SkuInfoList: Input value for SkuInfoList, default is {}
344 # @param SupModuleList: Input value for SupModuleList, default is []
345 #
346 # @var CName: To store value for CName
347 # @var Token: To store value for Token
348 # @var TokenSpaceGuidCName: To store value for TokenSpaceGuidCName
349 # @var DatumType: To store value for DatumType, selection scope is in below list
350 # UINT8 | UINT16 | UINT32 | UINT64 | VOID* | BOOLEAN
351 # @var MaxDatumSize: To store value for MaxDatumSize
352 # @var DefaultValue: To store value for DefaultValue
353 # @var ItemType: To store value for ItemType, selection scope is in below list
354 # FEATURE_FLAG | FIXED_AT_BUILD | PATCHABLE_IN_MODULE | DYNAMIC | DYNAMIC_EX
355 # @var ValidUsage: To store value for ValidUsage, selection scope is in below list
356 # FEATURE_FLAG | FIXED_AT_BUILD | PATCHABLE_IN_MODULE | DYNAMIC | DYNAMIC_EX
357 # @var SkuInfoList: To store value for SkuInfoList
358 # It is a set structure as { [SkuIdName] : SkuInfoClass }
359 # @var SupModuleList: To store value for SupModuleList, selection scope is in below list
360 # BASE | SEC | PEI_CORE | PEIM | DXE_CORE | DXE_DRIVER | DXE_RUNTIME_DRIVER | DXE_SAL_DRIVER | DXE_SMM_DRIVER | UEFI_DRIVER | UEFI_APPLICATION | USER_DEFINED | SMM_CORE | MM_STANDALONE | MM_CORE_STANDALONE
361 #
362 class PcdClass(CommonClass):
363 def __init__(self, CName = '', Token = '', TokenSpaceGuidCName = '', DatumType = '', MaxDatumSize = '', DefaultValue = '', ItemType = '', ValidUsage = None, SkuInfoList = None, SupModuleList = None):
364 self.CName = CName
365 self.Token = Token
366 self.TokenSpaceGuidCName = TokenSpaceGuidCName
367 self.DatumType = DatumType
368 self.MaxDatumSize = MaxDatumSize
369 self.DefaultValue = DefaultValue
370 self.ItemType = ItemType
371 self.ValidUsage = ValidUsage
372 self.PcdItemType = ''
373 self.TokenSpaceGuidValue = ''
374 self.PcdUsage = ''
375 self.PcdCName = ''
376 self.Value = ''
377 self.Offset = ''
378 if self.ValidUsage is None:
379 self.ValidUsage = []
380 self.SkuInfoList = SkuInfoList
381 if self.SkuInfoList is None:
382 self.SkuInfoList = {}
383 self.SupModuleList = SupModuleList
384 if self.SupModuleList is None:
385 self.SupModuleList = []
386 CommonClass.__init__(self)
387 self.PcdErrors = []
388
389 ## BuildOptionClass
390 #
391 # This class defined BuildOption item used in Module/Platform/Package files
392 #
393 # @param IncludeStatementClass: Inherited from IncludeStatementClass class
394 # @param ToolChainFamily: Input value for ToolChainFamily, default is ''
395 # @param ToolChain: Input value for ToolChain, default is ''
396 # @param Option: Input value for Option, default is ''
397 #
398 # @var Statement: To store value for Statement
399 # It is a string in a special format as "Family:Target_TagName_Tarch_ToolCode_FLAGS = String"
400 # @var ToolChainFamily: To store value for ToolChainFamily
401 # @var ToolChain: To store value for ToolChain
402 # @var Option: To store value for Option
403 # @var BuildTarget: To store value for BuildTarget
404 # @var TagName: To store value for TagName
405 # @var ToolCode: To store value for ToolCode
406 # @var SupArchList: To store value for SupArchList, selection scope is in below list
407 # EBC | IA32 | X64 | IPF | ARM | PPC | AARCH64
408 #
409 class BuildOptionClass(IncludeStatementClass):
410 def __init__(self, ToolChainFamily = '', ToolChain = '', Option = ''):
411 IncludeStatementClass.__init__(self)
412 self.Statement = ''
413 self.ToolChainFamily = ToolChainFamily
414 self.ToolChain = ToolChain
415 self.Option = Option
416 self.BuildTarget = ''
417 self.TagName = ''
418 self.ToolCode = ''
419 self.SupArchList = []
420
421 ## IncludeClass
422 #
423 # This class defined Include item used in Module/Platform/Package files
424 #
425 # @param CommonClass: Inherited from CommonClass class
426 #
427 # @var FilePath: To store value for FilePath
428 # @var ModuleType: To store value for ModuleType
429 # @var Comment: To store value for Comment
430 #
431 class IncludeClass(CommonClass):
432 def __init__(self):
433 self.FilePath = ''
434 self.ModuleType = ''
435 self.SupModuleList = []
436 self.Comment = ''
437 CommonClass.__init__(self)
438
439 ## FileClass
440 #
441 #
442 class FileClass(CommonClass):
443 def __init__(self):
444 self.Filename = ''
445 self.Executable = ''
446 self.Family = ''
447 self.FileType = ''
448 CommonClass.__init__(self)
449
450
451 ## MiscFileClass
452 #
453 #
454 class MiscFileClass(CommonHeaderClass):
455 def __init__(self):
456 CommonHeaderClass.__init__(self)
457 self.Name = ''
458 self.Files = []
459
460
461 ## UserExtensionsClass
462 #
463 # This class defined UserExtensions item used in Module/Platform/Package files
464 #
465 # @param object: Inherited from object class
466 #
467 # @var UserID: To store value for UserID
468 # @var Identifier: To store value for Identifier
469 # @var Content: To store value for Content
470 #
471 class UserExtensionsClass(object):
472 def __init__(self):
473 self.UserID = ''
474 self.Identifier = 0
475 self.Content = ''
476 self.Defines = []
477 self.BuildOptions = []