40#ifndef LLVM_CLANG_ASTMATCHERS_ASTMATCHFINDER_H
41#define LLVM_CLANG_ASTMATCHERS_ASTMATCHFINDER_H
44#include "llvm/ADT/SmallPtrSet.h"
45#include "llvm/ADT/StringMap.h"
46#include "llvm/Support/Timer.h"
51namespace ast_matchers {
113 virtual StringRef
getID()
const;
213 std::vector<std::pair<internal::DynTypedMatcher, MatchCallback *>>
215 std::vector<std::pair<TypeMatcher, MatchCallback *>>
Type;
216 std::vector<std::pair<NestedNameSpecifierMatcher, MatchCallback *>>
218 std::vector<std::pair<NestedNameSpecifierLocMatcher, MatchCallback *>>
220 std::vector<std::pair<TypeLocMatcher, MatchCallback *>>
TypeLoc;
221 std::vector<std::pair<CXXCtorInitializerMatcher, MatchCallback *>>
CtorInit;
222 std::vector<std::pair<TemplateArgumentLocMatcher, MatchCallback *>>
224 std::vector<std::pair<AttrMatcher, MatchCallback *>>
Attr;
252template <
typename MatcherT,
typename NodeT>
256template <
typename MatcherT>
263template <
typename MatcherT>
276template <
typename NodeT>
280 if (
const NodeT *
Node = N.getNodeAs<NodeT>(BoundTo))
301template <
typename MatcherT>
306 Finder.addMatcher(Matcher, &Callback);
307 Finder.match(
Node, Context);
308 return std::move(Callback.Nodes);
311template <
typename MatcherT,
typename NodeT>
317template <
typename MatcherT>
322 Finder.addMatcher(Matcher, &Callback);
323 Finder.matchAST(Context);
324 return std::move(Callback.Nodes);
332 Finder.addDynamicMatcher(Matcher, &Callback);
333 Finder.match(
Node, Context);
334 return std::move(Callback.Nodes);
337template <
typename NodeT>