if EccGlobalData.gConfig.IncludeFileCheckData == '1' or EccGlobalData.gConfig.IncludeFileCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1':\r
EdkLogger.quiet("Checking header file data ...")\r
\r
+ # Get all typedef functions\r
+ gAllTypedefFun = []\r
+ for IdentifierTable in EccGlobalData.gIdentifierTableList:\r
+ SqlCommand = """select Name from %s\r
+ where Model = %s """ % (IdentifierTable, MODEL_IDENTIFIER_TYPEDEF)\r
+ RecordSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand)\r
+ for Record in RecordSet:\r
+ if Record[0].startswith('('):\r
+ gAllTypedefFun.append(Record[0])\r
+\r
# for Dirpath, Dirnames, Filenames in self.WalkTree():\r
# for F in Filenames:\r
# if os.path.splitext(F)[1] in ('.h'):\r
# FullName = os.path.join(Dirpath, F)\r
# MsgList = c.CheckHeaderFileData(FullName)\r
for FullName in EccGlobalData.gHFileList:\r
- MsgList = c.CheckHeaderFileData(FullName)\r
+ MsgList = c.CheckHeaderFileData(FullName, gAllTypedefFun)\r
\r
# Doxygen document checking\r
def DoxygenCheck(self):\r
PrintErrorMsg(ERROR_PREDICATE_EXPRESSION_CHECK_BOOLEAN_VALUE, 'Predicate Expression: %s' % Exp, FileTable, Str[2])\r
\r
\r
-def CheckHeaderFileData(FullFileName):\r
+def CheckHeaderFileData(FullFileName, AllTypedefFun=[]):\r
ErrorMsgList = []\r
\r
FileID = GetTableID(FullFileName, ErrorMsgList)\r
ResultSet = Db.TblFile.Exec(SqlStatement)\r
for Result in ResultSet:\r
if not Result[1].startswith('extern'):\r
- PrintErrorMsg(ERROR_INCLUDE_FILE_CHECK_DATA, 'Variable definition appears in header file', FileTable, Result[0])\r
+ for Item in AllTypedefFun:\r
+ if '(%s)' % Result[1] in Item:\r
+ break\r
+ else:\r
+ PrintErrorMsg(ERROR_INCLUDE_FILE_CHECK_DATA, 'Variable definition appears in header file', FileTable, Result[0])\r
\r
SqlStatement = """ select ID\r
from Function\r