Fixed whitespace in all files (no tabs)
[senf.git] / Utils / intrusive_refcount.hh
index 60a60e6..fe0f10e 100644 (file)
@@ -1,6 +1,6 @@
 // $Id$
 //
-// Copyright (C) 2006 
+// Copyright (C) 2006
 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
 // Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
 //     Stefan Bund <stefan.bund@fokus.fraunhofer.de>
@@ -20,6 +20,9 @@
 // Free Software Foundation, Inc.,
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
+/** \file
+    \brief intrusive_refcount public header */
+
 #ifndef HH_intrusive_refcount_
 #define HH_intrusive_refcount_ 1
 
 
 namespace senf {
 
+    /** \brief Reference count mixin for intrusive_ptr
+
+        This class provides a simple internally managed refcount and supplies the <a
+        href="http://www.boost.org/libs/smart_ptr/intrusive_ptr.html">boost::intrusive_ptr</a>
+        required interface. To make a class compatible with \c boost::intrusive_ptr, just derive
+        publicly from intrusive_refcount.
 
-    /** \brief
+        Two additional benifits of using intrusive_refcount are
+        \li The object can access it's own refcount
+        \li It is valid and safe to convert a plain object pointer to an intrusive_ptr at any time
+            (not only after new)
      */
     class intrusive_refcount
         : public boost::noncopyable
     {
     public:
-        typedef unsigned refcount_t;
+        typedef unsigned refcount_t;    ///< reference count type
 
         virtual ~intrusive_refcount();
 
-        refcount_t refcount();
-        bool is_shared();
+        refcount_t refcount();          ///< current refcount
+        bool is_shared();               ///< return \c true if refcount() > 1
 
     protected:
         intrusive_refcount();
-        
+
     private:
         void add_ref();
         bool release();
@@ -60,7 +72,6 @@ namespace senf {
 
     void intrusive_ptr_add_ref(intrusive_refcount* p);
     void intrusive_ptr_release(intrusive_refcount* p);
-
 }
 
 ///////////////////////////////hh.e////////////////////////////////////////
@@ -72,5 +83,8 @@ namespace senf {
 \f
 // Local Variables:
 // mode: c++
+// fill-column: 100
 // c-file-style: "senf"
+// indent-tabs-mode: nil
+// ispell-local-dictionary: "american"
 // End: