Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TIsAProxy Class Reference

TIsAProxy implementation class.

Definition at line 27 of file TIsAProxy.h.

Public Member Functions

 TIsAProxy (const std::type_info &typ)
 Standard initializing constructor.
 
virtual ~TIsAProxy ()
 Standard destructor.
 
TClassoperator() (const void *obj) override
 IsA callback.
 
void SetClass (TClass *cl) override
 Set class pointer This method is not thread safe.
 
- Public Member Functions inherited from TVirtualIsAProxy
virtual ~TVirtualIsAProxy ()
 

Protected Member Functions

 TIsAProxy (const TIsAProxy &)=delete
 
TIsAProxyoperator= (const TIsAProxy &)=delete
 

Private Types

template<typename T >
using Atomic_t = std::atomic< T >
 

Private Member Functions

void * CacheSubType (const std::type_info *, TClass *)
 Record the TClass found for a std::type_info, so that we can retrieved it faster.
 
void * FindSubType (const std::type_info *) const
 See if we have already cached the TClass that correspond to this std::type_info.
 

Private Attributes

TClassfClass
 
Atomic_t< Bool_tfInit
 
Atomic_t< void * > fLasts [fgMaxLastSlot]
 
Atomic_t< UChar_tfNextLastSlot
 
Char_t fSubTypes [72]
 
Atomic_t< UInt_tfSubTypesReaders
 
Atomic_t< Bool_tfSubTypesWriteLockTaken
 
const std::type_info * fType
 
Bool_t fVirtual
 

Static Private Attributes

static constexpr UInt_t fgMaxLastSlot = 8
 

#include <TIsAProxy.h>

Inheritance diagram for TIsAProxy:
[legend]

Member Typedef Documentation

◆ Atomic_t

template<typename T >
using TIsAProxy::Atomic_t = std::atomic<T>
private

Definition at line 29 of file TIsAProxy.h.

Constructor & Destructor Documentation

◆ TIsAProxy() [1/2]

TIsAProxy::TIsAProxy ( const TIsAProxy )
protecteddelete

◆ TIsAProxy() [2/2]

TIsAProxy::TIsAProxy ( const std::type_info &  typ)

Standard initializing constructor.

Definition at line 48 of file TIsAProxy.cxx.

◆ ~TIsAProxy()

TIsAProxy::~TIsAProxy ( )
virtual

Standard destructor.

Definition at line 63 of file TIsAProxy.cxx.

Member Function Documentation

◆ CacheSubType()

void * TIsAProxy::CacheSubType ( const std::type_info *  type,
TClass cls 
)
private

Record the TClass found for a std::type_info, so that we can retrieved it faster.

Definition at line 174 of file TIsAProxy.cxx.

◆ FindSubType()

void * TIsAProxy::FindSubType ( const std::type_info *  type) const
inlineprivate

See if we have already cached the TClass that correspond to this std::type_info.

Definition at line 144 of file TIsAProxy.cxx.

◆ operator()()

TClass * TIsAProxy::operator() ( const void *  obj)
overridevirtual

IsA callback.

Implements TVirtualIsAProxy.

Definition at line 85 of file TIsAProxy.cxx.

◆ operator=()

TIsAProxy & TIsAProxy::operator= ( const TIsAProxy )
protecteddelete

◆ SetClass()

void TIsAProxy::SetClass ( TClass cl)
overridevirtual

Set class pointer This method is not thread safe.

Implements TVirtualIsAProxy.

Definition at line 74 of file TIsAProxy.cxx.

Member Data Documentation

◆ fClass

TClass* TIsAProxy::fClass
private

Definition at line 39 of file TIsAProxy.h.

◆ fgMaxLastSlot

constexpr UInt_t TIsAProxy::fgMaxLastSlot = 8
staticconstexprprivate

Definition at line 36 of file TIsAProxy.h.

◆ fInit

Atomic_t<Bool_t> TIsAProxy::fInit
private

Definition at line 45 of file TIsAProxy.h.

◆ fLasts

Atomic_t<void*> TIsAProxy::fLasts[fgMaxLastSlot]
private

Definition at line 40 of file TIsAProxy.h.

◆ fNextLastSlot

Atomic_t<UChar_t> TIsAProxy::fNextLastSlot
private

Definition at line 44 of file TIsAProxy.h.

◆ fSubTypes

Char_t TIsAProxy::fSubTypes[72]
private

Definition at line 41 of file TIsAProxy.h.

◆ fSubTypesReaders

Atomic_t<UInt_t> TIsAProxy::fSubTypesReaders
mutableprivate

Definition at line 42 of file TIsAProxy.h.

◆ fSubTypesWriteLockTaken

Atomic_t<Bool_t> TIsAProxy::fSubTypesWriteLockTaken
private

Definition at line 43 of file TIsAProxy.h.

◆ fType

const std::type_info* TIsAProxy::fType
private

Definition at line 38 of file TIsAProxy.h.

◆ fVirtual

Bool_t TIsAProxy::fVirtual
private

Definition at line 46 of file TIsAProxy.h.

  • core/meta/inc/TIsAProxy.h
  • core/meta/src/TIsAProxy.cxx