Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
TClingClassInfo Class Referencefinal

Emulation of the CINT ClassInfo class.

The CINT C++ interpreter provides an interface to metadata about a class through the ClassInfo class. This class provides the same functionality, using an interface as close as possible to ClassInfo but the class metadata comes from the Clang C++ compiler, not CINT.

Definition at line 59 of file TClingClassInfo.h.

Public Types

enum  EInheritanceMode { kInThisScope = 0 , kWithInheritance = 1 }
 

Public Member Functions

 TClingClassInfo ()
 
 TClingClassInfo (cling::Interpreter *, Bool_t all=kTRUE)
 
 TClingClassInfo (cling::Interpreter *, const char *classname, bool intantiateTemplate=kTRUE)
 
 TClingClassInfo (cling::Interpreter *interp, const clang::Decl *D)
 
 TClingClassInfo (cling::Interpreter *interp, const clang::Type &tag)
 
 TClingClassInfo (const TClingClassInfo &rhs)
 
void AddBaseOffsetFunction (const clang::Decl *decl, OffsetPtrFunc_t func)
 
void AddBaseOffsetValue (const clang::Decl *decl, ptrdiff_t offset)
 
long ClassProperty () const
 
void Delete (void *arena, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
 
void DeleteArray (void *arena, bool dtorOnly, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
 
void Destruct (void *arena, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
 
const char * FileName ()
 
void FullName (std::string &output, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
 
ptrdiff_t GetBaseOffset (TClingClassInfo *toBase, void *address, bool isDerivedObject)
 
const clang::ValueDecl * GetDataMember (const char *name) const
 
TDictionary::DeclId_t GetDeclId () const
 
const clang::FunctionTemplateDecl * GetFunctionTemplate (const char *fname) const
 
TClingMethodInfo GetMethod (const char *fname) const
 
TClingMethodInfo GetMethod (const char *fname, const char *proto, bool objectIsConst, Longptr_t *poffset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch, EInheritanceMode imode=kWithInheritance) const
 
TClingMethodInfo GetMethod (const char *fname, const char *proto, Longptr_t *poffset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch, EInheritanceMode imode=kWithInheritance) const
 
TClingMethodInfo GetMethod (const char *fname, const llvm::SmallVectorImpl< clang::QualType > &proto, bool objectIsConst, Longptr_t *poffset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch, EInheritanceMode imode=kWithInheritance) const
 
TClingMethodInfo GetMethod (const char *fname, const llvm::SmallVectorImpl< clang::QualType > &proto, Longptr_t *poffset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch, EInheritanceMode imode=kWithInheritance) const
 
int GetMethodNArg (const char *method, const char *proto, Bool_t objectIsConst, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch) const
 
TClingMethodInfo GetMethodWithArgs (const char *fname, const char *arglist, bool objectIsConst, Longptr_t *poffset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch, EInheritanceMode imode=kWithInheritance) const
 
TClingMethodInfo GetMethodWithArgs (const char *fname, const char *arglist, Longptr_t *poffset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch, EInheritanceMode imode=kWithInheritance) const
 
Longptr_t GetOffset (const clang::CXXMethodDecl *md) const
 
const clang::Type * GetType () const
 
EDataType GetUnderlyingType () const
 
std::vector< std::string > GetUsingNamespaces ()
 
ROOT::TMetaUtils::EIOCtorCategory HasDefaultConstructor (bool checkio=false, std::string *type_name=nullptr) const
 
bool HasMethod (const char *name) const
 
void Init (const char *name)
 
void Init (const clang::Decl *decl)
 
void Init (const clang::Type &tag)
 
void Init (int tagnum)
 
int InternalNext ()
 
bool IsBase (const char *name) const
 
bool IsLoaded () const
 
bool IsScopedEnum () const
 
bool IsValidMethod (const char *method, const char *proto, Bool_t objectIsConst, Longptr_t *offset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch) const
 
void * New (const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
 
void * New (int n, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
 
void * New (int n, void *arena, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
 
void * New (void *arena, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
 
int Next ()
 
TClingClassInfooperator= (const TClingClassInfo &rhs)
 
long Property () const
 
int RootFlag () const
 
void SetDecl (const clang::Decl *D)
 
int Size () const
 
Longptr_t Tagnum () const
 
const char * Title ()
 
const char * TmpltName () const
 
- Public Member Functions inherited from TClingDeclInfo
 TClingDeclInfo ()=default
 
 TClingDeclInfo (const clang::Decl *D)
 
virtual ~TClingDeclInfo ()
 
clang::Decl * GetDecl ()
 
virtual const clang::Decl * GetDecl () const
 
virtual bool IsValid () const
 
virtual const char * Name () const
 

Static Public Member Functions

static bool IsEnum (cling::Interpreter *interp, const char *name)
 

Private Attributes

std::string fDeclFileName
 
bool fDescend: 1
 
bool fFirstTime: 1
 
cling::Interpreter * fInterp = nullptr
 
bool fIsIter: 1
 
clang::DeclContext::decl_iterator fIter
 
bool fIterAll: 1
 
std::vector< clang::DeclContext::decl_iterator > fIterStack
 
llvm::DenseMap< const clang::Decl *, std::pair< ptrdiff_t, OffsetPtrFunc_t > > fOffsetCache
 
std::mutex fOffsetCacheMutex
 
std::string fTitle
 
const clang::Type * fType = nullptr
 

Additional Inherited Members

- Protected Member Functions inherited from TClingDeclInfo
long Property (long property, clang::QualType &qt) const
 
- Protected Attributes inherited from TClingDeclInfo
const clang::Decl * fDecl = nullptr
 
std::string fNameCache
 

#include </github/home/ROOT-CI/src/core/metacling/src/TClingClassInfo.h>

Inheritance diagram for TClingClassInfo:
[legend]

Member Enumeration Documentation

◆ EInheritanceMode

Enumerator
kInThisScope 
kWithInheritance 

Definition at line 79 of file TClingClassInfo.h.

Constructor & Destructor Documentation

◆ TClingClassInfo() [1/6]

TClingClassInfo::TClingClassInfo ( )
inlineexplicit

Definition at line 85 of file TClingClassInfo.h.

◆ TClingClassInfo() [2/6]

TClingClassInfo::TClingClassInfo ( const TClingClassInfo & rhs)
inline

Definition at line 89 of file TClingClassInfo.h.

◆ TClingClassInfo() [3/6]

TClingClassInfo::TClingClassInfo ( cling::Interpreter * interp,
Bool_t all = kTRUE )
explicit

Definition at line 71 of file TClingClassInfo.cxx.

◆ TClingClassInfo() [4/6]

TClingClassInfo::TClingClassInfo ( cling::Interpreter * interp,
const char * classname,
bool intantiateTemplate = kTRUE )
explicit

Definition at line 81 of file TClingClassInfo.cxx.

◆ TClingClassInfo() [5/6]

TClingClassInfo::TClingClassInfo ( cling::Interpreter * interp,
const clang::Type & tag )
explicit

◆ TClingClassInfo() [6/6]

TClingClassInfo::TClingClassInfo ( cling::Interpreter * interp,
const clang::Decl * D )
explicit

Member Function Documentation

◆ AddBaseOffsetFunction()

void TClingClassInfo::AddBaseOffsetFunction ( const clang::Decl * decl,
OffsetPtrFunc_t func )
inline

Definition at line 118 of file TClingClassInfo.h.

◆ AddBaseOffsetValue()

void TClingClassInfo::AddBaseOffsetValue ( const clang::Decl * decl,
ptrdiff_t offset )

Definition at line 131 of file TClingClassInfo.cxx.

◆ ClassProperty()

long TClingClassInfo::ClassProperty ( ) const

Definition at line 141 of file TClingClassInfo.cxx.

◆ Delete()

void TClingClassInfo::Delete ( void * arena,
const ROOT::TMetaUtils::TNormalizedCtxt & normCtxt ) const

Definition at line 204 of file TClingClassInfo.cxx.

◆ DeleteArray()

void TClingClassInfo::DeleteArray ( void * arena,
bool dtorOnly,
const ROOT::TMetaUtils::TNormalizedCtxt & normCtxt ) const

Definition at line 221 of file TClingClassInfo.cxx.

◆ Destruct()

void TClingClassInfo::Destruct ( void * arena,
const ROOT::TMetaUtils::TNormalizedCtxt & normCtxt ) const

Definition at line 241 of file TClingClassInfo.cxx.

◆ FileName()

const char * TClingClassInfo::FileName ( )

Definition at line 1366 of file TClingClassInfo.cxx.

◆ FullName()

void TClingClassInfo::FullName ( std::string & output,
const ROOT::TMetaUtils::TNormalizedCtxt & normCtxt ) const

Definition at line 1376 of file TClingClassInfo.cxx.

◆ GetBaseOffset()

ptrdiff_t TClingClassInfo::GetBaseOffset ( TClingClassInfo * toBase,
void * address,
bool isDerivedObject )

Definition at line 616 of file TClingClassInfo.cxx.

◆ GetDataMember()

const clang::ValueDecl * TClingClassInfo::GetDataMember ( const char * name) const

Definition at line 282 of file TClingClassInfo.cxx.

◆ GetDeclId()

TDictionary::DeclId_t TClingClassInfo::GetDeclId ( ) const
inline

Definition at line 133 of file TClingClassInfo.h.

◆ GetFunctionTemplate()

const FunctionTemplateDecl * TClingClassInfo::GetFunctionTemplate ( const char * fname) const

Definition at line 252 of file TClingClassInfo.cxx.

◆ GetMethod() [1/5]

TClingMethodInfo TClingClassInfo::GetMethod ( const char * fname) const

Definition at line 296 of file TClingClassInfo.cxx.

◆ GetMethod() [2/5]

TClingMethodInfo TClingClassInfo::GetMethod ( const char * fname,
const char * proto,
bool objectIsConst,
Longptr_t * poffset,
ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch,
EInheritanceMode imode = kWithInheritance ) const

Definition at line 343 of file TClingClassInfo.cxx.

◆ GetMethod() [3/5]

TClingMethodInfo TClingClassInfo::GetMethod ( const char * fname,
const char * proto,
Longptr_t * poffset,
ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch,
EInheritanceMode imode = kWithInheritance ) const

Definition at line 336 of file TClingClassInfo.cxx.

◆ GetMethod() [4/5]

TClingMethodInfo TClingClassInfo::GetMethod ( const char * fname,
const llvm::SmallVectorImpl< clang::QualType > & proto,
bool objectIsConst,
Longptr_t * poffset,
ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch,
EInheritanceMode imode = kWithInheritance ) const

Definition at line 437 of file TClingClassInfo.cxx.

◆ GetMethod() [5/5]

TClingMethodInfo TClingClassInfo::GetMethod ( const char * fname,
const llvm::SmallVectorImpl< clang::QualType > & proto,
Longptr_t * poffset,
ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch,
EInheritanceMode imode = kWithInheritance ) const

Definition at line 429 of file TClingClassInfo.cxx.

◆ GetMethodNArg()

int TClingClassInfo::GetMethodNArg ( const char * method,
const char * proto,
Bool_t objectIsConst,
ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch ) const

Definition at line 569 of file TClingClassInfo.cxx.

◆ GetMethodWithArgs() [1/2]

TClingMethodInfo TClingClassInfo::GetMethodWithArgs ( const char * fname,
const char * arglist,
bool objectIsConst,
Longptr_t * poffset,
ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch,
EInheritanceMode imode = kWithInheritance ) const

Definition at line 510 of file TClingClassInfo.cxx.

◆ GetMethodWithArgs() [2/2]

TClingMethodInfo TClingClassInfo::GetMethodWithArgs ( const char * fname,
const char * arglist,
Longptr_t * poffset,
ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch,
EInheritanceMode imode = kWithInheritance ) const

Definition at line 503 of file TClingClassInfo.cxx.

◆ GetOffset()

Longptr_t TClingClassInfo::GetOffset ( const clang::CXXMethodDecl * md) const

Definition at line 589 of file TClingClassInfo.cxx.

◆ GetType()

const clang::Type * TClingClassInfo::GetType ( ) const
inline

Definition at line 161 of file TClingClassInfo.h.

◆ GetUnderlyingType()

EDataType TClingClassInfo::GetUnderlyingType ( ) const

Definition at line 837 of file TClingClassInfo.cxx.

◆ GetUsingNamespaces()

std::vector< std::string > TClingClassInfo::GetUsingNamespaces ( )

Definition at line 647 of file TClingClassInfo.cxx.

◆ HasDefaultConstructor()

ROOT::TMetaUtils::EIOCtorCategory TClingClassInfo::HasDefaultConstructor ( bool checkio = false,
std::string * type_name = nullptr ) const

Definition at line 676 of file TClingClassInfo.cxx.

◆ HasMethod()

bool TClingClassInfo::HasMethod ( const char * name) const

Definition at line 714 of file TClingClassInfo.cxx.

◆ Init() [1/4]

void TClingClassInfo::Init ( const char * name)

Definition at line 726 of file TClingClassInfo.cxx.

◆ Init() [2/4]

void TClingClassInfo::Init ( const clang::Decl * decl)

◆ Init() [3/4]

void TClingClassInfo::Init ( const clang::Type & tag)

◆ Init() [4/4]

void TClingClassInfo::Init ( int tagnum)

Definition at line 766 of file TClingClassInfo.cxx.

◆ InternalNext()

int TClingClassInfo::InternalNext ( )

Definition at line 933 of file TClingClassInfo.cxx.

◆ IsBase()

bool TClingClassInfo::IsBase ( const char * name) const

Definition at line 795 of file TClingClassInfo.cxx.

◆ IsEnum()

bool TClingClassInfo::IsEnum ( cling::Interpreter * interp,
const char * name )
static

Definition at line 819 of file TClingClassInfo.cxx.

◆ IsLoaded()

bool TClingClassInfo::IsLoaded ( ) const

Definition at line 887 of file TClingClassInfo.cxx.

◆ IsScopedEnum()

bool TClingClassInfo::IsScopedEnum ( ) const

Definition at line 830 of file TClingClassInfo.cxx.

◆ IsValidMethod()

bool TClingClassInfo::IsValidMethod ( const char * method,
const char * proto,
Bool_t objectIsConst,
Longptr_t * offset,
ROOT::EFunctionMatchMode mode = ROOT::kConversionMatch ) const

Definition at line 917 of file TClingClassInfo.cxx.

◆ New() [1/4]

void * TClingClassInfo::New ( const ROOT::TMetaUtils::TNormalizedCtxt & normCtxt) const

Definition at line 1066 of file TClingClassInfo.cxx.

◆ New() [2/4]

void * TClingClassInfo::New ( int n,
const ROOT::TMetaUtils::TNormalizedCtxt & normCtxt ) const

Definition at line 1114 of file TClingClassInfo.cxx.

◆ New() [3/4]

void * TClingClassInfo::New ( int n,
void * arena,
const ROOT::TMetaUtils::TNormalizedCtxt & normCtxt ) const

Definition at line 1164 of file TClingClassInfo.cxx.

◆ New() [4/4]

void * TClingClassInfo::New ( void * arena,
const ROOT::TMetaUtils::TNormalizedCtxt & normCtxt ) const

Definition at line 1210 of file TClingClassInfo.cxx.

◆ Next()

int TClingClassInfo::Next ( )

Definition at line 1061 of file TClingClassInfo.cxx.

◆ operator=()

TClingClassInfo & TClingClassInfo::operator= ( const TClingClassInfo & rhs)
inline

Definition at line 100 of file TClingClassInfo.h.

◆ Property()

long TClingClassInfo::Property ( ) const

Definition at line 1255 of file TClingClassInfo.cxx.

◆ RootFlag()

int TClingClassInfo::RootFlag ( ) const

Definition at line 1311 of file TClingClassInfo.cxx.

◆ SetDecl()

void TClingClassInfo::SetDecl ( const clang::Decl * D)
inline

Definition at line 128 of file TClingClassInfo.h.

◆ Size()

int TClingClassInfo::Size ( ) const

Definition at line 1320 of file TClingClassInfo.cxx.

◆ Tagnum()

Longptr_t TClingClassInfo::Tagnum ( ) const

Definition at line 1358 of file TClingClassInfo.cxx.

◆ Title()

const char * TClingClassInfo::Title ( )

Definition at line 1398 of file TClingClassInfo.cxx.

◆ TmpltName()

const char * TClingClassInfo::TmpltName ( ) const

Definition at line 1438 of file TClingClassInfo.cxx.

Member Data Documentation

◆ fDeclFileName

std::string TClingClassInfo::fDeclFileName
private

Definition at line 72 of file TClingClassInfo.h.

◆ fDescend

bool TClingClassInfo::fDescend
private

Definition at line 65 of file TClingClassInfo.h.

◆ fFirstTime

bool TClingClassInfo::fFirstTime
private

Definition at line 64 of file TClingClassInfo.h.

◆ fInterp

cling::Interpreter* TClingClassInfo::fInterp = nullptr
private

Definition at line 63 of file TClingClassInfo.h.

◆ fIsIter

bool TClingClassInfo::fIsIter
private

Definition at line 67 of file TClingClassInfo.h.

◆ fIter

clang::DeclContext::decl_iterator TClingClassInfo::fIter
private

Definition at line 68 of file TClingClassInfo.h.

◆ fIterAll

bool TClingClassInfo::fIterAll
private

Definition at line 66 of file TClingClassInfo.h.

◆ fIterStack

std::vector<clang::DeclContext::decl_iterator> TClingClassInfo::fIterStack
private

Definition at line 70 of file TClingClassInfo.h.

◆ fOffsetCache

llvm::DenseMap<const clang::Decl*, std::pair<ptrdiff_t, OffsetPtrFunc_t> > TClingClassInfo::fOffsetCache
private

Definition at line 75 of file TClingClassInfo.h.

◆ fOffsetCacheMutex

std::mutex TClingClassInfo::fOffsetCacheMutex
private

Definition at line 74 of file TClingClassInfo.h.

◆ fTitle

std::string TClingClassInfo::fTitle
private

Definition at line 71 of file TClingClassInfo.h.

◆ fType

const clang::Type* TClingClassInfo::fType = nullptr
private

Definition at line 69 of file TClingClassInfo.h.

  • core/metacling/src/TClingClassInfo.h
  • core/metacling/src/TClingClassInfo.cxx