Small refactorizations:

- Optimized performance of several functions by adding pre-checks
- Simplified some code
- Fixed VS warning in testsymboldatabase.cpp
This commit is contained in:
PKEuS 2016-05-25 15:30:49 +02:00
parent 8c0eab3eb3
commit c7b3836379
5 changed files with 12 additions and 11 deletions

View File

@ -85,7 +85,7 @@ void CheckString::checkAlwaysTrueOrFalseStringCompare()
return; return;
for (const Token* tok = _tokenizer->tokens(); tok; tok = tok->next()) { for (const Token* tok = _tokenizer->tokens(); tok; tok = tok->next()) {
if (tok->isName() && Token::Match(tok, "memcmp|strncmp|strcmp|stricmp|strverscmp|bcmp|strcmpi|strcasecmp|strncasecmp|strncasecmp_l|strcasecmp_l|wcsncasecmp|wcscasecmp|wmemcmp|wcscmp|wcscasecmp_l|wcsncasecmp_l|wcsncmp|_mbscmp|_memicmp|_memicmp_l|_stricmp|_wcsicmp|_mbsicmp|_stricmp_l|_wcsicmp_l|_mbsicmp_l (")) { if (tok->isName() && tok->strAt(1) == "(" && Token::Match(tok, "memcmp|strncmp|strcmp|stricmp|strverscmp|bcmp|strcmpi|strcasecmp|strncasecmp|strncasecmp_l|strcasecmp_l|wcsncasecmp|wcscasecmp|wmemcmp|wcscmp|wcscasecmp_l|wcsncasecmp_l|wcsncmp|_mbscmp|_memicmp|_memicmp_l|_stricmp|_wcsicmp|_mbsicmp|_stricmp_l|_wcsicmp_l|_mbsicmp_l")) {
if (Token::Match(tok->tokAt(2), "%str% , %str% ,|)")) { if (Token::Match(tok->tokAt(2), "%str% , %str% ,|)")) {
const std::string &str1 = tok->strAt(2); const std::string &str1 = tok->strAt(2);
const std::string &str2 = tok->strAt(4); const std::string &str2 = tok->strAt(4);

View File

@ -1346,11 +1346,10 @@ std::list<std::string> Preprocessor::getcfgs(const std::string &filedata, const
} }
} }
if (par != 0) { if (par != 0) {
std::ostringstream lineStream; std::ostringstream errorId;
lineStream << __LINE__; errorId << "preprocessor" << __LINE__;
const std::string errorId = "preprocessor" + lineStream.str();
const std::string errorText = "mismatching number of '(' and ')' in this line: " + def; const std::string errorText = "mismatching number of '(' and ')' in this line: " + def;
writeError(filename, linenr, _errorLogger, errorId, errorText); writeError(filename, linenr, _errorLogger, errorId.str(), errorText);
ret.clear(); ret.clear();
return ret; return ret;
} }
@ -1455,8 +1454,7 @@ std::list<std::string> Preprocessor::getcfgs(const std::string &filedata, const
deflist.back() = ndeflist.back(); deflist.back() = ndeflist.back();
ndeflist.pop_back(); ndeflist.pop_back();
} else { } else {
std::string tempDef((deflist.back() == "1") ? "0" : "1"); deflist.back() = (deflist.back() == "1") ? "0" : "1";
deflist.back() = tempDef;
} }
} }

View File

@ -1208,7 +1208,7 @@ SymbolDatabase::SymbolDatabase(const Tokenizer *tokenizer, const Settings *setti
// find enumerators // find enumerators
for (const Token* tok = _tokenizer->list.front(); tok != _tokenizer->list.back(); tok = tok->next()) { for (const Token* tok = _tokenizer->list.front(); tok != _tokenizer->list.back(); tok = tok->next()) {
if (!tok->isName() || tok->varId() || tok->function() || tok->type() || tok->enumerator()) if (tok->tokType() != Token::eName)
continue; continue;
const Enumerator * enumerator = findEnumerator(tok); const Enumerator * enumerator = findEnumerator(tok);
if (enumerator) if (enumerator)

View File

@ -8897,7 +8897,10 @@ void Tokenizer::simplifyBitfields()
} }
Token *last = nullptr; Token *last = nullptr;
if (Token::Match(tok, ";|{|}|public:|protected:|private: const| %type% %name% :") && if (!Token::Match(tok, ";|{|}|public:|protected:|private:"))
continue;
if (Token::Match(tok->next(), "const| %type% %name% :") &&
!Token::Match(tok->next(), "case|public|protected|private|class|struct") && !Token::Match(tok->next(), "case|public|protected|private|class|struct") &&
!Token::simpleMatch(tok->tokAt(2), "default :")) { !Token::simpleMatch(tok->tokAt(2), "default :")) {
Token *tok1 = (tok->next()->str() == "const") ? tok->tokAt(3) : tok->tokAt(2); Token *tok1 = (tok->next()->str() == "const") ? tok->tokAt(3) : tok->tokAt(2);
@ -8912,7 +8915,7 @@ void Tokenizer::simplifyBitfields()
last = tok1->next(); last = tok1->next();
} }
} else if (Token::Match(tok, ";|{|}|public:|protected:|private: const| %type% : %any% ;") && } else if (Token::Match(tok->next(), "const| %type% : %any% ;") &&
tok->next()->str() != "default") { tok->next()->str() != "default") {
const int offset = (tok->next()->str() == "const") ? 1 : 0; const int offset = (tok->next()->str() == "const") ? 1 : 0;

View File

@ -2297,7 +2297,7 @@ private:
void enum4() { // #7493 void enum4() { // #7493
GET_SYMBOL_DB("enum Offsets { O1, O2, O3 };\n" GET_SYMBOL_DB("enum Offsets { O1, O2, O3 };\n"
"enum MyEnums { E1=O1+1, E2=O2+1, E3=O3+1 };"); "enum MyEnums { E1=O1+1, E2=O2+1, E3=O3+1 };");
ASSERT(db); ASSERT(db != nullptr);
if (!db) if (!db)
return; return;
ASSERT_EQUALS(3U, db->scopeList.size()); ASSERT_EQUALS(3U, db->scopeList.size());