]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/CommonDataClass/DataClass.py
edk2: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / BaseTools / Source / Python / CommonDataClass / DataClass.py
1 ## @file
2 # This file is used to define class for data structure used in ECC
3 #
4 # Copyright (c) 2008 - 2014, 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 import Common.EdkLogger as EdkLogger
17
18 ##
19 # Static values for data models
20 #
21 MODEL_UNKNOWN = 0
22
23 MODEL_FILE_C = 1001
24 MODEL_FILE_H = 1002
25 MODEL_FILE_ASM = 1003
26 MODEL_FILE_INF = 1011
27 MODEL_FILE_DEC = 1012
28 MODEL_FILE_DSC = 1013
29 MODEL_FILE_FDF = 1014
30 MODEL_FILE_INC = 1015
31 MODEL_FILE_CIF = 1016
32 MODEL_FILE_UNI = 1017
33 MODEL_FILE_OTHERS = 1099
34
35 MODEL_IDENTIFIER_FILE_HEADER = 2001
36 MODEL_IDENTIFIER_FUNCTION_HEADER = 2002
37 MODEL_IDENTIFIER_COMMENT = 2003
38 MODEL_IDENTIFIER_PARAMETER = 2004
39 MODEL_IDENTIFIER_STRUCTURE = 2005
40 MODEL_IDENTIFIER_VARIABLE = 2006
41 MODEL_IDENTIFIER_INCLUDE = 2007
42 MODEL_IDENTIFIER_PREDICATE_EXPRESSION = 2008
43 MODEL_IDENTIFIER_ENUMERATE = 2009
44 MODEL_IDENTIFIER_PCD = 2010
45 MODEL_IDENTIFIER_UNION = 2011
46 MODEL_IDENTIFIER_MACRO_IFDEF = 2012
47 MODEL_IDENTIFIER_MACRO_IFNDEF = 2013
48 MODEL_IDENTIFIER_MACRO_DEFINE = 2014
49 MODEL_IDENTIFIER_MACRO_ENDIF = 2015
50 MODEL_IDENTIFIER_MACRO_PROGMA = 2016
51 MODEL_IDENTIFIER_FUNCTION_CALLING = 2018
52 MODEL_IDENTIFIER_TYPEDEF = 2017
53 MODEL_IDENTIFIER_FUNCTION_DECLARATION = 2019
54 MODEL_IDENTIFIER_ASSIGNMENT_EXPRESSION = 2020
55
56 MODEL_EFI_PROTOCOL = 3001
57 MODEL_EFI_PPI = 3002
58 MODEL_EFI_GUID = 3003
59 MODEL_EFI_LIBRARY_CLASS = 3004
60 MODEL_EFI_LIBRARY_INSTANCE = 3005
61 MODEL_EFI_PCD = 3006
62 MODEL_EFI_SOURCE_FILE = 3007
63 MODEL_EFI_BINARY_FILE = 3008
64 MODEL_EFI_SKU_ID = 3009
65 MODEL_EFI_INCLUDE = 3010
66 MODEL_EFI_DEPEX = 3011
67 MODEL_EFI_DEFAULT_STORES = 3012
68
69 MODEL_PCD = 4000
70 MODEL_PCD_FIXED_AT_BUILD = 4001
71 MODEL_PCD_PATCHABLE_IN_MODULE = 4002
72 MODEL_PCD_FEATURE_FLAG = 4003
73 MODEL_PCD_DYNAMIC_EX = 4004
74 MODEL_PCD_DYNAMIC_EX_DEFAULT = 4005
75 MODEL_PCD_DYNAMIC_EX_VPD = 4006
76 MODEL_PCD_DYNAMIC_EX_HII = 4007
77 MODEL_PCD_DYNAMIC = 4008
78 MODEL_PCD_DYNAMIC_DEFAULT = 4009
79 MODEL_PCD_DYNAMIC_VPD = 4010
80 MODEL_PCD_DYNAMIC_HII = 4011
81 MODEL_PCD_TYPE_LIST = [MODEL_PCD_FIXED_AT_BUILD,
82 MODEL_PCD_PATCHABLE_IN_MODULE,
83 MODEL_PCD_FEATURE_FLAG,
84 MODEL_PCD_DYNAMIC_DEFAULT,
85 MODEL_PCD_DYNAMIC_HII,
86 MODEL_PCD_DYNAMIC_VPD,
87 MODEL_PCD_DYNAMIC_EX_DEFAULT,
88 MODEL_PCD_DYNAMIC_EX_HII,
89 MODEL_PCD_DYNAMIC_EX_VPD
90 ]
91
92 MODEL_META_DATA_HEADER_COMMENT = 5000
93 MODEL_META_DATA_HEADER = 5001
94 MODEL_META_DATA_INCLUDE = 5002
95 MODEL_META_DATA_DEFINE = 5003
96 MODEL_META_DATA_CONDITIONAL_STATEMENT_IF = 5004
97 MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE = 5005
98 MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF = 5006
99 MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF = 5007
100 MODEL_META_DATA_CONDITIONAL_STATEMENT_ERROR = 5400
101 MODEL_META_DATA_BUILD_OPTION = 5008
102 MODEL_META_DATA_COMPONENT = 5009
103 MODEL_META_DATA_USER_EXTENSION = 5010
104 MODEL_META_DATA_PACKAGE = 5011
105 MODEL_META_DATA_NMAKE = 5012
106 MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSEIF = 5013
107 MODEL_META_DATA_CONDITIONAL_STATEMENT_ENDIF = 5014
108 MODEL_META_DATA_COMMENT = 5016
109 MODEL_META_DATA_GLOBAL_DEFINE = 5017
110 MODEL_META_DATA_SECTION_HEADER = 5100
111 MODEL_META_DATA_SUBSECTION_HEADER = 5200
112 MODEL_META_DATA_TAIL_COMMENT = 5300
113
114 MODEL_EXTERNAL_DEPENDENCY = 10000
115
116 MODEL_LIST = [('MODEL_UNKNOWN', MODEL_UNKNOWN),
117 ('MODEL_FILE_C', MODEL_FILE_C),
118 ('MODEL_FILE_H', MODEL_FILE_H),
119 ('MODEL_FILE_ASM', MODEL_FILE_ASM),
120 ('MODEL_FILE_INF', MODEL_FILE_INF),
121 ('MODEL_FILE_DEC', MODEL_FILE_DEC),
122 ('MODEL_FILE_DSC', MODEL_FILE_DSC),
123 ('MODEL_FILE_FDF', MODEL_FILE_FDF),
124 ('MODEL_FILE_INC', MODEL_FILE_INC),
125 ('MODEL_FILE_CIF', MODEL_FILE_CIF),
126 ('MODEL_FILE_OTHERS', MODEL_FILE_OTHERS),
127 ('MODEL_IDENTIFIER_FILE_HEADER', MODEL_IDENTIFIER_FILE_HEADER),
128 ('MODEL_IDENTIFIER_FUNCTION_HEADER', MODEL_IDENTIFIER_FUNCTION_HEADER),
129 ('MODEL_IDENTIFIER_COMMENT', MODEL_IDENTIFIER_COMMENT),
130 ('MODEL_IDENTIFIER_PARAMETER', MODEL_IDENTIFIER_PARAMETER),
131 ('MODEL_IDENTIFIER_STRUCTURE', MODEL_IDENTIFIER_STRUCTURE),
132 ('MODEL_IDENTIFIER_VARIABLE', MODEL_IDENTIFIER_VARIABLE),
133 ('MODEL_IDENTIFIER_INCLUDE', MODEL_IDENTIFIER_INCLUDE),
134 ('MODEL_IDENTIFIER_PREDICATE_EXPRESSION', MODEL_IDENTIFIER_PREDICATE_EXPRESSION),
135 ('MODEL_IDENTIFIER_ENUMERATE', MODEL_IDENTIFIER_ENUMERATE),
136 ('MODEL_IDENTIFIER_PCD', MODEL_IDENTIFIER_PCD),
137 ('MODEL_IDENTIFIER_UNION', MODEL_IDENTIFIER_UNION),
138 ('MODEL_IDENTIFIER_MACRO_IFDEF', MODEL_IDENTIFIER_MACRO_IFDEF),
139 ('MODEL_IDENTIFIER_MACRO_IFNDEF', MODEL_IDENTIFIER_MACRO_IFNDEF),
140 ('MODEL_IDENTIFIER_MACRO_DEFINE', MODEL_IDENTIFIER_MACRO_DEFINE),
141 ('MODEL_IDENTIFIER_MACRO_ENDIF', MODEL_IDENTIFIER_MACRO_ENDIF),
142 ('MODEL_IDENTIFIER_MACRO_PROGMA', MODEL_IDENTIFIER_MACRO_PROGMA),
143 ('MODEL_IDENTIFIER_FUNCTION_CALLING', MODEL_IDENTIFIER_FUNCTION_CALLING),
144 ('MODEL_IDENTIFIER_TYPEDEF', MODEL_IDENTIFIER_TYPEDEF),
145 ('MODEL_IDENTIFIER_FUNCTION_DECLARATION', MODEL_IDENTIFIER_FUNCTION_DECLARATION),
146 ('MODEL_IDENTIFIER_ASSIGNMENT_EXPRESSION', MODEL_IDENTIFIER_ASSIGNMENT_EXPRESSION),
147 ('MODEL_EFI_PROTOCOL', MODEL_EFI_PROTOCOL),
148 ('MODEL_EFI_PPI', MODEL_EFI_PPI),
149 ('MODEL_EFI_GUID', MODEL_EFI_GUID),
150 ('MODEL_EFI_LIBRARY_CLASS', MODEL_EFI_LIBRARY_CLASS),
151 ('MODEL_EFI_LIBRARY_INSTANCE', MODEL_EFI_LIBRARY_INSTANCE),
152 ('MODEL_EFI_PCD', MODEL_EFI_PCD),
153 ('MODEL_EFI_SKU_ID', MODEL_EFI_SKU_ID),
154 ('MODEL_EFI_INCLUDE', MODEL_EFI_INCLUDE),
155 ('MODEL_EFI_DEPEX', MODEL_EFI_DEPEX),
156 ('MODEL_IDENTIFIER_UNION', MODEL_IDENTIFIER_UNION),
157 ('MODEL_EFI_SOURCE_FILE', MODEL_EFI_SOURCE_FILE),
158 ('MODEL_EFI_BINARY_FILE', MODEL_EFI_BINARY_FILE),
159 ('MODEL_PCD', MODEL_PCD),
160 ('MODEL_PCD_FIXED_AT_BUILD', MODEL_PCD_FIXED_AT_BUILD),
161 ('MODEL_PCD_PATCHABLE_IN_MODULE', MODEL_PCD_PATCHABLE_IN_MODULE),
162 ('MODEL_PCD_FEATURE_FLAG', MODEL_PCD_FEATURE_FLAG),
163 ('MODEL_PCD_DYNAMIC_EX', MODEL_PCD_DYNAMIC_EX),
164 ('MODEL_PCD_DYNAMIC_EX_DEFAULT', MODEL_PCD_DYNAMIC_EX_DEFAULT),
165 ('MODEL_PCD_DYNAMIC_EX_VPD', MODEL_PCD_DYNAMIC_EX_VPD),
166 ('MODEL_PCD_DYNAMIC_EX_HII', MODEL_PCD_DYNAMIC_EX_HII),
167 ('MODEL_PCD_DYNAMIC', MODEL_PCD_DYNAMIC),
168 ('MODEL_PCD_DYNAMIC_DEFAULT', MODEL_PCD_DYNAMIC_DEFAULT),
169 ('MODEL_PCD_DYNAMIC_VPD', MODEL_PCD_DYNAMIC_VPD),
170 ('MODEL_PCD_DYNAMIC_HII', MODEL_PCD_DYNAMIC_HII),
171 ("MODEL_META_DATA_HEADER", MODEL_META_DATA_HEADER),
172 ("MODEL_META_DATA_INCLUDE", MODEL_META_DATA_INCLUDE),
173 ("MODEL_META_DATA_DEFINE", MODEL_META_DATA_DEFINE),
174 ("MODEL_META_DATA_CONDITIONAL_STATEMENT_IF", MODEL_META_DATA_CONDITIONAL_STATEMENT_IF),
175 ("MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE", MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE),
176 ("MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF", MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF),
177 ("MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF", MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF),
178 ("MODEL_META_DATA_CONDITIONAL_STATEMENT_ERROR", MODEL_META_DATA_CONDITIONAL_STATEMENT_ERROR),
179 ("MODEL_META_DATA_BUILD_OPTION", MODEL_META_DATA_BUILD_OPTION),
180 ("MODEL_META_DATA_COMPONENT", MODEL_META_DATA_COMPONENT),
181 ('MODEL_META_DATA_USER_EXTENSION', MODEL_META_DATA_USER_EXTENSION),
182 ('MODEL_META_DATA_PACKAGE', MODEL_META_DATA_PACKAGE),
183 ('MODEL_META_DATA_NMAKE', MODEL_META_DATA_NMAKE),
184 ('MODEL_META_DATA_COMMENT', MODEL_META_DATA_COMMENT)
185 ]
186
187 ## FunctionClass
188 #
189 # This class defines a structure of a function
190 #
191 # @param ID: ID of a Function
192 # @param Header: Header of a Function
193 # @param Modifier: Modifier of a Function
194 # @param Name: Name of a Function
195 # @param ReturnStatement: ReturnStatement of a Function
196 # @param StartLine: StartLine of a Function
197 # @param StartColumn: StartColumn of a Function
198 # @param EndLine: EndLine of a Function
199 # @param EndColumn: EndColumn of a Function
200 # @param BodyStartLine: BodyStartLine of a Function Body
201 # @param BodyStartColumn: BodyStartColumn of a Function Body
202 # @param BelongsToFile: The Function belongs to which file
203 # @param IdentifierList: IdentifierList of a File
204 # @param PcdList: PcdList of a File
205 #
206 # @var ID: ID of a Function
207 # @var Header: Header of a Function
208 # @var Modifier: Modifier of a Function
209 # @var Name: Name of a Function
210 # @var ReturnStatement: ReturnStatement of a Function
211 # @var StartLine: StartLine of a Function
212 # @var StartColumn: StartColumn of a Function
213 # @var EndLine: EndLine of a Function
214 # @var EndColumn: EndColumn of a Function
215 # @var BodyStartLine: StartLine of a Function Body
216 # @var BodyStartColumn: StartColumn of a Function Body
217 # @var BelongsToFile: The Function belongs to which file
218 # @var IdentifierList: IdentifierList of a File
219 # @var PcdList: PcdList of a File
220 #
221 class FunctionClass(object):
222 def __init__(self, ID = -1, Header = '', Modifier = '', Name = '', ReturnStatement = '', \
223 StartLine = -1, StartColumn = -1, EndLine = -1, EndColumn = -1, \
224 BodyStartLine = -1, BodyStartColumn = -1, BelongsToFile = -1, \
225 IdentifierList = [], PcdList = [], \
226 FunNameStartLine = -1, FunNameStartColumn = -1):
227 self.ID = ID
228 self.Header = Header
229 self.Modifier = Modifier
230 self.Name = Name
231 self.ReturnStatement = ReturnStatement
232 self.StartLine = StartLine
233 self.StartColumn = StartColumn
234 self.EndLine = EndLine
235 self.EndColumn = EndColumn
236 self.BodyStartLine = BodyStartLine
237 self.BodyStartColumn = BodyStartColumn
238 self.BelongsToFile = BelongsToFile
239 self.FunNameStartLine = FunNameStartLine
240 self.FunNameStartColumn = FunNameStartColumn
241
242 self.IdentifierList = IdentifierList
243 self.PcdList = PcdList
244
245 ## IdentifierClass
246 #
247 # This class defines a structure of a variable
248 #
249 # @param ID: ID of a Identifier
250 # @param Modifier: Modifier of a Identifier
251 # @param Type: Type of a Identifier
252 # @param Name: Name of a Identifier
253 # @param Value: Value of a Identifier
254 # @param Model: Model of a Identifier
255 # @param BelongsToFile: The Identifier belongs to which file
256 # @param BelongsToFunction: The Identifier belongs to which function
257 # @param StartLine: StartLine of a Identifier
258 # @param StartColumn: StartColumn of a Identifier
259 # @param EndLine: EndLine of a Identifier
260 # @param EndColumn: EndColumn of a Identifier
261 #
262 # @var ID: ID of a Identifier
263 # @var Modifier: Modifier of a Identifier
264 # @var Type: Type of a Identifier
265 # @var Name: Name of a Identifier
266 # @var Value: Value of a Identifier
267 # @var Model: Model of a Identifier
268 # @var BelongsToFile: The Identifier belongs to which file
269 # @var BelongsToFunction: The Identifier belongs to which function
270 # @var StartLine: StartLine of a Identifier
271 # @var StartColumn: StartColumn of a Identifier
272 # @var EndLine: EndLine of a Identifier
273 # @var EndColumn: EndColumn of a Identifier
274 #
275 class IdentifierClass(object):
276 def __init__(self, ID = -1, Modifier = '', Type = '', Name = '', Value = '', Model = MODEL_UNKNOWN, \
277 BelongsToFile = -1, BelongsToFunction = -1, StartLine = -1, StartColumn = -1, EndLine = -1, EndColumn = -1):
278 self.ID = ID
279 self.Modifier = Modifier
280 self.Type = Type
281 self.Name = Name
282 self.Value = Value
283 self.Model = Model
284 self.BelongsToFile = BelongsToFile
285 self.BelongsToFunction = BelongsToFunction
286 self.StartLine = StartLine
287 self.StartColumn = StartColumn
288 self.EndLine = EndLine
289 self.EndColumn = EndColumn
290
291 ## PcdClass
292 #
293 # This class defines a structure of a Pcd
294 #
295 # @param ID: ID of a Pcd
296 # @param CName: CName of a Pcd
297 # @param TokenSpaceGuidCName: TokenSpaceGuidCName of a Pcd
298 # @param Token: Token of a Pcd
299 # @param DatumType: DatumType of a Pcd
300 # @param Model: Model of a Pcd
301 # @param BelongsToFile: The Pcd belongs to which file
302 # @param BelongsToFunction: The Pcd belongs to which function
303 # @param StartLine: StartLine of a Pcd
304 # @param StartColumn: StartColumn of a Pcd
305 # @param EndLine: EndLine of a Pcd
306 # @param EndColumn: EndColumn of a Pcd
307 #
308 # @var ID: ID of a Pcd
309 # @var CName: CName of a Pcd
310 # @var TokenSpaceGuidCName: TokenSpaceGuidCName of a Pcd
311 # @var Token: Token of a Pcd
312 # @var DatumType: DatumType of a Pcd
313 # @var Model: Model of a Pcd
314 # @var BelongsToFile: The Pcd belongs to which file
315 # @var BelongsToFunction: The Pcd belongs to which function
316 # @var StartLine: StartLine of a Pcd
317 # @var StartColumn: StartColumn of a Pcd
318 # @var EndLine: EndLine of a Pcd
319 # @var EndColumn: EndColumn of a Pcd
320 #
321 class PcdDataClass(object):
322 def __init__(self, ID = -1, CName = '', TokenSpaceGuidCName = '', Token = '', DatumType = '', Model = MODEL_UNKNOWN, \
323 BelongsToFile = -1, BelongsToFunction = -1, StartLine = -1, StartColumn = -1, EndLine = -1, EndColumn = -1):
324 self.ID = ID
325 self.CName = CName
326 self.TokenSpaceGuidCName = TokenSpaceGuidCName
327 self.Token = Token
328 self.DatumType = DatumType
329 self.BelongsToFile = BelongsToFile
330 self.BelongsToFunction = BelongsToFunction
331 self.StartLine = StartLine
332 self.StartColumn = StartColumn
333 self.EndLine = EndLine
334 self.EndColumn = EndColumn
335
336 ## FileClass
337 #
338 # This class defines a structure of a file
339 #
340 # @param ID: ID of a File
341 # @param Name: Name of a File
342 # @param ExtName: ExtName of a File
343 # @param Path: Path of a File
344 # @param FullPath: FullPath of a File
345 # @param Model: Model of a File
346 # @param TimeStamp: TimeStamp of a File
347 # @param FunctionList: FunctionList of a File
348 # @param IdentifierList: IdentifierList of a File
349 # @param PcdList: PcdList of a File
350 #
351 # @var ID: ID of a File
352 # @var Name: Name of a File
353 # @var ExtName: ExtName of a File
354 # @var Path: Path of a File
355 # @var FullPath: FullPath of a File
356 # @var Model: Model of a File
357 # @var TimeStamp: TimeStamp of a File
358 # @var FunctionList: FunctionList of a File
359 # @var IdentifierList: IdentifierList of a File
360 # @var PcdList: PcdList of a File
361 #
362 class FileClass(object):
363 def __init__(self, ID = -1, Name = '', ExtName = '', Path = '', FullPath = '', Model = MODEL_UNKNOWN, TimeStamp = '', \
364 FunctionList = [], IdentifierList = [], PcdList = []):
365 self.ID = ID
366 self.Name = Name
367 self.ExtName = ExtName
368 self.Path = Path
369 self.FullPath = FullPath
370 self.Model = Model
371 self.TimeStamp = TimeStamp
372
373 self.FunctionList = FunctionList
374 self.IdentifierList = IdentifierList
375 self.PcdList = PcdList