12 #ifndef ROOT_TIsAProxy 13 #define ROOT_TIsAProxy 29 template <
typename T>
using Atomic_t = std::atomic<T>;
83 return obj==0 ?
fClass : ((
const T*)obj)->IsA();
87 #endif // ROOT_TIsAProxy
std::atomic< T > Atomic_t
virtual ~TIsAProxy()
Standard destructor.
Atomic_t< TClass * > fClass
TIsAProxy(const TIsAProxy &)=delete
void * FindSubType(const std::type_info *) const
See if we have already cached the TClass that correspond to this std::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)
const std::type_info * fType
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 std::type_info *, TClass *)
Record the TClass found for a std::type_info, so that we can retrieved it faster. ...
TIsAProxy & operator=(const TIsAProxy &)=delete