29 template <
typename T>
using Atomic_t = std::atomic<T>;
79 {
if(
this!=&iip) {TVirtualIsAProxy::operator=(iip);
fClass=iip.
fClass;}
91 return !obj ?
fClass : ((
const T*)obj)->
IsA();
TClass instances represent classes, structs and namespaces in the ROOT type system.
TClass * IsA() const override
virtual void SetClass(TClass *cl) override
TClass * operator()(const void *obj) override
virtual ~TInstrumentedIsAProxy()
TInstrumentedIsAProxy(const TInstrumentedIsAProxy &iip)
TInstrumentedIsAProxy(TClass *cl)
TInstrumentedIsAProxy & operator=(const TInstrumentedIsAProxy &iip)
TIsAProxy implementation class.
Atomic_t< UInt_t > fSubTypesReaders
void * CacheSubType(const std::type_info *, TClass *)
Record the TClass found for a std::type_info, so that we can retrieved it faster.
virtual ~TIsAProxy()
Standard destructor.
std::atomic< T > Atomic_t
TIsAProxy & operator=(const TIsAProxy &)=delete
TClass * operator()(const void *obj) override
IsA callback.
Atomic_t< UChar_t > fNextLastSlot
const std::type_info * fType
Atomic_t< Bool_t > fSubTypesWriteLockTaken
Atomic_t< void * > fLasts[fgMaxLastSlot]
void * FindSubType(const std::type_info *) const
See if we have already cached the TClass that correspond to this std::type_info.
static constexpr UInt_t fgMaxLastSlot
void SetClass(TClass *cl) override
Set class pointer This method is not thread safe.
TIsAProxy(const TIsAProxy &)=delete