InfDefineObject.py revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
## @file
# This file is used to define class objects of [Defines] section for INF file.
# It will consumed by InfParser
#
# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
#
# This program and the accompanying materials are licensed and made available
# under the terms and conditions of the BSD License which accompanies this
# distribution. The full text of the license may be found at
#
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
'''
InfDefineObject
'''
import os
import re
from Library import GlobalData
class InfDefSectionOptionRomInfo():
self.PciVendorId = None
self.PciDeviceId = None
self.PciClassCode = None
self.PciRevision = None
self.PciCompress = None
#
# Value has been set before.
#
if self.PciVendorId != None:
return False
#
# The PciVendorId should be hex string.
#
if (IsValidHex(PciVendorId)):
return True
else:
return False
def GetPciVendorId(self):
return self.PciVendorId
#
# Value has been set before.
#
if self.PciDeviceId != None:
return False
#
# The PciDeviceId should be hex string.
#
if (IsValidHex(PciDeviceId)):
return True
else:
return False
def GetPciDeviceId(self):
return self.PciDeviceId
#
# Value has been set before.
#
if self.PciClassCode != None:
return False
#
# The PciClassCode should be 4 bytes hex string.
#
if (IsValidHex(PciClassCode)):
return True
else:
(PciClassCode),
return False
def GetPciClassCode(self):
return self.PciClassCode
#
# Value has been set before.
#
if self.PciRevision != None:
return False
#
# The PciRevision should be 4 bytes hex string.
#
if (IsValidHex(PciRevision)):
return True
else:
return False
def GetPciRevision(self):
return self.PciRevision
#
# Value has been set before.
#
if self.PciCompress != None:
return False
#
# The PciCompress should be 'TRUE' or 'FALSE'.
#
return True
else:
return False
def GetPciCompress(self):
return self.PciCompress
##
# INF [Define] section Object
#
self.ModuleType = None
self.InfVersion = None
self.EdkReleaseVersion = None
self.UefiSpecificationVersion = None
self.PiSpecificationVersion = None
self.LibraryClass = []
self.VersionString = None
self.PcdIsDriver = None
self.EntryPoint = []
self.UnloadImages = []
self.Constructor = []
self.Destructor = []
self.CustomMakefile = []
self.Specification = []
self.UefiHiiResourceSection = None
## SetHeadComment
#
# @param BaseName: BaseName
#
#
# Value has been set before.
#
return False
return True
else:
return False
## GetBaseName
#
def GetBaseName(self):
## SetFileGuid
#
# @param FileGuid: FileGuid
#
#
# Value has been set before.
#
return False
#
#
if (CheckGuidRegFormat(FileGuid)):
return True
else:
return False
## GetFileGuid
#
def GetFileGuid(self):
## SetModuleType
#
# @param ModuleType: ModuleType
#
#
# Value has been set before.
#
if self.ModuleType != None:
return False
#
# Valid Module Type or not
#
if (IsValidInfMoudleType(ModuleType)):
return True
else:
(ModuleType),
return False
## GetModuleType
#
def GetModuleType(self):
return self.ModuleType
## SetInfVersion
#
# @param InfVersion: InfVersion
#
#
# Value has been set before.
#
if self.InfVersion != None:
return False
#
# The InfVersion should be 4 bytes hex string.
#
if (IsValidHex(InfVersion)):
if (InfVersion < '0x00010005'):
return True
else:
return False
## GetInfVersion
#
def GetInfVersion(self):
return self.InfVersion
## SetEdkReleaseVersion
#
# @param EdkReleaseVersion: EdkReleaseVersion
#
#
# Value has been set before.
#
if self.EdkReleaseVersion != None:
return False
#
# The EdkReleaseVersion should be 4 bytes hex string.
#
if IsValidHexVersion(EdkReleaseVersion) or \
return True
else:
return False
## GetEdkReleaseVersion
#
def GetEdkReleaseVersion(self):
return self.EdkReleaseVersion
## SetUefiSpecificationVersion
#
# @param UefiSpecificationVersion: UefiSpecificationVersion
#
#
# Value has been set before.
#
if self.UefiSpecificationVersion != None:
return False
#
# The EdkReleaseVersion should be 4 bytes hex string.
#
return True
else:
return False
## GetUefiSpecificationVersion
#
return self.UefiSpecificationVersion
## SetPiSpecificationVersion
#
# @param PiSpecificationVersion: PiSpecificationVersion
#
#
# Value has been set before.
#
if self.PiSpecificationVersion != None:
return False
#
# The EdkReleaseVersion should be 4 bytes hex string.
#
if IsValidHexVersion(PiSpecificationVersion) or \
return True
else:
return False
## GetPiSpecificationVersion
#
return self.PiSpecificationVersion
## SetLibraryClass
#
# @param LibraryClass: LibraryClass
#
if IsValidWord(Name):
return False
else:
return False
return True
def GetLibraryClass(self):
return self.LibraryClass
#
# Value has been set before.
#
if self.VersionString != None:
return False
if not IsValidDecVersion(VersionString):
%(VersionString),
return True
def GetVersionString(self):
return self.VersionString
#
# Value has been set before.
#
if self.PcdIsDriver != None:
return False
return True
else:
return False
def GetPcdIsDriver(self):
return self.PcdIsDriver
#
# SetEntryPoint
#
#
# It can be a list
#
ValueList = []
(ValueList[0]),
(ValueList[1]),
#
# Validate FFE
#
if not FeatureFlagRtv[0]:
(FeatureFlagRtv[1]),
def GetEntryPoint(self):
return self.EntryPoint
#
# SetUnloadImages
#
#
# It can be a list
#
ValueList = []
#
# Validate FFE
#
if not FeatureFlagRtv[0]:
def GetUnloadImages(self):
return self.UnloadImages
#
# SetConstructor
#
#
# It can be a list
#
ValueList = []
#
# Validate FFE
#
if not FeatureFlagRtv[0]:
def GetConstructor(self):
return self.Constructor
#
# SetDestructor
#
#
# It can be a list and only 1 set to TRUE
#
ValueList = []
#
# Validate FFE
#
if not FeatureFlagRtv[0]:
def GetDestructor(self):
return self.Destructor
#
# Value has been set before.
#
return False
if (IsValidBoolType(Shadow)):
return True
else:
return False
#
# <Family> ::= {"MSFT"} {"GCC"}
# <CustomMake> ::= [<Family> "|"] <Filename>
#
Family = ''
else:
if Family != '':
if not IsValidFamily(Family):
return False
#
# The MakefileName specified file should exist
#
else:
return False
if IsValidFileFlag:
return True
else:
return False
def GetCustomMakefile(self):
return self.CustomMakefile
#
# ["SPEC" <Spec> <EOL>]*{0,}
# <Spec> ::= <Word> "=" <VersionVal>
# <VersionVal> ::= {<HexVersion>] {<DecVersion>}
# <HexNumber> ::= "0x" [<HexDigit>]{1,}
# <DecVersion> ::= (0-9){1,} ["." (0-9){1,2}]
#
#
# Valid the value of Specification
#
__ValueList = []
if IsValidIdentifier(Name):
if IsValidDecVersion(Version):
return True
else:
return False
else:
return False
return True
def GetSpecification(self):
return self.Specification
#
# [<UefiHiiResource> <EOL>]{0,1}
# <UefiHiiResource> ::= "UEFI_HII_RESOURCE_SECTION" "=" <BoolType>
#
#
# Value has been set before.
#
if self.UefiHiiResourceSection != None:
return False
return True
else:
return False
else:
return False
return self.UefiHiiResourceSection
#
# The MakefileName specified file should exist
#
else:
return False
if IsValidFileFlag:
return True
def GetDpxSource(self):
#
# Required Fields
#
#
# Required by EDKII style INF file
#
#
# Optional Fields
#
}
## InfDefMember
#
#
class InfDefMember():
## InfDefObject
#
#
class InfDefObject(InfSectionCommonDef):
#
# Validate Arch
#
#
# Parse Define items.
#
for InfDefMemberObj in DefineContent:
ProcessFunc = None
if Name == 'COMPONENT_TYPE':
#
# Process "SPEC" Keyword definition.
#
Name = "SPEC"
#
# Found the process function from mapping table.
#
else:
if (ProcessFunc != None):
else:
#
# Found the process function from mapping table.
#
#
# Found the process function from mapping table.
#
else:
if (ProcessFunc != None):
#
# After set, check whether INF_VERSION defined.
#
if not HasFoundInfVersionFalg:
return True
def GetDefines(self):