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