BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
ROOT::Minuit2::MnRefCountedPointer< T > Class Template Reference

Description

template<class T>
class ROOT::Minuit2::MnRefCountedPointer< T >

Definition at line 20 of file MnRefCountedPointer.h.

Collaboration diagram for ROOT::Minuit2::MnRefCountedPointer< T >:
[legend]

Public Member Functions

 MnRefCountedPointer ()
 
 MnRefCountedPointer (const MnRefCountedPointer< T > &other)
 
 MnRefCountedPointer (T *pt)
 
 ~MnRefCountedPointer ()
 
void AddReference () const
 
T * Get () const
 
bool IsValid () const
 
T & operator* () const
 
T * operator-> () const
 
bool operator< (const T *otherP) const
 
MnRefCountedPointeroperator= (const MnRefCountedPointer< T > &other)
 
MnRefCountedPointeroperator= (T *ptr)
 
bool operator== (const T *otherP) const
 
unsigned int References () const
 
void RemoveReference ()
 

Private Member Functions

void DoCheck () const
 

Private Attributes

MnReferenceCounterfCounter
 
T * fPtr
 

Constructor & Destructor Documentation

◆ MnRefCountedPointer() [1/3]

template<class T >
ROOT::Minuit2::MnRefCountedPointer< T >::MnRefCountedPointer ( )
inline

Definition at line 25 of file MnRefCountedPointer.h.

◆ MnRefCountedPointer() [2/3]

template<class T >
ROOT::Minuit2::MnRefCountedPointer< T >::MnRefCountedPointer ( T *  pt)
inline

Definition at line 27 of file MnRefCountedPointer.h.

27  :
28  fPtr(pt), fCounter(new MnReferenceCounter()) {AddReference();}

References ROOT::Minuit2::MnRefCountedPointer< T >::AddReference().

Here is the call graph for this function:

◆ MnRefCountedPointer() [3/3]

template<class T >
ROOT::Minuit2::MnRefCountedPointer< T >::MnRefCountedPointer ( const MnRefCountedPointer< T > &  other)
inline

Definition at line 30 of file MnRefCountedPointer.h.

30  :
31  fPtr(other.fPtr), fCounter(other.fCounter) {AddReference();}

References ROOT::Minuit2::MnRefCountedPointer< T >::AddReference().

Here is the call graph for this function:

◆ ~MnRefCountedPointer()

template<class T >
ROOT::Minuit2::MnRefCountedPointer< T >::~MnRefCountedPointer ( )
inline

Definition at line 33 of file MnRefCountedPointer.h.

33  {
34  /*
35  if(References() == 0) {
36  if(fPtr) delete fPtr;
37  if(fCounter) delete fCounter;
38  }
39  else RemoveReference();
40  */
41  if(References() != 0) RemoveReference();
42  }

References ROOT::Minuit2::MnRefCountedPointer< T >::References(), and ROOT::Minuit2::MnRefCountedPointer< T >::RemoveReference().

Here is the call graph for this function:

Member Function Documentation

◆ AddReference()

template<class T >
void ROOT::Minuit2::MnRefCountedPointer< T >::AddReference ( ) const
inline

Definition at line 76 of file MnRefCountedPointer.h.

References ROOT::Minuit2::MnReferenceCounter::AddReference(), and ROOT::Minuit2::MnRefCountedPointer< T >::fCounter.

Referenced by ROOT::Minuit2::MnRefCountedPointer< T >::MnRefCountedPointer(), and ROOT::Minuit2::MnRefCountedPointer< T >::operator=().

Here is the call graph for this function:

◆ DoCheck()

template<class T >
void ROOT::Minuit2::MnRefCountedPointer< T >::DoCheck ( ) const
inlineprivate

Definition at line 93 of file MnRefCountedPointer.h.

93 {assert(IsValid());}

References ROOT::Minuit2::MnRefCountedPointer< T >::IsValid().

Referenced by ROOT::Minuit2::MnRefCountedPointer< T >::operator*(), and ROOT::Minuit2::MnRefCountedPointer< T >::operator->().

Here is the call graph for this function:

◆ Get()

template<class T >
T* ROOT::Minuit2::MnRefCountedPointer< T >::Get ( ) const
inline

Definition at line 64 of file MnRefCountedPointer.h.

64 {return fPtr;}

References ROOT::Minuit2::MnRefCountedPointer< T >::fPtr.

◆ IsValid()

template<class T >
bool ROOT::Minuit2::MnRefCountedPointer< T >::IsValid ( ) const
inline

