ZFFramework
 
Loading...
Searching...
No Matches
zfauto.h
Go to the documentation of this file.
1
5
6#ifndef _ZFI_zfauto_h_
7#define _ZFI_zfauto_h_
8
9#include "ZFObjectRetain.h"
10
12
13// ============================================================
14// zfauto
16inline zfauto::zfauto(ZF_IN ZFObject *p)
17: _ZFP_obj(zfRetain(p))
18{
19}
20
21template<typename T_ZFObject>
22zfauto::zfauto(ZF_IN T_ZFObject const &p)
23: _ZFP_obj(zfRetain(_ZFP_zfanyCast(p)))
24{
25}
26
27template<typename T_ZFObject>
28zfauto &zfauto::operator = (ZF_IN T_ZFObject const &p) {
30 this->zfunsafe_assign(_ZFP_zfanyCast(p));
32 return *this;
33}
34template<typename T_ZFObject>
35inline zfauto::operator T_ZFObject * (void) const {
36 return zfcast(T_ZFObject *, this->toObject());
37}
38template<typename T_ZFObject>
39inline T_ZFObject zfauto::to(void) const {
40 return zfcast(T_ZFObject, this->toObject());
41}
43
44// ============================================================
46template<typename T_ZFObjectBase>
47T_ZFObjectBase *zfautoT<T_ZFObjectBase>::operator -> (void) const {
48 return zfcast(T_ZFObjectBase *, this->toObject());
49}
50
51template<typename T_ZFObjectBase>
53 return T_ZFObjectBase::ClassData();
54}
56
58
59#endif // #ifndef _ZFI_zfauto_h_
60
#define ZFCoreMutexUnlock()
see ZFCoreMutexLock
Definition ZFCoreMutex.h:58
#define ZFCoreMutexLock()
internal use only
Definition ZFCoreMutex.h:51
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:180
#define ZF_NAMESPACE_GLOBAL_BEGIN
begin namespace ZFFramework
Definition ZFNamespace.h:97
#define ZF_NAMESPACE_GLOBAL_END
end namespace ZFFramework
Definition ZFNamespace.h:98
#define zfcast(T_To, obj)
safely cast ZFObject types, return null if not desired type
Definition ZFObjectCast.h:28
retain count logic for ZFFramework
#define zfRetain(obj)
retain an object, see ZFObject
Definition ZFObjectRetain.h:128
ZFObject's class info.
Definition ZFClass.h:67
base class of all objects
Definition ZFObjectCore.h:209
a ZFObject holder which would release content object automatically when destroyed
Definition zfautoFwd.h:34
T_ZFObject to(void) const
cast by zfcast
void zfunsafe_assign(ZFObject *obj)
no lock version of object assign, for low level impl only
ZFObject * toObject(void) const
get the holded object
Definition zfautoFwd.h:91
type restrict version of zfauto
Definition zfautoFwd.h:110