InfPcdObject.py revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
## @file
# This file is used to define class objects of INF file [Pcds] section.
# 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.
'''
InfPcdObject
'''
import os
import re
from Library import GlobalData
#
# Validate Arch
#
ArchItem = 'COMMON'
for ArchItemNew in ArchList:
if not IsValidArch(ArchItemNew):
else:
return SupArchList, SupArchDict
CommentInsList = []
PreUsage = None
PreHelpText = ''
BlockFlag = -1
FFEHelpText = ''
CommentItemHelpText = ''
Count = 0
for CommentItem in CommentList:
{},
[],
if CommentType and CommentString:
pass
if PcdTypeItem == 'FeaturePcd':
if CommentItemHelpText == None:
CommentItemHelpText = ''
if Count == 1:
else:
BlockFlag = 4
else:
continue
if CommentItemHelpText == None:
CommentItemHelpText = ''
BlockFlag = 4
else:
BlockFlag = 3
BlockFlag = 4
if BlockFlag == -1:
BlockFlag = 1
elif BlockFlag == 1:
BlockFlag = 2
else:
BlockFlag = 3
elif BlockFlag == -1:
BlockFlag = 4
#
# Combine two comment line if they are generic comment
#
if BlockFlag == 4:
BlockFlag = -1
PreUsage = None
PreHelpText = ''
elif BlockFlag == 3:
#
# Add previous help string
#
#
# Add Current help string
#
BlockFlag = -1
PreUsage = None
PreHelpText = ''
else:
return PcdItemObj
class InfPcdItemCommentContent():
#
# ## SOMETIMES_CONSUMES ## HelpString
#
#
# Help String
#
def GetUsageItem(self):
def GetHelpStringItem(self):
return self.HelpStringItem
## InfPcdItem
#
# This class defined Pcd item used in Module files
#
# @param CName: Input value for CName, default is ''
# @param Token: Input value for Token, default is ''
# @param TokenSpaceGuidCName: Input value for TokenSpaceGuidCName, default
# is ''
# @param DatumType: Input value for DatumType, default is ''
# @param MaxDatumSize: Input value for MaxDatumSize, default is ''
# @param DefaultValue: Input value for DefaultValue, default is ''
# @param ItemType: Input value for ItemType, default is ''
# @param ValidUsage: Input value for ValidUsage, default is []
# @param SkuInfoList: Input value for SkuInfoList, default is {}
# @param SupModuleList: Input value for SupModuleList, default is []
#
class InfPcdItem():
self.SupModuleList = []
self.HelpStringList = []
self.SupArchList = []
self.PcdErrorsList = []
def GetTokenSpaceGuidCName(self):
return self.TokenSpaceGuidCName
def GetTokenSpaceGuidValue(self):
return self.TokenSpaceGuidValue
def GetDatumType(self):
def GetMaxDatumSize(self):
return self.MaxDatumSize
def GetDefaultValue(self):
return self.DefaultValue
def GetPcdErrorsList(self):
return self.PcdErrorsList
def GetItemType(self):
def GetSupModuleList(self):
return self.SupModuleList
def GetHelpStringList(self):
return self.HelpStringList
def GetFeatureFlagExp(self):
return self.FeatureFlagExp
def GetSupportArchList(self):
return self.SupArchList
##
#
#
#
class InfPcdObject():
return True
#
# Validate Arch
#
SupArchList = []
SupArchDict = {}
PcdTypeItem = ''
#
# Validate PcdType
#
return False
else:
if not IsValidPcdType(PcdTypeItem1):
return False
for PcdItem in PcdContent:
PcdItemObj = InfPcdItem()
else:
#
# Contain PcdName and Value, validate value.
#
else:
#
# Contain PcdName, value, and FeatureFlag express
#
#
# Validate Feature Flag Express
#
#
# Validate FFE
#
if not FeatureFlagRtv[0]:
return False
else:
else:
PcdsList = []
return True
for PcdItem in PcdContent:
PcdItemObj = InfPcdItem()
CommentString = ''
for CommmentLine in CommentList:
#
# Set PcdTokenSpaceCName and CName
#
#
# Set Value/DatumType/MaxDatumSize/Token
#
else:
PcdsList = []
def ParserPcdInfoInDec(String):
#
# DatumType, Token
#
def SetValueDatumTypeMaxSizeToken(PcdItem, CurrentLineOfPcdItem, PcdItemObj, Arch, PackageInfo = None):
#
# Package information not been generated currently, we need to parser INF file to get information.
#
if not PackageInfo:
PackageInfo = []
for PackageInfoListItem in PackageInfoList:
for PackageItem in PackageInfo:
break
#
# Open DEC file to get information
#
#
# Find PCD information.
#
#
# Validate Value.
#
else:
#
# validate offset
#
return PcdItemObj
#
# Boolean type only allow 0x00 or 0x01 as value per INF spec
#
if Type == 'BOOLEAN':
return False
elif Type == 'VOID*':
return False
return False
#
# Strip "{" at head and "}" at tail.
#
return False
return False
return False
return False
return False
else:
#
# Since we assume the DEC file always correct, should never go to here.
#
pass
return True
#
# Only PCD Name specified
# <PcdName> ::= <TokenSpaceGuidCName> "." <TokenCName>
#
else:
#
# Validate PcdTokenSpaceGuidCName
#
return PcdItemObj