◆ operator*()

template<class T >
T& ROOT::Minuit2::MnRefCountedPointer< T >::operator* ( ) const
inline

Definition at line 68 of file MnRefCountedPointer.h.

68 {DoCheck(); return *fPtr;}

References ROOT::Minuit2::MnRefCountedPointer< T >::DoCheck(), and ROOT::Minuit2::MnRefCountedPointer< T >::fPtr.

Here is the call graph for this function:

◆ operator->()

template<class T >
T* ROOT::Minuit2::MnRefCountedPointer< T >::operator-> ( ) const
inline

Definition at line 66 of file MnRefCountedPointer.h.

66 {DoCheck(); return fPtr;}

References ROOT::Minuit2::MnRefCountedPointer< T >::DoCheck(), and ROOT::Minuit2::MnRefCountedPointer< T >::fPtr.

Here is the call graph for this function:

◆ operator<()

template<class T >
bool ROOT::Minuit2::MnRefCountedPointer< T >::operator< ( const T *  otherP) const
inline

Definition at line 72 of file MnRefCountedPointer.h.

72 {return fPtr < otherP;}

References ROOT::Minuit2::MnRefCountedPointer< T >::fPtr.

◆ operator=() [1/2]

template<class T >
MnRefCountedPointer& ROOT::Minuit2::MnRefCountedPointer< T >::operator= ( const MnRefCountedPointer< T > &  other)
inline

Definition at line 46 of file MnRefCountedPointer.h.

46  {
47  if(this != &other && fPtr != other.fPtr) {
49  fPtr = other.fPtr;
50  fCounter = other.fCounter;
51  AddReference();
52  }
53  return *this;
54  }

References ROOT::Minuit2::MnRefCountedPointer< T >::AddReference(), ROOT::Minuit2::MnRefCountedPointer< T >::fCounter, ROOT::Minuit2::MnRefCountedPointer< T >::fPtr, and ROOT::Minuit2::MnRefCountedPointer< T >::RemoveReference().

Here is the call graph for this function:

◆ operator=() [2/2]

template<class T >
MnRefCountedPointer& ROOT::Minuit2::MnRefCountedPointer< T >::operator= ( T *  ptr)
inline

Definition at line 56 of file MnRefCountedPointer.h.

56  {
57  if(fPtr != ptr) {
58  fPtr = ptr;
59  fCounter = new MnReferenceCounter();
60  }
61  return *this;
62  }

References ROOT::Minuit2::MnRefCountedPointer< T >::fCounter, and ROOT::Minuit2::MnRefCountedPointer< T >::fPtr.

◆ operator==()

template<class T >
bool ROOT::Minuit2::MnRefCountedPointer< T >::operator== ( const T *  otherP) const
inline

Definition at line 70 of file MnRefCountedPointer.h.

70 {return fPtr == otherP;}

References ROOT::Minuit2::MnRefCountedPointer< T >::fPtr.

◆ References()

template<class T >
unsigned int ROOT::Minuit2::MnRefCountedPointer< T >::References ( ) const
inline

Definition at line 74 of file MnRefCountedPointer.h.

74 {return fCounter->References();}

References ROOT::Minuit2::MnRefCountedPointer< T >::fCounter, and ROOT::Minuit2::MnReferenceCounter::References().

Referenced by ROOT::Minuit2::MnRefCountedPointer< T >::~MnRefCountedPointer(), and ROOT::Minuit2::MnRefCountedPointer< T >::RemoveReference().

Here is the call graph for this function:

◆ RemoveReference()

template<class T >
void ROOT::Minuit2::MnRefCountedPointer< T >::RemoveReference ( )
inline

Definition at line 78 of file MnRefCountedPointer.h.

78  {
80  if(References() == 0) {
81  delete fPtr; fPtr=0;
82  delete fCounter; fCounter=0;
83  }
84  }

References ROOT::Minuit2::MnRefCountedPointer< T >::fCounter, ROOT::Minuit2::MnRefCountedPointer< T >::fPtr, ROOT::Minuit2::MnRefCountedPointer< T >::References(), and ROOT::Minuit2::MnReferenceCounter::RemoveReference().

Referenced by ROOT::Minuit2::MnRefCountedPointer< T >::~MnRefCountedPointer(), and ROOT::Minuit2::MnRefCountedPointer< T >::operator=().

Here is the call graph for this function:

Member Data Documentation

◆ fCounter

◆ fPtr


The documentation for this class was generated from the following file: