#include "clang/AST/ParentMapContext.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/AST/Decl.h"
#include "clang/AST/Expr.h"
#include "clang/AST/TemplateBase.h"
usingnamespaceclang;
ParentMapContext::ParentMapContext(ASTContext &Ctx) : … { … }
ParentMapContext::~ParentMapContext() = default;
void ParentMapContext::clear() { … }
const Expr *ParentMapContext::traverseIgnored(const Expr *E) const { … }
Expr *ParentMapContext::traverseIgnored(Expr *E) const { … }
DynTypedNode ParentMapContext::traverseIgnored(const DynTypedNode &N) const { … }
template <typename T, typename... U>
std::tuple<bool, DynTypedNodeList, const T *, const U *...>
matchParents(const DynTypedNodeList &NodeList,
ParentMapContext::ParentMap *ParentMap);
template <typename, typename...> struct MatchParents;
class ParentMapContext::ParentMap { … };
template <typename T, typename... U> struct MatchParents { … };
MatchParents<T>;
template <typename T, typename... U>
std::tuple<bool, DynTypedNodeList, const T *, const U *...>
matchParents(const DynTypedNodeList &NodeList,
ParentMapContext::ParentMap *ParentMap) { … }
template <typename T> static DynTypedNode createDynTypedNode(const T &Node) { … }
template <> DynTypedNode createDynTypedNode(const TypeLoc &Node) { … }
template <>
DynTypedNode createDynTypedNode(const NestedNameSpecifierLoc &Node) { … }
template <> DynTypedNode createDynTypedNode(const ObjCProtocolLoc &Node) { … }
class ParentMapContext::ParentMap::ASTVisitor
: public RecursiveASTVisitor<ASTVisitor> { … };
ParentMapContext::ParentMap::ParentMap(ASTContext &Ctx) { … }
DynTypedNodeList ParentMapContext::getParents(const DynTypedNode &Node) { … }