12#include "acme/prototype/prototype/cast.h"
15template <
typename TYPE >
16inline ::ptr < TYPE > & ptr < TYPE >::operator = (const ::pointer < TYPE > & p)
24#if REFERENCING_DEBUGGING
26 auto prefererOld = m_preferer;
28 auto prefererNew = ::allocator::defer_push_referer(p.m_p, {p.m_p, this, __FUNCTION_FILE_LINE__});
32 p.m_p->increment_reference_count();
36 if (__pointer_is_set(pOld))
39#if REFERENCING_DEBUGGING
41 ::allocator::add_releaser(prefererOld);
49#if REFERENCING_DEBUGGING
51 m_preferer = prefererNew;
62template <
typename TYPE >
63inline ::ptr < TYPE > & ptr < TYPE >::operator = (::pointer < TYPE > && p)
70#if REFERENCING_DEBUGGING
72 auto prefererOld = m_preferer;
74 auto prefererNew = p.m_preferer;
80 p.m_pparticle =
nullptr;
82 if (__pointer_is_set(pOld))
84#if REFERENCING_DEBUGGING
86 ::allocator::add_releaser(prefererOld);
91#if REFERENCING_DEBUGGING
93 m_preferer = prefererNew;
102template <
typename TYPE >
103template <
typename TYPE2 >
104inline ::ptr < TYPE > & ptr < TYPE >::operator = (const ::pointer < TYPE2 > & p)
118 auto pNew =
dynamic_cast < TYPE
>(p.m_pparticle);
123#if REFERENCING_DEBUGGING
125 auto prefererOld = m_preferer;
127 auto prefererNew = ::allocator::defer_push_referer(p.m_p, {p.m_p, this, __FUNCTION_FILE_LINE__});
131 pNew->increment_reference_count();
135 if (__pointer_is_set(pOld))
138#if REFERENCING_DEBUGGING
140 ::allocator::add_releaser(prefererOld);
148#if REFERENCING_DEBUGGING
150 m_preferer = prefererNew;
161template <
typename TYPE >
162template <
typename TYPE2 >
163inline ::ptr < TYPE > & ptr < TYPE >::operator = (::pointer < TYPE2 > && p)
177 auto pNew =
dynamic_cast < TYPE *
>(p.m_psubparticle);
181#if REFERENCING_DEBUGGING
183 auto prefererOld = m_preferer;
185 auto prefererNew = p.m_preferer;
191 p.m_psubparticle =
nullptr;
193 if (__pointer_is_set(pOld))
195#if REFERENCING_DEBUGGING
197 ::allocator::add_releaser(prefererOld);
202#if REFERENCING_DEBUGGING
204 m_preferer = prefererNew;
216template <
typename TYPE >
217template <
typename TYPE2 >
221 m_p =
dynamic_cast <TYPE*
>((
::subparticle*)(p2.m_psubparticle));
Definition subparticle.h:78