12 #ifndef ROOT_TClingMethodInfo
13 #define ROOT_TClingMethodInfo
34 #include "clang/AST/DeclBase.h"
35 #include "llvm/ADT/SmallVector.h"
46 namespace TMetaUtils {
47 class TNormalizedCtxt;
51 class TClingClassInfo;
54 class TClingMethodInfo final :
public TClingDeclInfo {
56 cling::Interpreter *fInterp;
57 llvm::SmallVector<clang::DeclContext *, 2> fContexts;
59 unsigned int fContextIdx;
60 clang::DeclContext::decl_iterator fIter;
62 const clang::FunctionDecl *fTemplateSpec;
64 const clang::Decl* GetDeclSlow()
const;
67 explicit TClingMethodInfo(cling::Interpreter *interp)
68 : TClingDeclInfo(nullptr), fInterp(interp), fFirstTime(true), fContextIdx(0U), fTitle(
""),
71 TClingMethodInfo(
const TClingMethodInfo&);
72 TClingMethodInfo& operator=(
const TClingMethodInfo &in);
75 TClingMethodInfo(cling::Interpreter *,
const clang::FunctionDecl *);
76 TClingMethodInfo(cling::Interpreter *, TClingClassInfo *);
80 const clang::FunctionDecl *GetMethodDecl()
const;
81 TDictionary::DeclId_t GetDeclId()
const;
82 cling::Interpreter *GetInterpreter()
const {
return fInterp; }
83 void CreateSignature(TString &signature)
const;
84 void Init(
const clang::FunctionDecl *);
85 void *InterfaceMethod(
const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt)
const;
87 const clang::Decl *GetDecl()
const override {
88 if (
const clang::Decl* SingleDecl = TClingDeclInfo::GetDecl())
93 int NDefaultArg()
const;
96 long Property()
const;
97 long ExtraProperty()
const;
98 TClingTypeInfo *Type()
const;
99 std::string GetMangledName()
const;
100 const char *GetPrototype();
101 const char *Name()
override;
102 const char *TypeName()
const;
106 #endif // ROOT_TClingMethodInfo