10 #ifndef ROOT_Minuit2_MnReferenceCounter
11 #define ROOT_Minuit2_MnReferenceCounter
24 class MnReferenceCounter {
28 MnReferenceCounter() : fReferences(0) {}
30 MnReferenceCounter(
const MnReferenceCounter& other) :
31 fReferences(other.fReferences) {}
33 MnReferenceCounter& operator=(
const MnReferenceCounter& other) {
34 fReferences = other.fReferences;
38 ~MnReferenceCounter() {assert(fReferences == 0);}
40 void*
operator new(
size_t nbytes) {
41 return StackAllocatorHolder::Get().Allocate(nbytes);
44 void operator delete(
void* p,
size_t ) {
45 StackAllocatorHolder::Get().Deallocate(p);
48 unsigned int References()
const {
return fReferences;}
50 void AddReference()
const {fReferences++;}
52 void RemoveReference()
const {fReferences--;}
56 mutable unsigned int fReferences;
63 #endif // ROOT_Minuit2_MnReferenceCounter