## @file DecPomAlignment.py\r
# This file contained the adapter for convert INF parser object to POM Object\r
#\r
-# Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>\r
#\r
-# This program and the accompanying materials are licensed and made available \r
-# under the terms and conditions of the BSD License which accompanies this \r
-# distribution. The full text of the license may be found at \r
+# This program and the accompanying materials are licensed and made available\r
+# under the terms and conditions of the BSD License which accompanies this\r
+# distribution. The full text of the license may be found at\r
# http://opensource.org/licenses/bsd-license.php\r
#\r
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
self.DecParser = None\r
self.UniFileClassObject = None\r
self.PcdDefaultValueDict = {}\r
- \r
+\r
#\r
# Load Dec file\r
#\r
self.LoadDecFile(Filename)\r
- \r
+\r
#\r
# Transfer to Package Object if IsToPackage is True\r
#\r
self.DecToPackage()\r
- \r
+\r
## Load Dec file\r
#\r
# Load the file if it exists\r
self.SetFullPath(Filename)\r
self.SetRelaPath(Path)\r
self.SetFileName(Name)\r
- self.SetPackagePath(GetRelativePath(Path, self.WorkspaceDir)) \r
+ self.SetPackagePath(GetRelativePath(Path, self.WorkspaceDir))\r
self.SetCombinePath(GetRelativePath(Filename, self.WorkspaceDir))\r
- \r
+\r
self.DecParser = Dec(Filename)\r
- \r
+\r
## Transfer to Package Object\r
- # \r
+ #\r
# Transfer all contents of a Dec file to a standard Package Object\r
#\r
def DecToPackage(self):\r
# Init global information for the file\r
#\r
ContainerFile = self.GetFullPath()\r
- \r
+\r
#\r
# Generate Package Header\r
#\r
self.GenPackageHeader(ContainerFile)\r
- \r
+\r
#\r
# Generate Includes\r
#\r
# Generate Ppis\r
#\r
self.GenGuidProtocolPpis(TAB_PPIS, ContainerFile)\r
- \r
+\r
#\r
# Generate LibraryClasses\r
#\r
self.GenLibraryClasses(ContainerFile)\r
- \r
+\r
#\r
# Generate Pcds\r
#\r
self.GenPcds(ContainerFile)\r
- \r
+\r
#\r
- # Generate Module File list, will be used later on to generate \r
+ # Generate Module File list, will be used later on to generate\r
# distribution\r
#\r
self.GenModuleFileList(ContainerFile)\r
- \r
+\r
#\r
# Generate user extensions\r
#\r
self.GenUserExtensions()\r
- \r
+\r
## Generate user extension\r
#\r
#\r
PrivateUserExtension.SetIdentifier(DT.TAB_PRIVATE)\r
PrivateUserExtension.SetUserID(DT.TAB_INTEL)\r
self.SetUserExtensionList(self.GetUserExtensionList() + [PrivateUserExtension])\r
- \r
+\r
## Generate miscellaneous files on DEC file\r
#\r
#\r
FileObj.SetURI(FileName)\r
MiscFileObj.SetFileList(MiscFileObj.GetFileList()+[FileObj])\r
else:\r
- Logger.Error("InfParser", \r
+ Logger.Error("InfParser",\r
FORMAT_INVALID,\r
ST.ERR_INF_PARSER_FILE_NOT_EXIST_OR_NAME_INVALID%(Line),\r
File=self.GetFileName(),\r
- ExtraData=Line) \r
- self.SetMiscFileList(self.GetMiscFileList()+[MiscFileObj]) \r
- \r
+ ExtraData=Line)\r
+ self.SetMiscFileList(self.GetMiscFileList()+[MiscFileObj])\r
+\r
## Generate Package Header\r
#\r
# Gen Package Header of Dec as <Key> = <Value>\r
#\r
- # @param ContainerFile: The Dec file full path \r
+ # @param ContainerFile: The Dec file full path\r
#\r
def GenPackageHeader(self, ContainerFile):\r
Logger.Debug(2, "Generate PackageHeader ...")\r
DefinesDict = {}\r
- \r
+\r
#\r
# Update all defines item in database\r
#\r
UniFileClassObject([PathClass(os.path.join(DefObj.GetPackagePath(), DefObj.GetPackageUniFile()))])\r
else:\r
self.UniFileClassObject = None\r
- \r
+\r
if DefinesDict:\r
UserExtension = UserExtensionObject()\r
UserExtension.SetDefinesDict(DefinesDict)\r
UserExtension.SetIdentifier('DefineModifiers')\r
- UserExtension.SetUserID('EDK2') \r
+ UserExtension.SetUserID('EDK2')\r
self.SetUserExtensionList(\r
self.GetUserExtensionList() + [UserExtension]\r
)\r
self.SetCopyright(('', Copyright))\r
if License:\r
self.SetLicense(('', License))\r
- \r
+\r
#\r
# Get Binary header information\r
#\r
Abstract, Description, Copyright, License = \\r
ParseHeaderCommentSection(self.DecParser.BinaryHeadComment,\r
ContainerFile, True)\r
- \r
+\r
if not Abstract or not Description or not Copyright or not License:\r
Logger.Error('MkPkg',\r
FORMAT_INVALID,\r
\r
BinaryAbstractList = []\r
BinaryDescriptionList = []\r
- \r
+\r
#Get Binary header from UNI file\r
# Initialize the UniStrDict dictionary, top keys are language codes\r
UniStrDict = {}\r
if StringDefClassObject.StringName == TAB_DEC_BINARY_DESCRIPTION:\r
if (Lang, ConvertSpecialUnicodes(StringDefClassObject.StringValue)) \\r
not in self.GetBinaryHeaderDescription():\r
- BinaryDescriptionList.append((Lang, \r
+ BinaryDescriptionList.append((Lang,\r
ConvertSpecialUnicodes(StringDefClassObject.StringValue)))\r
#Combine Binary header from DEC file and UNI file\r
BinaryAbstractList = self.GetBinaryHeaderAbstract() + BinaryAbstractList\r
BinaryUserExtension.SetIdentifier(TAB_BINARY_HEADER_IDENTIFIER)\r
BinaryUserExtension.SetUserID(TAB_BINARY_HEADER_USERID)\r
self.SetUserExtensionList(self.GetUserExtensionList() + [BinaryUserExtension])\r
- \r
- \r
+\r
+\r
## GenIncludes\r
#\r
# Gen Includes of Dec\r
- # \r
- # @param ContainerFile: The Dec file full path \r
+ #\r
+ # @param ContainerFile: The Dec file full path\r
#\r
def GenIncludes(self, ContainerFile):\r
if ContainerFile:\r
IncludesDict[IncludePath] = IncludesDict[IncludePath] + Item.GetArchList()\r
else:\r
IncludesDict[IncludePath] = Item.GetArchList()\r
- \r
- # \r
+\r
+ #\r
# get the standardIncludeFileList(industry), packageIncludeFileList\r
- # (others) for PackageObject \r
- # \r
+ # (others) for PackageObject\r
+ #\r
PackagePath = os.path.split(self.GetFullPath())[0]\r
IncludePathList = \\r
sorted([os.path.normpath(Path) + sep for Path in IncludesDict.keys()])\r
- \r
+\r
#\r
- # get a non-overlap set of include path, IncludePathList should be \r
+ # get a non-overlap set of include path, IncludePathList should be\r
# sorted, and path should be end with path seperator '\'\r
#\r
NonOverLapList = []\r
#\r
for IndexN in range (0, len(IncludePathList)):\r
IncludePathList[IndexN] = os.path.normpath(IncludePathList[IndexN])\r
- IncludePathList.sort() \r
+ IncludePathList.sort()\r
IncludePathList.reverse()\r
#\r
# save the include path list for later usage\r
self.SetIncludePathList(IncludePathList)\r
StandardIncludeFileList = []\r
PackageIncludeFileList = []\r
- \r
+\r
IncludeFileList = []\r
for Path in NonOverLapList:\r
FileList = GetFiles(os.path.join(PackagePath, Path), ['CVS', '.svn'], False)\r
for Includefile in IncludeFileList:\r
ExtName = os.path.splitext(Includefile)[1]\r
if ExtName.upper() == '.DEC' and self.CheckMulDec:\r
- Logger.Error('MkPkg', \r
+ Logger.Error('MkPkg',\r
UPT_MUL_DEC_ERROR,\r
- ST.ERR_MUL_DEC_ERROR%(os.path.dirname(ContainerFile), \r
+ ST.ERR_MUL_DEC_ERROR%(os.path.dirname(ContainerFile),\r
os.path.basename(ContainerFile),\r
Includefile))\r
\r
if Includefile.find('IndustryStandard') != -1:\r
StandardIncludeFileList.append(Include)\r
else:\r
- PackageIncludeFileList.append(Include) \r
- \r
+ PackageIncludeFileList.append(Include)\r
+\r
self.SetStandardIncludeFileList(StandardIncludeFileList)\r
\r
#\r
# put include path into the PackageIncludeFileList\r
#\r
PackagePathList = []\r
- IncObj = self.DecParser.GetIncludeSectionObject() \r
+ IncObj = self.DecParser.GetIncludeSectionObject()\r
for Item in IncObj.GetAllIncludes():\r
IncludePath = Item.File\r
Include = IncludeObject()\r
Include.SetSupArchList(Item.GetArchList())\r
PackagePathList.append(Include)\r
self.SetPackageIncludeFileList(PackagePathList + PackageIncludeFileList)\r
- \r
+\r
## GenPpis\r
#\r
# Gen Ppis of Dec\r
# <CName>=<GuidValue>\r
#\r
- # @param ContainerFile: The Dec file full path \r
+ # @param ContainerFile: The Dec file full path\r
#\r
def GenGuidProtocolPpis(self, Type, ContainerFile):\r
if ContainerFile:\r
Factory = CreateGuidObject\r
elif Type == TAB_PROTOCOLS:\r
Obj = self.DecParser.GetProtocolSectionObject()\r
- \r
+\r
def CreateProtocolObject():\r
return ProtocolObject()\r
Factory = CreateProtocolObject\r
# Should not be here\r
#\r
return\r
- \r
+\r
DeclarationsList = []\r
- \r
+\r
#\r
# Go through each arch\r
#\r
Value = Item.GuidString\r
HelpTxt = ParseGenericComment(Item.GetHeadComment() + \\r
Item.GetTailComment())\r
- \r
+\r
ListObject = Factory()\r
ListObject.SetCName(Name)\r
ListObject.SetGuid(Value)\r
if self.UniFileClassObject:\r
HelpTxt.SetLang(TAB_LANGUAGE_EN_X)\r
ListObject.SetHelpTextList([HelpTxt])\r
- \r
+\r
DeclarationsList.append(ListObject)\r
\r
- # \r
+ #\r
#GuidTypeList is abstracted from help\r
#\r
if Type == TAB_GUIDS:\r
self.SetProtocolList(self.GetProtocolList() + DeclarationsList)\r
elif Type == TAB_PPIS:\r
self.SetPpiList(self.GetPpiList() + DeclarationsList)\r
- \r
+\r
## GenLibraryClasses\r
#\r
# Gen LibraryClasses of Dec\r
# <CName>=<GuidValue>\r
#\r
- # @param ContainerFile: The Dec file full path \r
+ # @param ContainerFile: The Dec file full path\r
#\r
def GenLibraryClasses(self, ContainerFile):\r
if ContainerFile:\r
pass\r
Logger.Debug(2, "Generate %s ..." % TAB_LIBRARY_CLASSES)\r
LibraryClassDeclarations = []\r
- \r
+\r
LibObj = self.DecParser.GetLibraryClassSectionObject()\r
for Item in LibObj.GetAllLibraryclasses():\r
LibraryClass = LibraryClassObject()\r
HelpTxt.SetLang(TAB_LANGUAGE_EN_X)\r
LibraryClass.SetHelpTextList([HelpTxt])\r
LibraryClassDeclarations.append(LibraryClass)\r
- \r
+\r
self.SetLibraryClassList(self.GetLibraryClassList() + \\r
LibraryClassDeclarations)\r
- \r
+\r
## GenPcds\r
#\r
# Gen Pcds of Dec\r
# <TokenSpcCName>.<TokenCName>|<Value>|<DatumType>|<Token>\r
#\r
- # @param ContainerFile: The Dec file full path \r
+ # @param ContainerFile: The Dec file full path\r
#\r
def GenPcds(self, ContainerFile):\r
Logger.Debug(2, "Generate %s ..." % TAB_PCDS)\r
PcdObj = self.DecParser.GetPcdSectionObject()\r
#\r
# Get all Pcds\r
- # \r
+ #\r
PcdDeclarations = []\r
IterList = [\r
(TAB_PCDS_FIXED_AT_BUILD_NULL, 'FixedPcd'),\r
- (TAB_PCDS_PATCHABLE_IN_MODULE_NULL, 'PatchPcd'), \r
+ (TAB_PCDS_PATCHABLE_IN_MODULE_NULL, 'PatchPcd'),\r
(TAB_PCDS_FEATURE_FLAG_NULL, 'FeaturePcd'),\r
- (TAB_PCDS_DYNAMIC_EX_NULL, 'PcdEx'), \r
+ (TAB_PCDS_DYNAMIC_EX_NULL, 'PcdEx'),\r
(TAB_PCDS_DYNAMIC_NULL, 'Pcd')]\r
- \r
+\r
PromptStrList = []\r
HelpStrList = []\r
PcdErrStrList = []\r
# Initialize UniStrDict dictionary, top keys are language codes\r
UniStrDict = {}\r
StrList = []\r
- \r
+\r
Language = ''\r
if self.UniFileClassObject:\r
Language = TAB_LANGUAGE_EN_X\r
else:\r
Language = TAB_LANGUAGE_EN_US\r
- \r
+\r
if self.UniFileClassObject:\r
UniStrDict = self.UniFileClassObject.OrderedStringList\r
for Lang in UniStrDict:\r
self.DecParser.GetDefineSectionMacro()\r
)\r
PcdDeclaration.SetSupArchList(Item.GetArchListOfType(PcdType))\r
- \r
+\r
#\r
# Get PCD error message from PCD error comment section in DEC file\r
#\r
Key = (PcdDeclaration.GetTokenSpaceGuidCName(), PcdErr.GetErrorNumber())\r
PcdErr.SetErrorMessageList(PcdErr.GetErrorMessageList() + \\r
[(Language, self.DecParser.PcdErrorCommentDict[Key])])\r
- \r
+\r
for Index in range(0, len(PromptStrList)):\r
StrNameList = PromptStrList[Index][1].split('_')\r
if StrNameList[1].lower() == Item.TokenSpaceGuidCName.lower() and \\r
break\r
else:\r
PcdDeclaration.SetPromptList(PcdDeclaration.GetPromptList() + [TxtObj])\r
- \r
+\r
for Index in range(0, len(HelpStrList)):\r
StrNameList = HelpStrList[Index][1].split('_')\r
if StrNameList[1].lower() == Item.TokenSpaceGuidCName.lower() and \\r
(PcdErrStrList[Index][0], PcdErrStrList[Index][2]) not in PcdErr.GetErrorMessageList():\r
PcdErr.SetErrorMessageList(PcdErr.GetErrorMessageList() + \\r
[(PcdErrStrList[Index][0], PcdErrStrList[Index][2])])\r
- \r
+\r
#\r
# Check to prevent missing error message if a Pcd has the error code.\r
#\r
ST.ERR_DECPARSE_PCD_UNMATCHED_ERRORCODE % PcdErr.GetErrorNumber(),\r
ContainerFile,\r
PcdErr.GetLineNum(),\r
- PcdErr.GetFileLine()) \r
- \r
+ PcdErr.GetFileLine())\r
+\r
PcdDeclarations.append(PcdDeclaration)\r
self.SetPcdList(self.GetPcdList() + PcdDeclarations)\r
self.CheckPcdValue()\r
- \r
+\r
##\r
# Get error message via language\r
# @param ErrorMessageList: Error message tuple list the language and its message\r
return ErrorMessageList[0][1]\r
except IndexError:\r
return ''\r
- return '' \r
- \r
+ return ''\r
+\r
##\r
# Replace the strings for Python eval function.\r
- # @param ReplaceValue: The string that needs to be replaced. \r
- # @return: The string was replaced, then eval function is always making out it. \r
+ # @param ReplaceValue: The string that needs to be replaced.\r
+ # @return: The string was replaced, then eval function is always making out it.\r
def ReplaceForEval(self, ReplaceValue, IsRange=False, IsExpr=False):\r
if self.FullPath:\r
pass\r
#\r
- # deal with "NOT EQ", "NOT LT", "NOT GT", "NOT LE", "NOT GE", "NOT NOT" \r
+ # deal with "NOT EQ", "NOT LT", "NOT GT", "NOT LE", "NOT GE", "NOT NOT"\r
#\r
NOTNOT_Pattern = '[\t\s]*NOT[\t\s]+NOT[\t\s]*'\r
NOTGE_Pattern = '[\t\s]*NOT[\t\s]+GE[\t\s]*'\r
ReplaceValue = re.compile(NOTLE_Pattern).sub('x > ', ReplaceValue)\r
ReplaceValue = re.compile(NOTGE_Pattern).sub('x < ', ReplaceValue)\r
ReplaceValue = re.compile(NOTEQ_Pattern).sub('x != ', ReplaceValue)\r
- \r
+\r
if IsRange:\r
ReplaceValue = ReplaceValue.replace('EQ', 'x ==')\r
ReplaceValue = ReplaceValue.replace('LT', 'x <')\r
ReplaceValue = ReplaceValue.replace('LT', '<')\r
ReplaceValue = ReplaceValue.replace('LE', '<=')\r
ReplaceValue = ReplaceValue.replace('GT', '>')\r
- ReplaceValue = ReplaceValue.replace('GE', '>=') \r
- ReplaceValue = ReplaceValue.replace('XOR', '^') \r
- \r
+ ReplaceValue = ReplaceValue.replace('GE', '>=')\r
+ ReplaceValue = ReplaceValue.replace('XOR', '^')\r
+\r
ReplaceValue = ReplaceValue.replace('AND', 'and')\r
ReplaceValue = ReplaceValue.replace('&&', ' and ')\r
ReplaceValue = ReplaceValue.replace('xor', '^')\r
ReplaceValue = ReplaceValue.replace('||', ' or ')\r
ReplaceValue = ReplaceValue.replace('NOT', 'not')\r
if ReplaceValue.find('!') >= 0 and ReplaceValue[ReplaceValue.index('!') + 1] != '=':\r
- ReplaceValue = ReplaceValue.replace('!', ' not ') \r
+ ReplaceValue = ReplaceValue.replace('!', ' not ')\r
if '.' in ReplaceValue:\r
Pattern = '[a-zA-Z0-9]{1,}\.[a-zA-Z0-9]{1,}'\r
MatchedList = re.findall(Pattern, ReplaceValue)\r
if MatchedItem not in self.PcdDefaultValueDict:\r
Logger.Error("Dec File Parser", FORMAT_INVALID, Message=ST.ERR_DECPARSE_PCD_NODEFINED % MatchedItem,\r
File=self.FullPath)\r
- \r
+\r
ReplaceValue = ReplaceValue.replace(MatchedItem, self.PcdDefaultValueDict[MatchedItem])\r
\r
return ReplaceValue\r
for Pcd in self.GetPcdList():\r
self.PcdDefaultValueDict[TAB_SPLIT.join((Pcd.GetTokenSpaceGuidCName(), Pcd.GetCName())).strip()] = \\r
Pcd.GetDefaultValue()\r
- \r
+\r
for Pcd in self.GetPcdList():\r
ValidationExpressions = []\r
PcdGuidName = TAB_SPLIT.join((Pcd.GetTokenSpaceGuidCName(), Pcd.GetCName()))\r
if QuotedMatchedObj:\r
MatchedStr = QuotedMatchedObj.group().strip()\r
if MatchedStr.startswith('L'):\r
- Expression = Expression.replace(MatchedStr, MatchedStr[1:].strip()) \r
+ Expression = Expression.replace(MatchedStr, MatchedStr[1:].strip())\r
\r
Expression = self.ReplaceForEval(Expression, IsExpr=True)\r
Expression = Expression.replace(PcdGuidName, 'x')\r
Message = self.GetEnErrorMessage(Valid.GetErrorMessageList())\r
- ValidationExpressions.append((Expression, Message)) \r
- \r
+ ValidationExpressions.append((Expression, Message))\r
+\r
ValidList = Valid.GetValidValue()\r
if ValidList:\r
ValidValue = 'x in %s' % [eval(v) for v in ValidList.split(' ') if v]\r
Message = self.GetEnErrorMessage(Valid.GetErrorMessageList())\r
ValidationExpressions.append((ValidValue, Message))\r
- \r
- ValidValueRange = Valid.GetValidValueRange() \r
+\r
+ ValidValueRange = Valid.GetValidValueRange()\r
if ValidValueRange:\r
ValidValueRange = self.ReplaceForEval(ValidValueRange, IsRange=True)\r
if ValidValueRange.find('-') >= 0:\r
ValidValueRange = 'x %s' % ValidValueRange\r
Message = self.GetEnErrorMessage(Valid.GetErrorMessageList())\r
ValidationExpressions.append((ValidValueRange, Message))\r
- \r
+\r
DefaultValue = self.PcdDefaultValueDict[PcdGuidName.strip()]\r
#\r
# Delete the 'L' prefix of a quoted string, this operation is for eval()\r
MatchedStr = QuotedMatchedObj.group().strip()\r
if MatchedStr.startswith('L'):\r
DefaultValue = DefaultValue.replace(MatchedStr, MatchedStr[1:].strip())\r
- \r
+\r
try:\r
DefaultValue = eval(DefaultValue.replace('TRUE', 'True').replace('true', 'True')\r
.replace('FALSE', 'False').replace('false', 'False'))\r
\r
## GenModuleFileList\r
#\r
- def GenModuleFileList(self, ContainerFile): \r
+ def GenModuleFileList(self, ContainerFile):\r
ModuleFileList = []\r
ContainerFileName = os.path.basename(ContainerFile)\r
ContainerFilePath = os.path.dirname(ContainerFile)\r
- for Item in GetFiles(ContainerFilePath, \r
+ for Item in GetFiles(ContainerFilePath,\r
['CVS', '.svn'] + self.GetIncludePathList(), False):\r
ExtName = os.path.splitext(Item)[1]\r
if ExtName.lower() == '.inf':\r
elif ExtName.upper() == '.DEC' and self.CheckMulDec:\r
if Item == ContainerFileName:\r
continue\r
- Logger.Error('MkPkg', \r
+ Logger.Error('MkPkg',\r
UPT_MUL_DEC_ERROR,\r
- ST.ERR_MUL_DEC_ERROR%(ContainerFilePath, \r
- ContainerFileName, \r
+ ST.ERR_MUL_DEC_ERROR%(ContainerFilePath,\r
+ ContainerFileName,\r
Item))\r
- \r
+\r
self.SetModuleFileList(ModuleFileList)\r
- \r
+\r
## Show detailed information of Package\r
#\r
# Print all members and their values of Package class\r
print('\nBaseName =', self.GetBaseName())\r
print('\nVersion =', self.GetVersion())\r
print('\nGuid =', self.GetGuid())\r
- \r
+\r
print('\nStandardIncludes = %d ' \\r
% len(self.GetStandardIncludeFileList()), end=' ')\r
for Item in self.GetStandardIncludeFileList():\r
% len(self.GetPackageIncludeFileList()), end=' ')\r
for Item in self.GetPackageIncludeFileList():\r
print(Item.GetFilePath(), ' ', Item.GetSupArchList())\r
- \r
+\r
print('\nGuids =', self.GetGuidList())\r
for Item in self.GetGuidList():\r
print(Item.GetCName(), Item.GetGuid(), Item.GetSupArchList())\r
'ValidUsage=', Item.GetValidUsage(), \\r
'SupArchList', Item.GetSupArchList(), \\r
'Token=', Item.GetToken(), 'DatumType=', Item.GetDatumType())\r
- \r
+\r
for Item in self.GetMiscFileList():\r
print(Item.GetName())\r
for FileObjectItem in Item.GetFileList():\r
## GenPcdDeclaration\r
#\r
# @param ContainerFile: File name of the DEC file\r
-# @param PcdInfo: Pcd information, of format (TokenGuidCName, \r
-# TokenName, Value, DatumType, Token, Type, \r
+# @param PcdInfo: Pcd information, of format (TokenGuidCName,\r
+# TokenName, Value, DatumType, Token, Type,\r
# GenericComment, TailComment, Arch)\r
-# @param Language: The language of HelpText, Prompt \r
-# \r
+# @param Language: The language of HelpText, Prompt\r
+#\r
def GenPcdDeclaration(ContainerFile, PcdInfo, Language, MacroReplaceDict):\r
HelpStr = ''\r
PromptStr = ''\r
\r
SupArchList = [Arch]\r
Pcd.SetSupArchList(SupArchList)\r
- \r
+\r
if GenericComment:\r
- HelpStr, PcdErrList, PromptStr = ParseDecPcdGenericComment(GenericComment, \r
- ContainerFile, \r
- TokenGuidCName, \r
+ HelpStr, PcdErrList, PromptStr = ParseDecPcdGenericComment(GenericComment,\r
+ ContainerFile,\r
+ TokenGuidCName,\r
TokenName,\r
MacroReplaceDict)\r
if PcdErrList:\r
Pcd.SetPcdErrorsList(PcdErrList)\r
\r
if TailComment:\r
- SupModuleList, TailHelpStr = ParseDecPcdTailComment(TailComment, \r
+ SupModuleList, TailHelpStr = ParseDecPcdTailComment(TailComment,\r
ContainerFile)\r
if SupModuleList:\r
Pcd.SetSupModuleList(SupModuleList)\r
- \r
+\r
if HelpStr and (not HelpStr.endswith('\n')) and TailHelpStr:\r
HelpStr += '\n'\r
HelpStr += TailHelpStr\r
if HelpStr:\r
HelpTxtObj = TextObject()\r
- HelpTxtObj.SetLang(Language) \r
+ HelpTxtObj.SetLang(Language)\r
HelpTxtObj.SetString(HelpStr)\r
Pcd.SetHelpTextList([HelpTxtObj])\r
if PromptStr:\r