21 #ifndef mia_singular_refobj_hh
22 #define mia_singular_refobj_hh
52 virtual void operator ()(T& MIA_PARAM_UNUSED(data))
const = 0;
93 TheObject(
const TheObject& data) =
delete;
94 TheObject&
operator = (
const TheObject& data) =
delete;
102 template <
typename T>
106 template <
typename T>
112 template <
typename T>
115 m_object =
new TheObject(data, d);
118 template <
typename T>
121 m_object = other.m_object;
127 template <
typename T>
133 m_object = other.m_object;
141 template <
typename T>
143 m_object(other.m_object)
145 other.m_object =
nullptr;
148 template <
typename T>
151 if (&other !=
this) {
155 m_object = other.m_object;
156 other.m_object =
nullptr;
163 template <
typename T>
167 if (m_object->del_ref())
171 template <
typename T>
174 return m_object->get();
177 template <
typename T>
181 return m_object->get_refcount();
186 template <
typename T>
194 template <
typename T>
197 assert(m_refcount == 0);
198 m_destructor(m_data);
201 template <
typename T>
207 template <
typename T>
211 return (m_refcount <= 0);
214 template <
typename T>
220 template <
typename T>
a singulater reference counted object that gets destroyed when the refount goes to zero
static const EmptyDestructor empty_destructor
unsigned get_refcount() const
TSingleReferencedObject()
~TSingleReferencedObject()
TSingleReferencedObject & operator=(const TSingleReferencedObject< T > &other)
#define NS_MIA_BEGIN
conveniance define to start the mia namespace
#define NS_MIA_END
conveniance define to end the mia namespace
virtual void operator()(T &data) const =0
virtual void operator()(T &data) const