X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2Fintrusive_refcount.hh;h=a0c36e0ffae9fbf001568f5bdea146fc754e653a;hb=9a988902090d28007578e93bffd809f6bd913155;hp=a63dbe67d6b5424f9979bb4fc03df502fb71c8ed;hpb=c52cd7d87dbb525c1267aad27391b8b7365dbb57;p=senf.git diff --git a/Utils/intrusive_refcount.hh b/Utils/intrusive_refcount.hh index a63dbe6..a0c36e0 100644 --- a/Utils/intrusive_refcount.hh +++ b/Utils/intrusive_refcount.hh @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2006 +// Copyright (C) 2006 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) // Kompetenzzentrum fuer Satelitenkommunikation (SatCom) // Stefan Bund @@ -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 @@ -29,39 +32,47 @@ //#include "intrusive_refcount.mpp" ///////////////////////////////hh.p//////////////////////////////////////// -namespace satcom { -namespace lib { +namespace senf { + + /** \brief Reference count mixin for intrusive_ptr + + This class provides a simple internally managed refcount and supplies the boost::intrusive_ptr + required interface. To make a class compatible with \c boost::intrusive_ptr, just derive + publicly from intrusive_refcount. - /** \brief + Two additional benefits 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(); refcount_t refcount_; - friend void satcom::lib::intrusive_ptr_add_ref(intrusive_refcount* p); - friend void satcom::lib::intrusive_ptr_release(intrusive_refcount* p); + friend void senf::intrusive_ptr_add_ref(intrusive_refcount* p); + friend void senf::intrusive_ptr_release(intrusive_refcount* p); }; void intrusive_ptr_add_ref(intrusive_refcount* p); void intrusive_ptr_release(intrusive_refcount* p); - -}} +} ///////////////////////////////hh.e//////////////////////////////////////// #include "intrusive_refcount.cci" @@ -72,5 +83,8 @@ namespace lib { // Local Variables: // mode: c++ -// c-file-style: "satcom" +// fill-column: 100 +// c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" // End: