LogicOpPos = -1\r
p = GetFuncDeclPattern()\r
while i < len(PES) - 1:\r
- if (PES[i].isalpha() or PES[i] == '_') and LogicOpPos > PredicateBegin:\r
+ if (PES[i].isalnum() or PES[i] == '_') and LogicOpPos > PredicateBegin:\r
PredicateBegin = i\r
if (PES[i] == '&' and PES[i+1] == '&') or (PES[i] == '|' and PES[i+1] == '|'):\r
LogicOpPos = i\r
i += 1\r
\r
if PredicateBegin > LogicOpPos:\r
+ while PredicateBegin < len(PES):\r
+ if PES[PredicateBegin].isalnum() or PES[PredicateBegin] == '_':\r
+ break\r
+ PredicateBegin += 1\r
Exp = PES[PredicateBegin:len(PES)].strip()\r
if p.match(Exp):\r
PredicateList.append(Exp)\r
PredicateList.append(Exp.rstrip(';').rstrip(')').strip())\r
return PredicateList\r
\r
-def GetPredicateVariable(Lvalue):\r
+def GetCNameList(Lvalue):\r
Lvalue += ' '\r
i = 0\r
SearchBegin = 0\r
return True\r
return False\r
\r
-def GetReturnTypeFromModifier(ModifierStr):\r
+def GetDataTypeFromModifier(ModifierStr):\r
MList = ModifierStr.split()\r
for M in MList:\r
if M in EccGlobalData.gConfig.ModifierList:\r
continue\r
if not Field[Index - 1].isalnum():\r
if Index + len(FieldName) == len(Field):\r
- Type = GetPredicateVariable(Field[0:Index])\r
+ Type = GetCNameList(Field[0:Index])\r
if len(Type) == 0:\r
return Field[0:Index]\r
return Type[0]\r
else:\r
if not Field[Index + len(FieldName) + 1].isalnum():\r
- Type = GetPredicateVariable(Field[0:Index])\r
+ Type = GetCNameList(Field[0:Index])\r
if len(Type) == 0:\r
return Field[0:Index]\r
return Type[0]\r
def GetTypeInfo(RefList, Modifier, FullFileName):\r
TypedefDict = GetTypedefDict(FullFileName)\r
SUDict = GetSUDict(FullFileName)\r
- Type = GetReturnTypeFromModifier(Modifier).rstrip('*').strip()\r
+ Type = GetDataTypeFromModifier(Modifier).rstrip('*').strip()\r
Index = 0\r
while Index < len(RefList):\r
FieldName = RefList[Index]\r
if len(PredVarList) > 1:\r
Type = GetTypeInfo(PredVarList[1:], Result[0], FullFileName)\r
return Type\r
+ else:\r
+ Type = GetDataTypeFromModifier(Result[0])\r
+ return Type\r
\r
# search function parameters second\r
ParamList = GetParamList(FuncRecord[2])\r
if len(PredVarList) > 1:\r
Type = GetTypeInfo(PredVarList[1:], Param.Modifier, FullFileName)\r
return Type\r
+ else:\r
+ Type = GetDataTypeFromModifier(Param.Modifier)\r
+ return Type\r
\r
# search global variable next\r
SqlStatement = """ select Modifier, ID\r
if len(PredVarList) > 1:\r
Type = GetTypeInfo(PredVarList[1:], Result[0], FullFileName)\r
return Type\r
+ else:\r
+ Type = GetDataTypeFromModifier(Result[0])\r
+ return Type\r
\r
# search variable in include files\r
IncludeFileList = GetAllIncludeFiles(FullFileName)\r
if len(PredVarList) > 1:\r
Type = GetTypeInfo(PredVarList[1:], Result[0], FullFileName)\r
return Type\r
+ else:\r
+ Type = GetDataTypeFromModifier(Result[0])\r
+ return Type\r
\r
def CheckFuncLayoutReturnType(FullFileName):\r
ErrorMsgList = []\r
""" % (FileTable, DataClass.MODEL_IDENTIFIER_FUNCTION_DECLARATION)\r
ResultSet = Db.TblFile.Exec(SqlStatement)\r
for Result in ResultSet:\r
- ReturnType = GetReturnTypeFromModifier(Result[0])\r
+ ReturnType = GetDataTypeFromModifier(Result[0])\r
if len(ReturnType) == 0:\r
PrintErrorMsg(ERROR_C_FUNCTION_LAYOUT_CHECK_RETURN_TYPE, '', FileTable, Result[1])\r
continue\r
""" % (FileID)\r
ResultSet = Db.TblFile.Exec(SqlStatement)\r
for Result in ResultSet:\r
- ReturnType = GetReturnTypeFromModifier(Result[0])\r
+ ReturnType = GetDataTypeFromModifier(Result[0])\r
if len(ReturnType) == 0:\r
PrintErrorMsg(ERROR_C_FUNCTION_LAYOUT_CHECK_RETURN_TYPE, '', 'Function', Result[1])\r
continue\r
""" % (FileTable, DataClass.MODEL_IDENTIFIER_FUNCTION_DECLARATION)\r
ResultSet = Db.TblFile.Exec(SqlStatement)\r
for Result in ResultSet:\r
- ReturnType = GetReturnTypeFromModifier(Result[0])\r
+ ReturnType = GetDataTypeFromModifier(Result[0])\r
if len(ReturnType) == 0:\r
continue\r
Index = Result[0].find(ReturnType)\r
""" % (FileID)\r
ResultSet = Db.TblFile.Exec(SqlStatement)\r
for Result in ResultSet:\r
- ReturnType = GetReturnTypeFromModifier(Result[0])\r
+ ReturnType = GetDataTypeFromModifier(Result[0])\r
if len(ReturnType) == 0:\r
continue\r
Index = Result[0].find(ReturnType)\r
for Exp in GetPredicateListFromPredicateExpStr(Str[0]):\r
PredInfo = SplitPredicateStr(Exp)\r
if PredInfo[1] == None:\r
- PredVarList = GetPredicateVariable(PredInfo[0][0])\r
+ PredVarList = GetCNameList(PredInfo[0][0])\r
# No variable found, maybe value first? like (0 == VarName)\r
if len(PredVarList) == 0:\r
continue\r
continue\r
PredInfo = SplitPredicateStr(Exp)\r
if PredInfo[1] == None:\r
- PredVarList = GetPredicateVariable(PredInfo[0][0])\r
+ PredVarList = GetCNameList(PredInfo[0][0])\r
# No variable found, maybe value first? like (0 == VarName)\r
if len(PredVarList) == 0:\r
continue\r
for Exp in GetPredicateListFromPredicateExpStr(Str[0]):\r
PredInfo = SplitPredicateStr(Exp)\r
if PredInfo[1] in ('==', '!=') and PredInfo[0][1] in ('TRUE', 'FALSE'):\r
- PredVarList = GetPredicateVariable(PredInfo[0][0])\r
+ PredVarList = GetCNameList(PredInfo[0][0])\r
# No variable found, maybe value first? like (0 == VarName)\r
if len(PredVarList) == 0:\r
continue\r