From: Michal Voců Date: Thu, 24 Feb 2005 17:15:08 +0000 (+0000) Subject: * added documentation X-Git-Tag: glite-lb-client-interface_R_1_0_2~48 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=d644637e634f81f5252ac4a51fd4ff7cf2c328fa;p=jra1mw.git * added documentation --- 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) {