self.Start()\r
\r
# No specific ARCH or Platform given, use raw data\r
- if self._RawTable and (len(DataInfo) == 1 or DataInfo[1] == None):\r
+ if self._RawTable and (len(DataInfo) == 1 or DataInfo[1] is None):\r
return self._RawTable.Query(*DataInfo)\r
\r
# Do post-process if necessary\r
self._ValueList = ['','','']\r
# parse current line, result will be put in self._ValueList\r
self._SectionParser[self._SectionType](self)\r
- if self._ValueList == None or self._ItemType == MODEL_META_DATA_DEFINE:\r
+ if self._ValueList is None or self._ItemType == MODEL_META_DATA_DEFINE:\r
self._ItemType = -1\r
continue\r
#\r
"FIX_LOAD_TOP_MEMORY_ADDRESS"\r
]\r
\r
+ SubSectionDefineKeywords = [\r
+ "FILE_GUID"\r
+ ]\r
+\r
SymbolPattern = ValueExpression.SymbolPattern\r
\r
## Constructor of DscParser\r
\r
self._ValueList = ['', '', '']\r
self._SectionParser[SectionType](self)\r
- if self._ValueList == None:\r
+ if self._ValueList is None:\r
continue\r
#\r
# Model, Value1, Value2, Value3, Arch, ModuleType, BelongsToItem=-1, BelongsToFile=-1,\r
if not self._ValueList[2]:\r
EdkLogger.error('Parser', FORMAT_INVALID, "No value specified",\r
ExtraData=self._CurrentLine, File=self.MetaFile, Line=self._LineIndex+1)\r
- if not self._ValueList[1] in self.DefineKeywords:\r
+ if (not self._ValueList[1] in self.DefineKeywords and\r
+ (self._InSubsection and self._ValueList[1] not in self.SubSectionDefineKeywords)):\r
EdkLogger.error('Parser', FORMAT_INVALID,\r
"Unknown keyword found: %s. "\r
"If this is a macro you must "\r
File=self._FileWithError, ExtraData=' '.join(self._ValueList), \r
Line=self._LineIndex+1)\r
\r
- if self._ValueList == None:\r
+ if self._ValueList is None:\r
continue \r
\r
NewOwner = self._IdMapping.get(Owner, -1)\r
# section content\r
self._ValueList = ['','','']\r
self._SectionParser[self._SectionType[0]](self)\r
- if self._ValueList == None or self._ItemType == MODEL_META_DATA_DEFINE:\r
+ if self._ValueList is None or self._ItemType == MODEL_META_DATA_DEFINE:\r
self._ItemType = -1\r
self._Comments = []\r
continue\r
continue\r
else:\r
if GuidValue.startswith('{'):\r
- HexList.append('0x' + str(GuidValue[3:]))\r
+ GuidValue = GuidValue.lstrip(' {')\r
+ HexList.append('0x' + str(GuidValue[2:]))\r
Index += 1\r
self._ValueList[1] = "{ %s, %s, %s, { %s, %s, %s, %s, %s, %s, %s, %s }}" % (HexList[0], HexList[1], HexList[2],HexList[3],HexList[4],HexList[5],HexList[6],HexList[7],HexList[8],HexList[9],HexList[10])\r
else:\r
}\r
\r
\r
-## FdfObject\r
-#\r
-# This class defined basic Fdf object which is used by inheriting\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-class FdfObject(object):\r
- def __init__(self):\r
- object.__init__()\r
-\r
## Fdf\r
#\r
# This class defined the structure used in Fdf object\r
# \r
-# @param FdfObject: Inherited from FdfObject class\r
# @param Filename: Input value for Ffilename of Fdf file, default is None\r
# @param WorkspaceDir: Input value for current workspace directory, default is None\r
#\r
-class Fdf(FdfObject):\r
+class Fdf(object):\r
def __init__(self, Filename = None, IsToDatabase = False, WorkspaceDir = None, Database = None):\r
self.WorkspaceDir = WorkspaceDir\r
self.IsToDatabase = IsToDatabase\r
#\r
# Load Fdf file if filename is not None\r
#\r
- if Filename != None:\r
+ if Filename is not None:\r
try:\r
self.LoadFdfFile(Filename)\r
except Exception:\r
\r
def __read(self):\r
try:\r
- self.FileIn = CodecOpenLongFilePath(self.FilePath, Mode = 'rb', Encoding = 'utf_16').read()\r
+ self.FileIn = CodecOpenLongFilePath(self.FilePath, Mode='rb', Encoding='utf_8').read()\r
+ except UnicodeError:\r
+ self.FileIn = CodecOpenLongFilePath(self.FilePath, Mode='rb', Encoding='utf_16').read()\r
except UnicodeError:\r
- self.FileIn = CodecOpenLongFilePath(self.FilePath, Mode = 'rb', Encoding = 'utf_16_le').read()\r
+ self.FileIn = CodecOpenLongFilePath(self.FilePath, Mode='rb', Encoding='utf_16_le').read()\r
except IOError:\r
self.FileIn = ""\r
\r