From d644637e634f81f5252ac4a51fd4ff7cf2c328fa Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michal=20Voc=C5=AF?= Date: Thu, 24 Feb 2005 17:15:08 +0000 Subject: [PATCH] * added documentation --- org.glite.lb.client-interface/interface/CountRef.h | 31 +++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/org.glite.lb.client-interface/interface/CountRef.h b/org.glite.lb.client-interface/interface/CountRef.h index 462800d..13250ee 100644 --- a/org.glite.lb.client-interface/interface/CountRef.h +++ b/org.glite.lb.client-interface/interface/CountRef.h @@ -13,21 +13,35 @@ EWL_BEGIN_NAMESPACE +/** Class implementing simple reference counting mechanism. + * + * This class is used instead of simple pointers to enable sharing of + * objects using simple reference counting mechanism. It encapsulates + * the given (pointer to) object and remembers the number of + * references to it. Taking and getting rid of the reference to + * encapsulated object is explicit by calling member functions use() + * and release(). + */ template class CountRef { public: - CountRef(void *); + CountRef(void *); // CountRef(void *,void (*)(void *)); - void use(void); + void use(void); void release(void); - void *ptr; + void *ptr; /**< Pointer to the encapsulated object. */ + private: int count; // void (*destroy)(void *); }; +/** + * Encapsulate the given object and set reference count to 1. + * + */ template CountRef::CountRef(void *p) { @@ -35,6 +49,12 @@ CountRef::CountRef(void *p) count = 1; } +/** Decrease the reference count, possibly deallocating the + * encapsulated object. + * + * This method should be called when the holder no longer plans to use + * the encapsulated object, instead of deleting it. + */ template void CountRef::release(void) { @@ -44,6 +64,11 @@ void CountRef::release(void) } } +/** Increase the number of references to the object. + * + * This method should be called every time the pointer (ie. this + * instance) is copied. + */ template void CountRef::use(void) { -- 1.8.2.3