Sync EDKII BaseTools to BaseTools project r1903.
[efi/edk2/.git] / edk2 / BaseTools / Source / Python / CommonDataClass / FdfClass.py
1 ## @file\r
2 # classes represent data in FDF\r
3 #\r
4 #  Copyright (c) 2007 - 2010, Intel Corporation\r
5 #\r
6 #  All rights reserved. This program and the accompanying materials\r
7 #  are licensed and made available under the terms and conditions of the BSD License\r
8 #  which accompanies this distribution.  The full text of the license may be found at\r
9 #  http://opensource.org/licenses/bsd-license.php\r
10 #\r
11 #  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13 #\r
14 \r
15 ## FD data in FDF\r
16 #\r
17 #\r
18 class FDClassObject:\r
19     ## The constructor\r
20     #\r
21     #   @param  self        The object pointer\r
22     #\r
23     def __init__(self):\r
24         self.FdUiName = ''\r
25         self.CreateFileName = None\r
26         self.BaseAddress = None\r
27         self.BaseAddressPcd = None\r
28         self.Size = None\r
29         self.SizePcd = None\r
30         self.ErasePolarity = '1'\r
31         # 3-tuple list (blockSize, numBlocks, pcd)\r
32         self.BlockSizeList = []\r
33         # DefineVarDict[var] = value\r
34         self.DefineVarDict = {}\r
35         # SetVarDict[var] = value\r
36         self.SetVarDict = {}\r
37         self.RegionList = []\r
38         self.vtfRawDict = {}\r
39 \r
40 ## FV data in FDF\r
41 #\r
42 #\r
43 class FvClassObject:\r
44     ## The constructor\r
45     #\r
46     #   @param  self        The object pointer\r
47     #\r
48     def __init__(self):\r
49         self.UiFvName = None\r
50         self.CreateFileName = None\r
51         # 3-tuple list (blockSize, numBlocks, pcd)\r
52         self.BlockSizeList = []\r
53         # DefineVarDict[var] = value\r
54         self.DefineVarDict = {}\r
55         # SetVarDict[var] = value\r
56         self.SetVarDict = {}\r
57         self.FvAlignment = None\r
58         # FvAttributeDict[attribute] = TRUE/FALSE (1/0)\r
59         self.FvAttributeDict = {}\r
60         self.FvNameGuid = None\r
61         self.AprioriSectionList = []\r
62         self.FfsList = []\r
63         self.BsBaseAddress = None\r
64         self.RtBaseAddress = None\r
65 \r
66 ## Region data in FDF\r
67 #\r
68 #\r
69 class RegionClassObject:\r
70     ## The constructor\r
71     #\r
72     #   @param  self        The object pointer\r
73     #\r
74     def __init__(self):\r
75         self.Offset = None       # The begin position of the Region\r
76         self.Size = None         # The Size of the Region\r
77         self.PcdOffset = None\r
78         self.PcdSize = None\r
79         self.SetVarDict = {}\r
80         self.RegionType = None\r
81         self.RegionDataList = []\r
82 \r
83 ## FFS data in FDF\r
84 #\r
85 #        \r
86 class FfsClassObject:\r
87     ## The constructor\r
88     #\r
89     #   @param  self        The object pointer\r
90     #\r
91     def __init__(self):\r
92         self.NameGuid = None\r
93         self.Fixed = False\r
94         self.CheckSum = False\r
95         self.Alignment = None\r
96         self.SectionList = []\r
97 \r
98 ## FILE statement data in FDF\r
99 #\r
100 #        \r
101 class FileStatementClassObject (FfsClassObject) :\r
102     ## The constructor\r
103     #\r
104     #   @param  self        The object pointer\r
105     #\r
106     def __init__(self):\r
107         FfsClassObject.__init__(self)\r
108         self.FvFileType = None\r
109         self.FileName = None\r
110         self.KeyStringList = []\r
111         self.FvName = None\r
112         self.FdName = None\r
113         self.DefineVarDict = {}\r
114         self.AprioriSection = None\r
115         self.KeepReloc = None\r
116 \r
117 ## INF statement data in FDF\r
118 #\r
119 #\r
120 class FfsInfStatementClassObject(FfsClassObject):\r
121     ## The constructor\r
122     #\r
123     #   @param  self        The object pointer\r
124     #\r
125     def __init__(self):\r
126         FfsClassObject.__init__(self)\r
127         self.Rule = None\r
128         self.Version = None\r
129         self.Ui = None\r
130         self.InfFileName = None\r
131         self.BuildNum = ''\r
132         self.KeyStringList = []\r
133         self.KeepReloc = None\r
134         self.UseArch = None\r
135 \r
136 ## APRIORI section data in FDF\r
137 #\r
138 #\r
139 class AprioriSectionClassObject:\r
140     ## The constructor\r
141     #\r
142     #   @param  self        The object pointer\r
143     #\r
144     def __init__(self):\r
145         # DefineVarDict[var] = value\r
146         self.DefineVarDict = {}\r
147         self.FfsList = []\r
148 \r
149 ## section data in FDF\r
150 #\r
151 #        \r
152 class SectionClassObject:\r
153     ## The constructor\r
154     #\r
155     #   @param  self        The object pointer\r
156     #\r
157     def __init__(self):\r
158         self.Alignment = None\r
159         \r
160 ## Depex expression section in FDF\r
161 #\r
162 #        \r
163 class DepexSectionClassObject (SectionClassObject):\r
164     ## The constructor\r
165     #\r
166     #   @param  self        The object pointer\r
167     #\r
168     def __init__(self):\r
169         self.DepexType = None\r
170         self.Expression = None\r
171         self.ExpressionProcessed = False\r
172 \r
173 ## Compress section data in FDF\r
174 #\r
175 #\r
176 class CompressSectionClassObject (SectionClassObject) :\r
177     ## The constructor\r
178     #\r
179     #   @param  self        The object pointer\r
180     #\r
181     def __init__(self):\r
182         SectionClassObject.__init__(self)\r
183         self.CompType = None\r
184         self.SectionList = []\r
185 \r
186 ## Data section data in FDF\r
187 #\r
188 #        \r
189 class DataSectionClassObject (SectionClassObject):\r
190     ## The constructor\r
191     #\r
192     #   @param  self        The object pointer\r
193     #\r
194     def __init__(self):\r
195         SectionClassObject.__init__(self)\r
196         self.SecType = None\r
197         self.SectFileName = None\r
198         self.SectionList = []\r
199         self.KeepReloc = True\r
200 \r
201 ## Rule section data in FDF\r
202 #\r
203 #\r
204 class EfiSectionClassObject (SectionClassObject):\r
205     ## The constructor\r
206     #\r
207     #   @param  self        The object pointer\r
208     #\r
209     def __init__(self):\r
210         SectionClassObject.__init__(self)\r
211         self.SectionType = None\r
212         self.Optional = False\r
213         self.FileType = None\r
214         self.StringData = None\r
215         self.FileName = None\r
216         self.FileExtension = None\r
217         self.BuildNum = None\r
218         self.KeepReloc = None\r
219 \r
220 ## FV image section data in FDF\r
221 #\r
222 #        \r
223 class FvImageSectionClassObject (SectionClassObject):\r
224     ## The constructor\r
225     #\r
226     #   @param  self        The object pointer\r
227     #\r
228     def __init__(self):\r
229         SectionClassObject.__init__(self)\r
230         self.Fv = None\r
231         self.FvName = None\r
232         self.FvFileType = None\r
233         self.FvFileName = None\r
234         self.FvFileExtension = None\r
235         self.FvAddr = None\r
236 \r
237 ## GUIDed section data in FDF\r
238 #\r
239 #        \r
240 class GuidSectionClassObject (SectionClassObject) :\r
241     ## The constructor\r
242     #\r
243     #   @param  self        The object pointer\r
244     #\r
245     def __init__(self):\r
246         SectionClassObject.__init__(self)\r
247         self.NameGuid = None\r
248         self.SectionList = []\r
249         self.SectionType = None\r
250         self.ProcessRequired = False\r
251         self.AuthStatusValid = False\r
252         self.FvAddr = []\r
253         self.FvParentAddr = None\r
254         self.IncludeFvSection = False\r
255 \r
256 ## UI section data in FDF\r
257 #\r
258 #\r
259 class UiSectionClassObject (SectionClassObject):\r
260     ## The constructor\r
261     #\r
262     #   @param  self        The object pointer\r
263     #\r
264     def __init__(self):\r
265         SectionClassObject.__init__(self)\r
266         self.StringData = None\r
267         self.FileName = None\r
268 \r
269 ## Version section data in FDF\r
270 #\r
271 #        \r
272 class VerSectionClassObject (SectionClassObject):\r
273     ## The constructor\r
274     #\r
275     #   @param  self        The object pointer\r
276     #\r
277     def __init__(self):\r
278         SectionClassObject.__init__(self)\r
279         self.BuildNum = None\r
280         self.StringData = None\r
281         self.FileName = None\r
282 \r
283 ## Rule data in FDF\r
284 #\r
285 #\r
286 class RuleClassObject :\r
287     ## The constructor\r
288     #\r
289     #   @param  self        The object pointer\r
290     #\r
291     def __init__(self):\r
292         self.Arch = None\r
293         self.ModuleType = None    # For Module Type\r
294         self.TemplateName = None\r
295         self.NameGuid = None\r
296         self.Fixed = False\r
297         self.Alignment = None\r
298         self.SectAlignment = None\r
299         self.CheckSum = False\r
300         self.FvFileType = None       # for Ffs File Type\r
301         self.KeyStringList = []\r
302         self.KeepReloc = None\r
303 \r
304 ## Complex rule data in FDF\r
305 #\r
306 #        \r
307 class RuleComplexFileClassObject(RuleClassObject) :\r
308     ## The constructor\r
309     #\r
310     #   @param  self        The object pointer\r
311     #\r
312     def __init__(self):\r
313         RuleClassObject.__init__(self)\r
314         self.SectionList = []\r
315 \r
316 ## Simple rule data in FDF\r
317 #\r
318 #\r
319 class RuleSimpleFileClassObject(RuleClassObject) :\r
320     ## The constructor\r
321     #\r
322     #   @param  self        The object pointer\r
323     #\r
324     def __init__(self):\r
325         RuleClassObject.__init__(self)\r
326         self.FileName = None\r
327         self.SectionType = ''\r
328         self.FileExtension = None\r
329 \r
330 ## File extension rule data in FDF\r
331 #\r
332 #\r
333 class RuleFileExtensionClassObject(RuleClassObject):\r
334     ## The constructor\r
335     #\r
336     #   @param  self        The object pointer\r
337     #\r
338     def __init__(self):\r
339         RuleClassObject.__init__(self)\r
340         self.FileExtension = None\r
341 \r
342 ## Capsule data in FDF\r
343 #\r
344 #        \r
345 class CapsuleClassObject :\r
346     ## The constructor\r
347     #\r
348     #   @param  self        The object pointer\r
349     #\r
350     def __init__(self):\r
351         self.SpecName = None\r
352         self.UiCapsuleName = None\r
353         self.CreateFile = None\r
354         self.GroupIdNumber = None\r
355         # DefineVarDict[var] = value\r
356         self.DefineVarDict = {}\r
357         # SetVarDict[var] = value\r
358         self.SetVarDict = {}\r
359         # TokensDict[var] = value\r
360         self.TokensDict = {}\r
361         self.CapsuleDataList = []\r
362 \r
363 ## VTF data in FDF\r
364 #\r
365 #\r
366 class VtfClassObject :\r
367     ## The constructor\r
368     #\r
369     #   @param  self        The object pointer\r
370     #\r
371     def __init__(self):\r
372         self.KeyArch = None\r
373         self.ArchList = None\r
374         self.UiName = None\r
375         self.ResetBin = None\r
376         self.ComponentStatementList = []\r
377 \r
378 ## VTF component data in FDF\r
379 #\r
380 #        \r
381 class ComponentStatementClassObject :\r
382     ## The constructor\r
383     #\r
384     #   @param  self        The object pointer\r
385     #\r
386     def __init__(self):\r
387         self.CompName = None\r
388         self.CompLoc = None\r
389         self.CompType = None\r
390         self.CompVer = None\r
391         self.CompCs = None\r
392         self.CompBin = None\r
393         self.CompSym = None\r
394         self.CompSize = None\r
395         self.FilePos = None\r
396  \r
397 ## OptionROM data in FDF\r
398 #\r
399 #\r
400 class OptionRomClassObject:\r
401     ## The constructor\r
402     #\r
403     #   @param  self        The object pointer\r
404     #\r
405     def __init__(self):\r
406         self.DriverName = None\r
407         self.FfsList = []\r
408        \r