inlined `findAstNode()` calls (#4146)

This commit is contained in:
Oliver Stöneberg 2022-05-31 13:37:21 +02:00 committed by GitHub
parent 423e67bd6a
commit 3d5d2e8fd8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 14 deletions

View File

@ -45,19 +45,6 @@
#include <unordered_map>
#include <utility>
const Token* findAstNode(const Token* ast, const std::function<bool(const Token*)>& pred)
{
const Token* result = nullptr;
visitAstNodes(ast, [&](const Token* tok) {
if (pred(tok)) {
result = tok;
return ChildrenToVisit::done;
}
return ChildrenToVisit::op1_and_op2;
});
return result;
}
const Token* findExpression(const nonneg int exprid,
const Token* start,
const Token* end,

View File

@ -79,7 +79,20 @@ void visitAstNodes(T *ast, const TFunc &visitor)
} while (true);
}
const Token* findAstNode(const Token* ast, const std::function<bool(const Token*)>& pred);
template<class TFunc>
const Token* findAstNode(const Token* ast, const TFunc& pred)
{
const Token* result = nullptr;
visitAstNodes(ast, [&](const Token* tok) {
if (pred(tok)) {
result = tok;
return ChildrenToVisit::done;
}
return ChildrenToVisit::op1_and_op2;
});
return result;
}
const Token* findExpression(const nonneg int exprid,
const Token* start,
const Token* end,