home | help
sc::RefCount(3) 		      MPQC			 sc::RefCount(3)

NAME
     sc::RefCount - The base class for all reference counted objects.

SYNOPSIS
     #include <ref.h>

     Inherits sc::Identity.

     Inherited	 by  sc::CorrelationTable,  sc::DescribedClass,  sc::DipoleData,
     sc::Edge, sc::EfieldDotVectorData, sc::FJT,  sc::GenPetite4,  sc::Int1eCCA,
     sc::Int1eCints,  sc::Int1eV3,  sc::Int2eCCA,  sc::Int2eCints,  sc::Int2eV3,
     sc::KeyVal,   sc::KeyValValue,   sc::MOPairIter,	 sc::NonlinearTransform,
     sc::OneBodyDerivInt, sc::OneBodyInt, sc::OneBodyIntIter, sc::OneBodyOneCen-
     terDerivInt,   sc::OneBodyOneCenterInt,  sc::OneBodySOInt,  sc::PetiteList,
     sc::PointChargeData,   sc::PrimPairsCints,   sc::PsiFile11,   sc::PsiInput,
     sc::R12Amplitudes,  sc::SCMatrixSubblockIter, sc::SOBasis, sc::ShellExtent,
     sc::ThreadLock,   sc::TriInterpCoef,   sc::Triangle,   sc::TwoBodyDerivInt,
     sc::TwoBodyInt,  sc::TwoBodySOInt, sc::TwoBodyThreeCenterDerivInt, sc::Two-
     BodyThreeCenterInt, sc::TwoBodyTwoCenterDerivInt,	sc::TwoBodyTwoCenterInt,
     sc::Vertex, and sc::X.

   Public Member Functions
     int lock_ptr () const
	 Lock this object.
     int unlock_ptr () const
	 Unlock this object.
     void use_locks (bool inVal)
	 start and stop using locks on this object
     refcount_t nreference () const
	 Return the reference count.
     refcount_t reference ()
	 Increment the reference count and return the new count.
     refcount_t dereference ()
	 Decrement the reference count and return the new count.
     int managed () const
     void unmanage ()
	 Turn off the reference counting mechanism for this object.
     int managed () const
	 Return 1 if the object is managed. Otherwise return 0.

     Public Member Functions inherited from sc::Identity
     Identifier identifier ()
	 Return the Identifier for this argument.

   Protected Member Functions
     RefCount (const RefCount &)
     RefCount & operator= (const RefCount &)

Detailed Description
     The base class for all reference counted objects.

     If multiple inheritance is used, RefCount must be virtually inherited from,
     otherwise references to invalid memory will likely result.

     Reference	counting  information  is  usually  maintained	by smart pointer
     classes Ref, however this mechanism can be supplemented or replaced by  di-
     rectly using the public interface to RefCount.

     The unmanage() member is only needed for special cases where memory manage-
     ment must be turned off. For example, if a reference counted object is cre-
     ated on the stack, memory management mechanisms based on reference counting
     must  be  prohibited  from  deleting it. The unmanage() member accomplishes
     this, but a better solution would be to allocate the  object  on  the  heap
     with new and let a smart pointer manage the memory for the object.

     When  using  a  debugger  to look at reference counted objects the count is
     maintained in the reference_count member. However, this member  is  encoded
     so  that  memory overwrites can be sometimes detected. Thus, interpretation
     of reference_count is not always straightforward.

Member Function Documentation
   void sc::RefCount::unmanage () [inline]
     Turn off the reference counting mechanism for this object.  The  value  re-
     turned  by  nreference() will always be 1 after this is called. The ability
     to unmanage() objects must  be  turned  on  at  compile  time  by	defining
     REF_MANAGE. There is a slight performance penalty.

Author
     Generated automatically by Doxygen for MPQC from the source code.

Version 2.3.1			 Thu Sep 3 2026 		 sc::RefCount(3)

home | help