1 /*=========================================================================
4 Module: $RCSfile: gdcmRefCounter.h,v $
6 Date: $Date: 2005/10/26 15:41:29 $
7 Version: $Revision: 1.8 $
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
38 /// \brief Delete the object
39 /// \remarks The object is deleted only if its reference counting is to zero
40 void Delete() { Unregister(); }
43 /// \brief Register the object
44 /// \remarks It increments the reference counting
45 void Register() { RefCount++; }
47 /// \brief Unregister the object
48 /// \remarks It decrements the reference counting
55 /// \brief Get the reference counting
56 /// \return Reference count
57 const unsigned long &GetRefCount() const
64 RefCounter() { RefCount = 1; }
66 virtual ~RefCounter() {}
69 /// \brief Reference count
70 unsigned long RefCount;
72 } // end namespace gdcm
74 //-----------------------------------------------------------------------------