Skip to content
Snippets Groups Projects
Commit cba5506c authored by g0dil's avatar g0dil
Browse files

Utils: Fixed intrusive_refcount_t access implementation to conform to documentation

parent 5d489516
No related branches found
No related tags found
No related merge requests found
...@@ -211,7 +211,7 @@ namespace senf { ...@@ -211,7 +211,7 @@ namespace senf {
void releaseImpl(); void releaseImpl();
friend class detail::PacketImpl; friend class detail::PacketImpl;
friend class intrusive_refcount_t<PacketInterpreterBase>; friend class intrusive_refcount_base;
template <class PacketType> friend class PacketInterpreter; template <class PacketType> friend class PacketInterpreter;
friend class detail::packet::test::TestDriver; friend class detail::packet::test::TestDriver;
friend class PacketParserBase; friend class PacketParserBase;
......
...@@ -30,28 +30,28 @@ ...@@ -30,28 +30,28 @@
#define prefix_ inline #define prefix_ inline
///////////////////////////////cti.p/////////////////////////////////////// ///////////////////////////////cti.p///////////////////////////////////////
template <class Self> template <class S>
prefix_ void senf::intrusive_refcount_t<Self>::intrusive_ptr_add_ref() prefix_ void senf::intrusive_refcount_base::intrusive_ptr_add_ref()
{ {
static_cast<Self*>(this)->add_ref(); static_cast<S*>(this)->add_ref();
} }
template <class Self> template <class S>
prefix_ void senf::intrusive_refcount_t<Self>::intrusive_ptr_release() prefix_ void senf::intrusive_refcount_base::intrusive_ptr_release()
{ {
if (static_cast<Self*>(this)->release()) delete this; if (static_cast<S*>(this)->release()) delete this;
} }
template <class Self> template <class Self>
prefix_ void senf::intrusive_ptr_add_ref(intrusive_refcount_t<Self>* p) prefix_ void senf::intrusive_ptr_add_ref(intrusive_refcount_t<Self>* p)
{ {
p->intrusive_ptr_add_ref(); p->intrusive_ptr_add_ref<Self>();
} }
template <class Self> template <class Self>
prefix_ void senf::intrusive_ptr_release(intrusive_refcount_t<Self>* p) prefix_ void senf::intrusive_ptr_release(intrusive_refcount_t<Self>* p)
{ {
p->intrusive_ptr_release(); p->intrusive_ptr_release<Self>();
} }
template <class Self> template <class Self>
......
...@@ -61,6 +61,13 @@ namespace senf { ...@@ -61,6 +61,13 @@ namespace senf {
private: private:
refcount_t refcount_; refcount_t refcount_;
template <class S> void intrusive_ptr_add_ref();
template <class S> void intrusive_ptr_release();
template <class S>
friend void senf::intrusive_ptr_add_ref(intrusive_refcount_t<S> * p);
template <class S>
friend void senf::intrusive_ptr_release(intrusive_refcount_t<S> * p);
}; };
/** \brief Customizable reference count mixin for intrusive_ptr /** \brief Customizable reference count mixin for intrusive_ptr
...@@ -115,15 +122,6 @@ namespace senf { ...@@ -115,15 +122,6 @@ namespace senf {
{ {
protected: protected:
intrusive_refcount_t(); intrusive_refcount_t();
private:
void intrusive_ptr_add_ref();
void intrusive_ptr_release();
template <class S>
friend void senf::intrusive_ptr_add_ref(intrusive_refcount_t<S> * p);
template <class S>
friend void senf::intrusive_ptr_release(intrusive_refcount_t<S> * p);
}; };
/** \brief Reference count mixin for intrusive_ptr /** \brief Reference count mixin for intrusive_ptr
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment