Logo ROOT  
Reference Guide
 
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 </home/sftnight/build/workspace/root-makedoc-v630/rootspi/rdoc/src/v6-30-00-patches/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 200 of file TClingClassInfo.cxx.

◆ DeleteArray()

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

Definition at line 217 of file TClingClassInfo.cxx.

◆ Destruct()

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

Definition at line 237 of file TClingClassInfo.cxx.

◆ FileName()

const char * TClingClassInfo::FileName ( )

Definition at line 1362 of file TClingClassInfo.cxx.

◆ FullName()

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

Definition at line 1372 of file TClingClassInfo.cxx.

◆ GetBaseOffset()

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

Definition at line 612 of file TClingClassInfo.cxx.

◆ GetDataMember()

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

Definition at line 278 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 248 of file TClingClassInfo.cxx.

◆ GetMethod() [1/5]

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

Definition at line 292 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 339 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 332 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 433 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 425 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 565 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 506 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 499 of file TClingClassInfo.cxx.

◆ GetOffset()

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

Definition at line 585 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 833 of file TClingClassInfo.cxx.

◆ GetUsingNamespaces()

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

Definition at line 643 of file TClingClassInfo.cxx.

◆ HasDefaultConstructor()

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

Definition at line 672 of file TClingClassInfo.cxx.

◆ HasMethod()

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

Definition at line 710 of file TClingClassInfo.cxx.

◆ Init() [1/4]

void TClingClassInfo::Init ( const char *  name)

Definition at line 722 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 762 of file TClingClassInfo.cxx.

◆ InternalNext()

int TClingClassInfo::InternalNext ( )

Definition at line 929 of file TClingClassInfo.cxx.

◆ IsBase()

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

Definition at line 791 of file TClingClassInfo.cxx.

◆ IsEnum()

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

Definition at line 815 of file TClingClassInfo.cxx.

◆ IsLoaded()

bool TClingClassInfo::IsLoaded ( ) const

Definition at line 883 of file TClingClassInfo.cxx.

◆ IsScopedEnum()

bool TClingClassInfo::IsScopedEnum ( ) const

Definition at line 826 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 913 of file TClingClassInfo.cxx.

◆ New() [1/4]

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

Definition at line 1062 of file TClingClassInfo.cxx.

◆ New() [2/4]

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

Definition at line 1110 of file TClingClassInfo.cxx.

◆ New() [3/4]

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

Definition at line 1160 of file TClingClassInfo.cxx.

◆ New() [4/4]

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

Definition at line 1206 of file TClingClassInfo.cxx.

◆ Next()

int TClingClassInfo::Next ( )

Definition at line 1057 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 1251 of file TClingClassInfo.cxx.

◆ RootFlag()

int TClingClassInfo::RootFlag ( ) const

Definition at line 1307 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 1316 of file TClingClassInfo.cxx.

◆ Tagnum()

Longptr_t TClingClassInfo::Tagnum ( ) const

Definition at line 1354 of file TClingClassInfo.cxx.

◆ Title()

const char * TClingClassInfo::Title ( )

Definition at line 1394 of file TClingClassInfo.cxx.

◆ TmpltName()

const char * TClingClassInfo::TmpltName ( ) const

Definition at line 1434 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