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 *, const clang::Decl *)
 
 TClingClassInfo (cling::Interpreter *, const clang::Type &)
 
 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, long *poffset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch, EInheritanceMode imode=kWithInheritance) const
 
TClingMethodInfo GetMethod (const char *fname, const char *proto, long *poffset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch, EInheritanceMode imode=kWithInheritance) const
 
TClingMethodInfo GetMethod (const char *fname, const llvm::SmallVectorImpl< clang::QualType > &proto, bool objectIsConst, long *poffset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch, EInheritanceMode imode=kWithInheritance) const
 
TClingMethodInfo GetMethod (const char *fname, const llvm::SmallVectorImpl< clang::QualType > &proto, long *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, long *poffset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch, EInheritanceMode imode=kWithInheritance) const
 
TClingMethodInfo GetMethodWithArgs (const char *fname, const char *arglist, long *poffset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch, EInheritanceMode imode=kWithInheritance) const
 
long 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 *)
 
void Init (const clang::Type &)
 
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, long *offset, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch) const
 
voidNew (const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
 
voidNew (int n, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
 
voidNew (int n, void *arena, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
 
voidNew (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
 
long 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-v624/rootspi/rdoc/src/v6-24-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 82 of file TClingClassInfo.cxx.

◆ TClingClassInfo() [5/6]

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

◆ TClingClassInfo() [6/6]

TClingClassInfo::TClingClassInfo ( cling::Interpreter *  ,
const clang::Decl *   
)
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 132 of file TClingClassInfo.cxx.

◆ ClassProperty()

long TClingClassInfo::ClassProperty ( ) const

Definition at line 142 of file TClingClassInfo.cxx.

◆ Delete()

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

Definition at line 199 of file TClingClassInfo.cxx.

◆ DeleteArray()

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

Definition at line 216 of file TClingClassInfo.cxx.

◆ Destruct()

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

Definition at line 236 of file TClingClassInfo.cxx.

◆ FileName()

const char * TClingClassInfo::FileName ( )

Definition at line 1358 of file TClingClassInfo.cxx.

◆ FullName()

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

Definition at line 1368 of file TClingClassInfo.cxx.

◆ GetBaseOffset()

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

Definition at line 611 of file TClingClassInfo.cxx.

◆ GetDataMember()

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

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

◆ GetMethod() [1/5]

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

Definition at line 291 of file TClingClassInfo.cxx.

◆ GetMethod() [2/5]

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

Definition at line 338 of file TClingClassInfo.cxx.

◆ GetMethod() [3/5]

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

Definition at line 331 of file TClingClassInfo.cxx.

◆ GetMethod() [4/5]

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

Definition at line 432 of file TClingClassInfo.cxx.

◆ GetMethod() [5/5]

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

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

◆ GetMethodWithArgs() [1/2]

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

Definition at line 505 of file TClingClassInfo.cxx.

◆ GetMethodWithArgs() [2/2]

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

Definition at line 498 of file TClingClassInfo.cxx.

◆ GetOffset()

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

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

◆ GetUsingNamespaces()

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

Definition at line 642 of file TClingClassInfo.cxx.

◆ HasDefaultConstructor()

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

Definition at line 671 of file TClingClassInfo.cxx.

◆ HasMethod()

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

Definition at line 709 of file TClingClassInfo.cxx.

◆ Init() [1/4]

void TClingClassInfo::Init ( const char *  name)

Definition at line 721 of file TClingClassInfo.cxx.

◆ Init() [2/4]

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

◆ Init() [3/4]

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

◆ Init() [4/4]

void TClingClassInfo::Init ( int  tagnum)

Definition at line 761 of file TClingClassInfo.cxx.

◆ InternalNext()

int TClingClassInfo::InternalNext ( )

Definition at line 926 of file TClingClassInfo.cxx.

◆ IsBase()

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

Definition at line 790 of file TClingClassInfo.cxx.

◆ IsEnum()

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

Definition at line 814 of file TClingClassInfo.cxx.

◆ IsLoaded()

bool TClingClassInfo::IsLoaded ( ) const

Definition at line 880 of file TClingClassInfo.cxx.

◆ IsScopedEnum()

bool TClingClassInfo::IsScopedEnum ( ) const

Definition at line 825 of file TClingClassInfo.cxx.

◆ IsValidMethod()

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

Definition at line 910 of file TClingClassInfo.cxx.

◆ New() [1/4]

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

Definition at line 1059 of file TClingClassInfo.cxx.

◆ New() [2/4]

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

Definition at line 1107 of file TClingClassInfo.cxx.

◆ New() [3/4]

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

Definition at line 1157 of file TClingClassInfo.cxx.

◆ New() [4/4]

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

Definition at line 1203 of file TClingClassInfo.cxx.

◆ Next()

int TClingClassInfo::Next ( )

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

◆ RootFlag()

int TClingClassInfo::RootFlag ( ) const

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

◆ Tagnum()

long TClingClassInfo::Tagnum ( ) const

Definition at line 1350 of file TClingClassInfo.cxx.

◆ Title()

const char * TClingClassInfo::Title ( )

Definition at line 1390 of file TClingClassInfo.cxx.

◆ TmpltName()

const char * TClingClassInfo::TmpltName ( ) const

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