//--------------------------------------------------------------------------- #include "CommonCheck.h" #include "tokenize.h" #include #include #include #include //--------------------------------------------------------------------------- bool HasErrors; bool OnlyReportUniqueErrors; std::ostringstream errout; //--------------------------------------------------------------------------- std::string FileLine(const TOKEN *tok) { std::ostringstream ostr; ostr << "[" << Files[tok->FileIndex] << ":" << tok->linenr << "]"; return ostr.str(); } //--------------------------------------------------------------------------- std::list ErrorList; void ReportErr(const std::string &errmsg) { if ( OnlyReportUniqueErrors ) { if ( std::find( ErrorList.begin(), ErrorList.end(), errmsg ) != ErrorList.end() ) return; ErrorList.push_back( errmsg ); } errout << errmsg << std::endl; HasErrors = true; } //--------------------------------------------------------------------------- bool IsName(const char str[]) { return (str[0]=='_' || std::isalpha(str[0])); } //--------------------------------------------------------------------------- bool IsNumber(const char str[]) { return std::isdigit(str[0]); } //--------------------------------------------------------------------------- bool IsStandardType(const char str[]) { if (!str) return false; bool Ret = false; const char *type[] = {"bool","char","short","int","long","float","double",0}; for (int i = 0; type[i]; i++) Ret |= (strcmp(str,type[i])==0); return Ret; } //--------------------------------------------------------------------------- bool setindentlevel( const TOKEN *tok, int &indentlevel, int endlevel ) { if ( tok->str[0] == '{' ) indentlevel++; else if ( tok->str[0] == '}' ) indentlevel--; return bool(tok->str[0]=='}' && indentlevel<=endlevel); } //---------------------------------------------------------------------------