12 #ifndef ROOT_TIsAProxy
13 #define ROOT_TIsAProxy
15 #ifndef ROOT_TVirtualIsAProxy
32 template <
typename T>
using Atomic_t = std::atomic<T>;
86 return obj==0 ? fClass : ((
const T*)obj)->IsA();
90 #endif // ROOT_TIsAProxy
std::atomic< T > Atomic_t
virtual ~TIsAProxy()
Standard destructor.
Atomic_t< TClass * > fClass
TIsAProxy(const TIsAProxy &)=delete
void * FindSubType(const type_info *) const
See if we have already cached the TClass that correspond to this type_info.
TIsAProxy implementation class.
virtual TClass * operator()(const void *obj)
IsA callback.
Atomic_t< Bool_t > fSubTypesWriteLockTaken
TInstrumentedIsAProxy(const TInstrumentedIsAProxy &iip)
virtual ~TInstrumentedIsAProxy()
The ROOT global object gROOT contains a list of all defined classes.
virtual TClass * operator()(const void *obj)
TInstrumentedIsAProxy & operator=(const TInstrumentedIsAProxy &iip)
Atomic_t< UInt_t > fSubTypesReaders
TInstrumentedIsAProxy(TClass *cl)
virtual void SetClass(TClass *cl)
Set class pointer This method is not thread safe.
virtual void SetClass(TClass *cl)
Binding & operator=(OUT(*fun)(void))
void * CacheSubType(const type_info *, TClass *)
Record the TClass found for a type_info, so that we can retrieved it faster.
TIsAProxy & operator=(const TIsAProxy &)=delete