1 /*=========================================================================
4 Module: $RCSfile: gdcmRefCounter.h,v $
6 Date: $Date: 2005/10/21 15:34:56 $
7 Version: $Revision: 1.6 $
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
23 #include "gdcmDebug.h"
27 //-----------------------------------------------------------------------------
29 * \brief Integration of reference counting with a destruction of the
30 * object only when the reference is to zero
32 class GDCM_EXPORT RefCounter : public Base
34 gdcmTypeMacro(RefCounter);
37 // Allocator / Unallocator
39 /// \remarks The object is deleted only if its reference counting is to zero
40 inline void Delete(void)
46 /// Register the object
47 /// \remarks It increments the reference counting
48 inline void Register(void)
52 /// Unregister the object
53 /// \remarks It decrements the reference counting
54 inline void Unregister(void)
62 /// Get the reference counting
63 /// \return Reference count
64 inline const unsigned long &GetRefCount(void) const
71 RefCounter() { RefCount = 1; }
73 virtual ~RefCounter() {}
76 /// \brief Reference count
77 unsigned long RefCount;
79 } // end namespace gdcm
81 //-----------------------------------------------------------------------------