5 #ifndef CMR_AUTO_REF_DEFINED
6 #define CMR_AUTO_REF_DEFINED
14 inline void AutoRefBase::attach()
21 inline void AutoRefBase::release()
30 inline void IAutoRefBase::attach()
37 inline void IAutoRefBase::release()
137 if ((
void*)
this != (
void*)&a)
149 if ((
void*)
this != (
void*)&a)
160 set_(dynamic_cast<E*>(p));
166 operator bool ()
const
185 set_(dynamic_cast<E*>(E::create().
get_()));
194 set_(dynamic_cast<E*>(E::bind(s).
get_()));
203 set_(dynamic_cast<E*>(E::bind().
get_()));
240 return get() == a.
get();
242 bool operator != (
const AutoRef& a)
const
244 return get() != a.
get();
246 bool operator < (
const AutoRef& a)
const
248 return get() < a.get();
274 :
IAutoRefBase(dynamic_cast<E*>(E::auto_create().get_())) {}
289 if ((
void*)
this != (
void*)&a)
297 if ((
void*)
this != (
void*)&a)
299 set_(dynamic_cast<E*>(a.get_()));
306 set_(dynamic_cast<E*>(p));
309 operator bool ()
const
315 bool create(
const AChar* s)
322 set_(dynamic_cast<E*>(E::create().get_()));
327 set_(dynamic_cast<E*>(E::bind().get_()));
330 bool bind(
const AChar* s)
332 set_(dynamic_cast<E*>(E::bind(s).get_()));
340 E* operator->()
const
348 bool operator == (
const IAutoRef& a)
const
350 return get() == a.get();
352 bool operator != (
const IAutoRef& a)
const
354 return get() != a.get();
356 bool is_bound()
const
364 #ifdef CMR_BSTREAM_INCLUDED
366 commore::OBStream& operator << (commore::OBStream& o, const commore::AutoRef<X>& p)
373 commore::OBStream& operator << (commore::OBStream& o, const commore::IAutoRef<X>& p)
static AutoRefBase lookup_create(const AChar *factory_name, const AChar *s, const AutoRefBase &def)
Definition: RefObject.h:24
bool bind(const AChar *s)
Definition: AutoRef.h:192
AutoRef(bool)
Definition: AutoRef.h:105
Definition: AutoRefBase.h:102
AutoRef(const AutoRef &a)
Definition: AutoRef.h:123
AutoRef(const AutoRefBase &a)
Definition: AutoRef.h:129
E & operator*() const
Definition: AutoRef.h:217
Definition: AutoRefBase.h:18
void unbind()
Definition: AutoRef.h:260
bool operator==(const AutoRef &a) const
Definition: AutoRef.h:238
E * get() const
Definition: AutoRef.h:209
E * operator->() const
Definition: AutoRef.h:224
AutoRef & operator=(const AutoRef &a)
Definition: AutoRef.h:135
bool create(const AChar *s)
Definition: AutoRef.h:175
virtual void nested_attach()
Definition: RefObject.h:89
AutoRef is a smart pointer on RefObject objects. AutoRef is templatized with the type of the pointed ...
Definition: AutoRef.h:86
bool is_bound() const
Definition: AutoRef.h:253
RefObject * get_() const
Definition: AutoRefBase.h:65
AutoRef(E *p)
Definition: AutoRef.h:111
void set_(RefObject *p)
Definition: AutoRefBase.h:72
Definition: IOBStream.h:166
AutoRef(const AChar *s)
Definition: AutoRef.h:99
AutoRef(RefObject *p)
Definition: AutoRef.h:117
AutoRef()
Definition: AutoRef.h:93
Definition: AutoRef.h:270
bool create()
Definition: AutoRef.h:183
bool bind()
Definition: AutoRef.h:201