Refactorization: Simplifications in symboldatabase

This commit is contained in:
PKEuS 2014-04-01 10:13:00 +02:00
parent 830249d72e
commit 5953f02654

View File

@ -960,14 +960,13 @@ bool SymbolDatabase::isFunction(const Token *tok, const Scope* outerScope, const
{ {
// function returning function pointer? '... ( ... %var% ( ... ))( ... ) {' // function returning function pointer? '... ( ... %var% ( ... ))( ... ) {'
if (tok->str() == "(" && if (tok->str() == "(" &&
tok->link()->previous()->str() == ")" && tok->link()->previous()->str() == ")") {
tok->link()->next() && const Token* tok2 = tok->link()->next();
tok->link()->next()->str() == "(" && if (tok2 && tok2->str() == "(" && Token::Match(tok2->link()->next(), "{|;|const|=")) {
tok->link()->next()->link()->next() && *funcStart = tok->link()->previous()->link()->previous();
Token::Match(tok->link()->next()->link()->next(), "{|;|const|=")) { *argStart = tok->link()->previous()->link();
*funcStart = tok->link()->previous()->link()->previous(); return true;
*argStart = tok->link()->previous()->link(); }
return true;
} }
// regular function? // regular function?
@ -988,12 +987,14 @@ bool SymbolDatabase::isFunction(const Token *tok, const Scope* outerScope, const
} }
// template constructor? // template constructor?
else if (Token::Match(tok, "%var% <") && Token::simpleMatch(tok->next()->link(), "> (") && else if (Token::Match(tok, "%var% <") && Token::simpleMatch(tok->next()->link(), "> (")) {
(Token::Match(tok->next()->link()->next()->link(), ") const| ;|{|=") || const Token* tok2 = tok->next()->link()->next()->link();
Token::Match(tok->next()->link()->next()->link(), ") : ::| %var% (|::|<|{"))) { if (Token::Match(tok2, ") const| ;|{|=") ||
*funcStart = tok; Token::Match(tok2, ") : ::| %var% (|::|<|{")) {
*argStart = tok->next()->link()->next(); *funcStart = tok;
return true; *argStart = tok2->link();
return true;
}
} }
return false; return false;