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 {
void releaseImpl();
friend class detail::PacketImpl;
friend class intrusive_refcount_t<PacketInterpreterBase>;
friend class intrusive_refcount_base;
template <class PacketType> friend class PacketInterpreter;
friend class detail::packet::test::TestDriver;
friend class PacketParserBase;
......
......@@ -30,28 +30,28 @@
#define prefix_ inline
///////////////////////////////cti.p///////////////////////////////////////
template <class Self>
prefix_ void senf::intrusive_refcount_t<Self>::intrusive_ptr_add_ref()
template <class S>
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>
prefix_ void senf::intrusive_refcount_t<Self>::intrusive_ptr_release()
template <class S>
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>
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>
prefix_ void senf::intrusive_ptr_release(intrusive_refcount_t<Self>* p)
{
p->intrusive_ptr_release();
p->intrusive_ptr_release<Self>();
}
template <class Self>
......
......@@ -61,6 +61,13 @@ namespace senf {
private:
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
......@@ -115,15 +122,6 @@ namespace senf {
{
protected:
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
......
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