]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/CommonDataClass/CommonClass.py
Sync tool code to BuildTools project r1739.
[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, Intel Corporation
5 # All rights reserved. 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
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 == None:
48 self.Usage = []
49 self.FeatureFlag = FeatureFlag
50 self.SupArchList = SupArchList
51 if self.SupArchList == None:
52 self.SupArchList = []
53 self.HelpText = HelpText
54 self.HelpTextList = []
55
56 ## CommonClass
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
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
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 = ''):
274 self.SkuIdName = SkuIdName
275 self.SkuId = SkuId
276
277 #
278 # Used by Hii
279 #
280 self.VariableName = VariableName
281 self.VariableGuid = VariableGuid
282 self.VariableGuidValue = VariableGuidValue
283 self.VariableOffset = VariableOffset
284 self.HiiDefaultValue = HiiDefaultValue
285
286 #
287 # Used by Vpd
288 #
289 self.VpdOffset = VpdOffset
290
291 #
292 # Used by Default
293 #
294 self.DefaultValue = DefaultValue
295
296 ## Convert the class to a string
297 #
298 # Convert each member of the class to string
299 # Organize to a signle line format string
300 #
301 # @retval Rtn Formatted String
302 #
303 def __str__(self):
304 Rtn = Rtn = 'SkuId = ' + str(self.SkuId) + "," + \
305 'SkuIdName = ' + str(self.SkuIdName) + "," + \
306 'VariableName = ' + str(self.VariableName) + "," + \
307 'VariableGuid = ' + str(self.VariableGuid) + "," + \
308 'VariableOffset = ' + str(self.VariableOffset) + "," + \
309 'HiiDefaultValue = ' + str(self.HiiDefaultValue) + "," + \
310 'VpdOffset = ' + str(self.VpdOffset) + "," + \
311 'DefaultValue = ' + str(self.DefaultValue) + ","
312 return Rtn
313 ## PcdErrorClass
314 #
315 #
316 #
317 class PcdErrorClass(object):
318 def __init__(self):
319 self.ValidValueList = ''
320 self.ValidValueListLang = ''
321 self.ValidValueRange = ''
322 self.Expression = ''
323 self.ErrorNumber = ''
324 self.ErrorMessage = []
325
326 ## PcdClass
327 #
328 # This class defined Pcd item used in Module/Platform/Package files
329 #
330 # @param CommonClass: Inherited from CommonClass class
331 # @param CName: Input value for CName, default is ''
332 # @param Token: Input value for Token, default is ''
333 # @param TokenSpaceGuidCName: Input value for TokenSpaceGuidCName, default is ''
334 # @param DatumType: Input value for DatumType, default is ''
335 # @param MaxDatumSize: Input value for MaxDatumSize, default is ''
336 # @param DefaultValue: Input value for DefaultValue, default is ''
337 # @param ItemType: Input value for ItemType, default is ''
338 # @param ValidUsage: Input value for ValidUsage, default is []
339 # @param SkuInfoList: Input value for SkuInfoList, default is {}
340 # @param SupModuleList: Input value for SupModuleList, default is []
341 #
342 # @var CName: To store value for CName
343 # @var Token: To store value for Token
344 # @var TokenSpaceGuidCName: To store value for TokenSpaceGuidCName
345 # @var DatumType: To store value for DatumType, selection scope is in below list
346 # UINT8 | UINT16 | UINT32 | UINT64 | VOID* | BOOLEAN
347 # @var MaxDatumSize: To store value for MaxDatumSize
348 # @var DefaultValue: To store value for DefaultValue
349 # @var ItemType: To store value for ItemType, selection scope is in below list
350 # FEATURE_FLAG | FIXED_AT_BUILD | PATCHABLE_IN_MODULE | DYNAMIC | DYNAMIC_EX
351 # @var ValidUsage: To store value for ValidUsage, selection scope is in below list
352 # FEATURE_FLAG | FIXED_AT_BUILD | PATCHABLE_IN_MODULE | DYNAMIC | DYNAMIC_EX
353 # @var SkuInfoList: To store value for SkuInfoList
354 # It is a set structure as { [SkuIdName] : SkuInfoClass }
355 # @var SupModuleList: To store value for SupModuleList, selection scope is in below list
356 # 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
357 #
358 class PcdClass(CommonClass):
359 def __init__(self, CName = '', Token = '', TokenSpaceGuidCName = '', DatumType = '', MaxDatumSize = '', DefaultValue = '', ItemType = '', ValidUsage = None, SkuInfoList = None, SupModuleList = None):
360 self.CName = CName
361 self.Token = Token
362 self.TokenSpaceGuidCName = TokenSpaceGuidCName
363 self.DatumType = DatumType
364 self.MaxDatumSize = MaxDatumSize
365 self.DefaultValue = DefaultValue
366 self.ItemType = ItemType
367 self.ValidUsage = ValidUsage
368 self.PcdItemType = ''
369 self.TokenSpaceGuidValue = ''
370 self.PcdUsage = ''
371 self.PcdCName = ''
372 self.Value = ''
373 self.Offset = ''
374 if self.ValidUsage == None:
375 self.ValidUsage = []
376 self.SkuInfoList = SkuInfoList
377 if self.SkuInfoList == None:
378 self.SkuInfoList = {}
379 self.SupModuleList = SupModuleList
380 if self.SupModuleList == None:
381 self.SupModuleList = []
382 CommonClass.__init__(self)
383 self.PcdErrors = []
384
385 ## BuildOptionClass
386 #
387 # This class defined BuildOption item used in Module/Platform/Package files
388 #
389 # @param IncludeStatementClass: Inherited from IncludeStatementClass class
390 # @param ToolChainFamily: Input value for ToolChainFamily, default is ''
391 # @param ToolChain: Input value for ToolChain, default is ''
392 # @param Option: Input value for Option, default is ''
393 #
394 # @var Statement: To store value for Statement
395 # It is a string in a special format as "Family:Target_TagName_Tarch_ToolCode_FLAGS = String"
396 # @var ToolChainFamily: To store value for ToolChainFamily
397 # @var ToolChain: To store value for ToolChain
398 # @var Option: To store value for Option
399 # @var BuildTarget: To store value for BuildTarget
400 # @var TagName: To store value for TagName
401 # @var ToolCode: To store value for ToolCode
402 # @var SupArchList: To store value for SupArchList, selection scope is in below list
403 # EBC | IA32 | X64 | IPF | ARM | PPC
404 #
405 class BuildOptionClass(IncludeStatementClass):
406 def __init__(self, ToolChainFamily = '', ToolChain = '', Option = ''):
407 IncludeStatementClass.__init__(self)
408 self.Statement = ''
409 self.ToolChainFamily = ToolChainFamily
410 self.ToolChain = ToolChain
411 self.Option = Option
412 self.BuildTarget = ''
413 self.TagName = ''
414 self.ToolCode = ''
415 self.SupArchList = []
416
417 ## IncludeClass
418 #
419 # This class defined Include item used in Module/Platform/Package files
420 #
421 # @param CommonClass: Inherited from CommonClass class
422 #
423 # @var FilePath: To store value for FilePath
424 # @var ModuleType: To store value for ModuleType
425 # @var Comment: To store value for Comment
426 #
427 class IncludeClass(CommonClass):
428 def __init__(self):
429 self.FilePath = ''
430 self.ModuleType = ''
431 self.SupModuleList = []
432 self.Comment = ''
433 CommonClass.__init__(self)
434
435 ## FileClass
436 #
437 #
438 class FileClass(CommonClass):
439 def __init__(self):
440 self.Filename = ''
441 self.Executable = ''
442 self.Family = ''
443 self.FileType = ''
444 CommonClass.__init__(self)
445
446
447 ## MiscFileClass
448 #
449 #
450 class MiscFileClass(CommonHeaderClass):
451 def __init__(self):
452 CommonHeaderClass.__init__(self)
453 self.Name = ''
454 self.Files = []
455
456
457 ## UserExtensionsClass
458 #
459 # This class defined UserExtensions item used in Module/Platform/Package files
460 #
461 # @param object: Inherited from object class
462 #
463 # @var UserID: To store value for UserID
464 # @var Identifier: To store value for Identifier
465 # @var Content: To store value for Content
466 #
467 class UserExtensionsClass(object):
468 def __init__(self):
469 self.UserID = ''
470 self.Identifier = 0
471 self.Content = ''
472 self.Defines = []
473 self.BuildOptions = []