12#ifndef ROOT_TCheckHashRecursiveRemoveConsistency
13#define ROOT_TCheckHashRecursiveRemoveConsistency
55 gROOT->GetListOfCleanups()->Add(
this);
66 if (!
gROOT->MustClean())
67 gROOT->GetListOfCleanups()->Remove(
this);
75 std::unique_lock<std::mutex> lock(
fMutex);
86 std::unique_lock<std::mutex> lock(
fMutex);
90 if (
p->fObjectPtr == obj) {
93 if (
p->fRecordedHash == obj->
Hash())
104 std::unique_lock<std::mutex> lock(
fMutex);
107 if (
p->fObjectPtr == obj) {
188 if (
baseCl->HasLocalHashMember() &&
212 if (
classRef.HasLocalHashMember() &&
223 constexpr const char *funcName =
"ROOT::Internal::TCheckHashRecursiveRemoveConsistency::CheckRecursiveRemove";
226 "The class %s overrides TObject::Hash but does not call TROOT::RecursiveRemove in its destructor (seen while checking %s).",
229 ::Error(funcName,
"The class %s "
230 "or one of its base classes override TObject::Hash but does not call "
231 "TROOT::CallRecursiveRemoveIfNeeded in its destructor.\n",
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
#define ClassDefInlineOverride(name, id)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
winID h TVirtualViewer3D TVirtualGLPainter p
EResult HasConsistentHashMember(TClass &classRef)
EResult CheckRecursiveRemove(TClass &classRef)
static bool Check(TClass &classRef)
void RecursiveRemove(TObject *obj) override
Recursively remove this object from a list.
TCheckHashRecursiveRemoveConsistency()
void SlowRemove(TObject *obj)
bool VerifyRecursiveRemove(TClass &classRef)
~TCheckHashRecursiveRemoveConsistency()
TClass * FindMissingRecursiveRemove(TClass &classRef)
bool VerifyRecursiveRemove(const char *classname)
const_iterator begin() const
const_iterator end() const
TClass instances represent classes, structs and namespaces in the ROOT type system.
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
Mother of all ROOT objects.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual UInt_t GetUniqueID() const
Return the unique object id.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual ULong_t Hash() const
Return hash value for this object.
@ kIsReferenced
if object is referenced by a TRef or TRefArray
@ kMustCleanup
if object destructor must call RecursiveRemove()
void SetRequireCleanup(TObject &obj)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...