1 /*=========================================================================
4 Module: $RCSfile: gdcmRefCounter.h,v $
6 Date: $Date: 2005/11/28 15:20:34 $
7 Version: $Revision: 1.9 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*/
19 #ifndef GDCMREFCOUNTER_H
20 #define GDCMREFCOUNTER_H
26 //-----------------------------------------------------------------------------
28 * \brief Integration of reference counting with a destruction of the
29 * object only when the reference is to zero
31 class GDCM_EXPORT RefCounter : public Base
33 gdcmTypeMacro(RefCounter);
36 // Allocator / Unallocator
37 /// \brief Delete the object
38 /// \remarks The object is deleted only if its reference counting is to zero
39 void Delete() { Unregister(); }
42 /// \brief Register the object
43 /// \remarks It increments the reference counting
44 void Register() { RefCount++; }
46 /// \brief Unregister the object
47 /// \remarks It decrements the reference counting
54 /// \brief Get the reference counting
55 /// \return Reference count
56 const unsigned long &GetRefCount() const
63 RefCounter() { RefCount = 1; }
65 virtual ~RefCounter() {}
68 /// \brief Reference count
69 unsigned long RefCount;
71 } // end namespace gdcm
73 //-----------------------------------------------------------------------------