12#ifndef ROOT_TClingClassInfo
13#define ROOT_TClingClassInfo
35#include "llvm/ADT/DenseMap.h"
43 class FunctionTemplateDecl;
48 namespace TMetaUtils {
49 class TNormalizedCtxt;
64 clang::DeclContext::decl_iterator
fIter;
66 std::vector<clang::DeclContext::decl_iterator>
fIterStack;
69 llvm::DenseMap<const clang::Decl*, std::pair<ptrdiff_t, OffsetPtrFunc_t> >
fOffsetCache;
83 explicit TClingClassInfo(cling::Interpreter *,
const char *classname,
bool intantiateTemplate =
kTRUE);
89 void Delete(
void *arena,
const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt)
const;
90 void DeleteArray(
void *arena,
bool dtorOnly,
const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt)
const;
91 void Destruct(
void *arena,
const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt)
const;
101 return (
const clang::Decl*)(
fDecl->getCanonicalDecl());
124 long GetOffset(
const clang::CXXMethodDecl* md)
const;
132 void Init(
int tagnum);
135 static bool IsEnum(cling::Interpreter *interp,
const char *
name);
142 void *
New(
const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt)
const;
143 void *
New(
int n,
const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt)
const;
144 void *
New(
int n,
void *arena,
const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt)
const;
145 void *
New(
void *arena,
const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt)
const;
151 void FullName(std::string &
output,
const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt)
const;
ptrdiff_t(* OffsetPtrFunc_t)(void *, bool)
The file contains a base class of TCling*Info classes.
Emulation of the CINT ClassInfo class.
bool HasDefaultConstructor() const
clang::DeclContext::decl_iterator fIter
static bool IsEnum(cling::Interpreter *interp, const char *name)
long ClassProperty() const
void Init(const char *name)
TClingClassInfo(cling::Interpreter *, const clang::Decl *)
void FullName(std::string &output, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
llvm::DenseMap< const clang::Decl *, std::pair< ptrdiff_t, OffsetPtrFunc_t > > fOffsetCache
TClingClassInfo(cling::Interpreter *, const clang::Type &)
EDataType GetUnderlyingType() const
TClingMethodInfo GetMethodWithArgs(const char *fname, const char *arglist, long *poffset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch, EInheritanceMode imode=kWithInheritance) const
const char * TmpltName() const
void AddBaseOffsetValue(const clang::Decl *decl, ptrdiff_t offset)
const clang::Type * GetType() const
ptrdiff_t GetBaseOffset(TClingClassInfo *toBase, void *address, bool isDerivedObject)
void SetDecl(const clang::Decl *D)
bool IsScopedEnum() const
const clang::FunctionTemplateDecl * GetFunctionTemplate(const char *fname) const
void Init(const clang::Decl *)
int GetMethodNArg(const char *method, const char *proto, Bool_t objectIsConst, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch) const
bool HasMethod(const char *name) const
TDictionary::DeclId_t GetDeclId() const
std::string fDeclFileName
void DeleteArray(void *arena, bool dtorOnly, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
void * New(const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
bool IsValidMethod(const char *method, const char *proto, Bool_t objectIsConst, long *offset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch) const
TClingMethodInfo GetMethod(const char *fname) const
long GetOffset(const clang::CXXMethodDecl *md) const
TClingClassInfo & operator=(const TClingClassInfo &)=delete
const clang::ValueDecl * GetDataMember(const char *name) const
void AddBaseOffsetFunction(const clang::Decl *decl, OffsetPtrFunc_t func)
void Destruct(void *arena, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
std::vector< std::string > GetUsingNamespaces()
cling::Interpreter * fInterp
void Init(const clang::Type &)
std::vector< clang::DeclContext::decl_iterator > fIterStack
bool IsBase(const char *name) const
const clang::Type * fType
void Delete(void *arena, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
const clang::Decl * fDecl
Emulation of the CINT MethodInfo class.
Type
enumeration specifying the integration types.
static constexpr double L
static void output(int code)