12#ifndef ROOT_TClingMemberIter
13#define ROOT_TClingMemberIter
23#include "clang/AST/DeclBase.h"
24#include "clang/AST/DeclCXX.h"
26#include "llvm/ADT/SmallVector.h"
33class RedeclarableTemplateDecl;
45 llvm::SmallVector<clang::DeclContext *, 2>
fContexts;
61 DCIter(clang::DeclContext *DC, cling::Interpreter *interp);
91 const clang::UsingDecl::shadow_iterator &
End()
const {
return fUsingIterStack.top().fShadowedEnd; }
95 UsingDeclIter(
const clang::UsingDecl *UD, cling::Interpreter *interp);
163 virtual const clang::Decl *
Get()
const
Iteration over collected DeclContexts.
llvm::SmallVector< clang::DeclContext *, 2 > fContexts
clang::Decl * operator*() const
bool AdvanceToFirstValidDecl()
Do not return inline namespaces etc.
cling::Interpreter * fInterp
bool IterNext()
Increment the iterator, possibly moving to the next context.
clang::DeclContext::decl_iterator fDeclIter
clang::Decl * operator->() const
bool HandleInlineDeclContext()
Return true if fDeclIter has triggered an inline or anonymous namespace / ... to be appended to fCont...
std::stack< UsingDeclFrame > fUsingIterStack
Handle nested UsingDecls:
const clang::UsingDecl::shadow_iterator & Iter() const
const clang::UsingDecl::shadow_iterator & End() const
cling::Interpreter * fInterp
clang::UsingDecl::shadow_iterator & Iter()
clang::Decl * operator->() const
clang::Decl * operator*() const
Iterate over all DeclT-s (or UsingShadowDecl-s pointing to DeclT-s) of a decl context,...
ClingMemberIterInternal::UsingDeclIter fUsingDeclIter
TClingMemberIter()=default
virtual const clang::Decl * Get() const
virtual bool ShouldSkip(const clang::Decl *D) const =0
virtual bool ShouldSkip(const clang::UsingShadowDecl *USD) const
const clang::Decl * fTemplateSpec
const clang::Decl * operator->() const
bool Next()
Advance to next non-skipped; return false if no next decl exists.
cling::Interpreter * fInterp
TClingMemberIter(cling::Interpreter *interp, clang::DeclContext *DC)
virtual clang::Decl * AdvanceUnfiltered()
const clang::Decl * GetDeclSlow() const
cling::Interpreter * GetInterpreter() const
virtual bool IsValid() const
ClingMemberIterInternal::DCIter fDCIter
const clang::Decl * operator*() const
virtual const clang::Decl * InstantiateTemplateWithDefaults(const clang::RedeclarableTemplateDecl *TD) const
clang::UsingDecl::shadow_iterator fShadowedEnd
UsingDeclFrame(const clang::UsingDecl *UD)
clang::UsingDecl::shadow_iterator fShadowedIter