4230426dca6d3614bdaf99da8daeb4930c1bf792
[people/mcb30/basetools.git] / Source / Python / CommonDataClass / DataClass.py
1 ## @file\r
2 # This file is used to define class for data sturcture used in ECC\r
3 #\r
4 # Copyright (c) 2008, Intel Corporation\r
5 # All rights reserved. This program and the accompanying materials\r
6 # are licensed and made available under the terms and conditions of the BSD License\r
7 # which accompanies this distribution.    The full text of the license may be found at\r
8 # http://opensource.org/licenses/bsd-license.php\r
9 #\r
10 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12 \r
13 ##\r
14 # Import Modules\r
15 #\r
16 import Common.EdkLogger as EdkLogger\r
17 \r
18 ##\r
19 # Static values for data models\r
20 #\r
21 MODEL_UNKNOWN = 0\r
22 \r
23 MODEL_FILE_C = 1001\r
24 MODEL_FILE_H = 1002\r
25 MODEL_FILE_ASM = 1003\r
26 MODEL_FILE_INF = 1011\r
27 MODEL_FILE_DEC = 1012\r
28 MODEL_FILE_DSC = 1013\r
29 MODEL_FILE_DSC = 1014\r
30 \r
31 MODEL_IDENTIFIER_FILE_HEADER = 2001\r
32 MODEL_IDENTIFIER_FUNCTION_HEADER = 2002\r
33 MODEL_IDENTIFIER_COMMENT = 2003\r
34 MODEL_IDENTIFIER_PARAMETER = 2004\r
35 MODEL_IDENTIFIER_STRUCTURE = 2005\r
36 MODEL_IDENTIFIER_IDENTIFIER = 2006\r
37 MODEL_IDENTIFIER_INCLUDE = 2007\r
38 MODEL_IDENTIFIER_MACRO = 2008\r
39 MODEL_IDENTIFIER_PREDICATE_EXPRESSION = 2009\r
40 MODEL_IDENTIFIER_ENUMERATE = 2010\r
41 MODEL_IDENTIFIER_PCD = 2011\r
42 \r
43 MODEL_EFI_PROTOCOL = 3001\r
44 MODEL_EFI_PPI = 3002\r
45 MODEL_EFI_GUID = 3003\r
46 MODEL_EFI_LIBRARY_CLASS = 3004\r
47 MODEL_EFI_LIBRARY_INSTANCE = 3005\r
48 MODEL_EFI_PCD = 3006\r
49 MODEL_EFI_SOURCE_FILE = 3007\r
50 MODEL_EFI_BINARY_FILE = 3008\r
51 \r
52 MODEL_PCD_FIXED_AT_BUILD = 4001\r
53 MODEL_PCD_PATCHABLE_IN_MODULE = 4002\r
54 MODEL_PCD_FEATURE_FLAG = 4003\r
55 MODEL_PCD_DYNAMIC_EX = 4004\r
56 MODEL_PCD_DYNAMIC = 4005\r
57 \r
58 MODEL_META_DATA_HEADER = 5001\r
59 MODEL_META_DATA_INCLUDE = 5002\r
60 MODEL_META_DATA_DEFINE = 5003\r
61 MODEL_META_DATA_IFDEF = 5004\r
62 MODEL_META_DATA_IFNDEF = 5005\r
63 MODEL_META_DATA_BUILD_OPTION = 5006\r
64 MODEL_META_DATA_COMPONENT = 5007\r
65 \r
66 MODEL_LIST = [('MODEL_UNKNOWN', MODEL_UNKNOWN),\r
67               ('MODEL_FILE_C', MODEL_FILE_C),\r
68               ('MODEL_FILE_H', MODEL_FILE_H),\r
69               ('MODEL_FILE_ASM', MODEL_FILE_ASM),\r
70               ('MODEL_FILE_INF', MODEL_FILE_INF),\r
71               ('MODEL_FILE_DEC', MODEL_FILE_DEC),\r
72               ('MODEL_FILE_DSC', MODEL_FILE_DSC),\r
73               ('MODEL_FILE_DSC', MODEL_FILE_DSC),\r
74               ('MODEL_IDENTIFIER_FILE_HEADER', MODEL_IDENTIFIER_FILE_HEADER),\r
75               ('MODEL_IDENTIFIER_FUNCTION_HEADER', MODEL_IDENTIFIER_FUNCTION_HEADER),\r
76               ('MODEL_IDENTIFIER_COMMENT', MODEL_IDENTIFIER_COMMENT),\r
77               ('MODEL_IDENTIFIER_PARAMETER', MODEL_IDENTIFIER_PARAMETER),\r
78               ('MODEL_IDENTIFIER_STRUCTURE', MODEL_IDENTIFIER_STRUCTURE),\r
79               ('MODEL_IDENTIFIER_IDENTIFIER', MODEL_IDENTIFIER_IDENTIFIER),\r
80               ('MODEL_IDENTIFIER_INCLUDE', MODEL_IDENTIFIER_INCLUDE),\r
81               ('MODEL_IDENTIFIER_MACRO', MODEL_IDENTIFIER_MACRO),\r
82               ('MODEL_IDENTIFIER_PREDICATE_EXPRESSION', MODEL_IDENTIFIER_PREDICATE_EXPRESSION),\r
83               ('MODEL_IDENTIFIER_ENUMERATE', MODEL_IDENTIFIER_ENUMERATE),\r
84               ('MODEL_IDENTIFIER_PCD', MODEL_IDENTIFIER_PCD),\r
85               ('MODEL_EFI_PROTOCOL', MODEL_EFI_PROTOCOL),\r
86               ('MODEL_EFI_PPI', MODEL_EFI_PPI),\r
87               ('MODEL_EFI_GUID', MODEL_EFI_GUID),\r
88               ('MODEL_EFI_LIBRARY_CLASS', MODEL_EFI_LIBRARY_CLASS),\r
89               ('MODEL_EFI_LIBRARY_INSTANCE', MODEL_EFI_LIBRARY_INSTANCE),\r
90               ('MODEL_EFI_PCD', MODEL_EFI_PCD),\r
91               ('MODEL_EFI_SOURCE_FILE', MODEL_EFI_SOURCE_FILE),\r
92               ('MODEL_EFI_BINARY_FILE', MODEL_EFI_BINARY_FILE),\r
93               ('MODEL_PCD_FIXED_AT_BUILD', MODEL_PCD_FIXED_AT_BUILD),\r
94               ('MODEL_PCD_PATCHABLE_IN_MODULE', MODEL_PCD_PATCHABLE_IN_MODULE),\r
95               ('MODEL_PCD_FEATURE_FLAG', MODEL_PCD_FEATURE_FLAG),\r
96               ('MODEL_PCD_DYNAMIC_EX', MODEL_PCD_DYNAMIC_EX),\r
97               ('MODEL_PCD_DYNAMIC', MODEL_PCD_DYNAMIC),\r
98               ("MODEL_META_DATA_HEADER", MODEL_META_DATA_HEADER),\r
99               ("MODEL_META_DATA_INCLUDE", MODEL_META_DATA_INCLUDE),\r
100               ("MODEL_META_DATA_DEFINE", MODEL_META_DATA_DEFINE),\r
101               ("MODEL_META_DATA_IFDEF", MODEL_META_DATA_IFDEF),\r
102               ("MODEL_META_DATA_IFNDEF", MODEL_META_DATA_IFNDEF),\r
103               ("MODEL_META_DATA_BUILD_OPTION", MODEL_META_DATA_BUILD_OPTION),\r
104               ("MODEL_META_DATA_COMPONENT", MODEL_META_DATA_COMPONENT)\r
105              ]\r
106 \r
107 ## FunctionClass\r
108 #\r
109 # This class defines a structure of a function\r
110\r
111 # @param ID:               ID of a Function\r
112 # @param Header:           Header of a Function\r
113 # @param Modifier:         Modifier of a Function \r
114 # @param Name:             Name of a Function\r
115 # @param ReturnStatement:  ReturnStatement of a Funciont\r
116 # @param StartLine:        StartLine of a Function\r
117 # @param StartColumn:      StartColumn of a Function\r
118 # @param EndLine:          EndLine of a Function\r
119 # @param EndColumn:        EndColumn of a Function\r
120 # @param BelongsToFile:    The Function belongs to which file\r
121 # @param IdentifierList:   IdentifierList of a File\r
122 # @param PcdList:          PcdList of a File\r
123 #\r
124 # @var ID:                 ID of a Function\r
125 # @var Header:             Header of a Function\r
126 # @var Modifier:           Modifier of a Function \r
127 # @var Name:               Name of a Function\r
128 # @var ReturnStatement:    ReturnStatement of a Funciont\r
129 # @var StartLine:          StartLine of a Function\r
130 # @var StartColumn:        StartColumn of a Function\r
131 # @var EndLine:            EndLine of a Function\r
132 # @var EndColumn:          EndColumn of a Function\r
133 # @var BelongsToFile:      The Function belongs to which file\r
134 # @var IdentifierList:     IdentifierList of a File\r
135 # @var PcdList:            PcdList of a File\r
136 #\r
137 class FunctionClass(object):\r
138     def __init__(self, ID = -1, Header = '', Modifier = '', Name = '', ReturnStatement = '', StartLine = -1, StartColumn = -1, EndLine = -1, EndColumn = -1, BelongsToFile = -1, IdentifierList = [], PcdList = []):\r
139         self.ID = ID\r
140         self.Header = Header\r
141         self.Modifier = Modifier                    \r
142         self.Name = Name\r
143         self.ReturnStatement = ReturnStatement\r
144         self.StartLine = StartLine\r
145         self.StartColumn = StartColumn\r
146         self.EndLine = EndLine\r
147         self.EndColumn = EndColumn\r
148         self.BelongsToFile = BelongsToFile\r
149         \r
150         self.IdentifierList = IdentifierList\r
151         self.PcdList = PcdList\r
152 \r
153 ## IdentifierClass\r
154 #\r
155 # This class defines a structure of a variable\r
156\r
157 # @param ID:                 ID of a Identifier\r
158 # @param Modifier:           Modifier of a Identifier\r
159 # @param Type:               Type of a Identifier\r
160 # @param Name:               Name of a Identifier\r
161 # @param Value:              Value of a Identifier\r
162 # @param Model:              Model of a Identifier\r
163 # @param BelongsToFile:      The Identifier belongs to which file\r
164 # @param BelongsToFunction:  The Identifier belongs to which function\r
165 # @param StartLine:          StartLine of a Identifier\r
166 # @param StartColumn:        StartColumn of a Identifier\r
167 # @param EndLine:            EndLine of a Identifier\r
168 # @param EndColumn:          EndColumn of a Identifier\r
169 #\r
170 # @var ID:                   ID of a Identifier\r
171 # @var Modifier:             Modifier of a Identifier\r
172 # @var Type:                 Type of a Identifier\r
173 # @var Name:                 Name of a Identifier\r
174 # @var Value:                Value of a Identifier\r
175 # @var Model:                Model of a Identifier\r
176 # @var BelongsToFile:        The Identifier belongs to which file\r
177 # @var BelongsToFunction:    The Identifier belongs to which function\r
178 # @var StartLine:            StartLine of a Identifier\r
179 # @var StartColumn:          StartColumn of a Identifier\r
180 # @var EndLine:              EndLine of a Identifier\r
181 # @var EndColumn:            EndColumn of a Identifier\r
182 #\r
183 class IdentifierClass(object):\r
184     def __init__(self, ID = -1, Modifier = '', Type = '', Name = '', Value = '', Model = MODEL_UNKNOWN, BelongsToFile = -1, BelongsToFunction = -1, StartLine = -1, StartColumn = -1, EndLine = -1, EndColumn = -1):\r
185         self.ID = ID\r
186         self.Modifier = Modifier\r
187         self.Type = Type\r
188         self.Name = Name\r
189         self.Value = Value\r
190         self.Model = Model\r
191         self.BelongsToFile = BelongsToFile\r
192         self.BelongsToFunction = BelongsToFunction\r
193         self.StartLine = StartLine\r
194         self.StartColumn = StartColumn\r
195         self.EndLine = EndLine\r
196         self.EndColumn = EndColumn\r
197 \r
198 ## PcdClass\r
199 #\r
200 # This class defines a structure of a Pcd\r
201\r
202 # @param ID:                   ID of a Pcd\r
203 # @param CName:                CName of a Pcd\r
204 # @param TokenSpaceGuidCName:  TokenSpaceGuidCName of a Pcd\r
205 # @param Token:                Token of a Pcd\r
206 # @param DatumType:            DatumType of a Pcd\r
207 # @param Model:                Model of a Pcd\r
208 # @param BelongsToFile:        The Pcd belongs to which file\r
209 # @param BelongsToFunction:    The Pcd belongs to which function\r
210 # @param StartLine:            StartLine of a Pcd\r
211 # @param StartColumn:          StartColumn of a Pcd\r
212 # @param EndLine:              EndLine of a Pcd\r
213 # @param EndColumn:            EndColumn of a Pcd\r
214 #\r
215 # @var ID:                     ID of a Pcd\r
216 # @var CName:                  CName of a Pcd\r
217 # @var TokenSpaceGuidCName:    TokenSpaceGuidCName of a Pcd\r
218 # @var Token:                  Token of a Pcd\r
219 # @var DatumType:              DatumType of a Pcd\r
220 # @var Model:                  Model of a Pcd\r
221 # @var BelongsToFile:          The Pcd belongs to which file\r
222 # @var BelongsToFunction:      The Pcd belongs to which function\r
223 # @var StartLine:              StartLine of a Pcd\r
224 # @var StartColumn:            StartColumn of a Pcd\r
225 # @var EndLine:                EndLine of a Pcd\r
226 # @var EndColumn:              EndColumn of a Pcd\r
227 #\r
228 class PcdClass(object):\r
229     def __init__(self, ID = -1, CName = '', TokenSpaceGuidCName = '', Token = '', DatumType = '', Model = MODEL_UNKNOWN, BelongsToFile = -1, BelongsToFunction = -1, StartLine = -1, StartColumn = -1, EndLine = -1, EndColumn = -1):\r
230         self.ID = ID\r
231         self.CName = CName\r
232         self.TokenSpaceGuidCName = TokenSpaceGuidCName\r
233         self.Token = Token\r
234         self.DatumType = DatumType\r
235         self.BelongsToFile = BelongsToFile\r
236         self.BelongsToFunction = BelongsToFunction\r
237         self.StartLine = StartLine\r
238         self.StartColumn = StartColumn\r
239         self.EndLine = EndLine\r
240         self.EndColumn = EndColumn\r
241 \r
242 ## FileClass\r
243 #\r
244 # This class defines a structure of a file\r
245\r
246 # @param ID:              ID of a File\r
247 # @param Name:            Name of a File\r
248 # @param ExtName:         ExtName of a File\r
249 # @param Path:            Path of a File\r
250 # @param FullPath:        FullPath of a File\r
251 # @param Model:           Model of a File\r
252 # @param FunctionList:    FunctionList of a File\r
253 # @param IdentifierList:  IdentifierList of a File\r
254 # @param PcdList:         PcdList of a File\r
255 #\r
256 # @var ID:                ID of a File\r
257 # @var Name:              Name of a File\r
258 # @var ExtName:           ExtName of a File\r
259 # @var Path:              Path of a File\r
260 # @var FullPath:          FullPath of a File\r
261 # @var Model:             Model of a File\r
262 # @var FunctionList:      FunctionList of a File\r
263 # @var IdentifierList:    IdentifierList of a File\r
264 # @var PcdList:           PcdList of a File\r
265 #\r
266 class FileClass(object):\r
267     def __init__(self, ID = -1, Name = '', ExtName = '', Path = '', FullPath = '', Model = MODEL_UNKNOWN, FunctionList = [], IdentifierList = [], PcdList = []):\r
268         self.ID = ID                                   \r
269         self.Name = Name\r
270         self.ExtName = ExtName                    \r
271         self.Path = Path\r
272         self.FullPath = FullPath\r
273         self.Model = Model\r
274         \r
275         self.FunctionList = FunctionList\r
276         self.IdentifierList = IdentifierList\r
277         self.PcdList = PcdList\r