57 template<
typename T_ZFObject>
71 template<
typename T_ZFObject>
72 inline zfweak &operator = (
ZF_IN T_ZFObject
const &obj) {
78 template<
typename T_ZFObject>
79 inline zfbool operator == (
ZF_IN T_ZFObject
const &obj)
const {
80 return this->
toObject() == _ZFP_zfanyCast(obj);
82 template<
typename T_ZFObject>
83 inline zfbool operator != (
ZF_IN T_ZFObject
const &obj)
const {
84 return this->
toObject() != _ZFP_zfanyCast(obj);
88 inline ZFObject *operator -> (
void)
const {
91 inline operator ZFObject * (void)
const {
94 template<
typename T_ZFObject>
95 inline operator T_ZFObject * (void)
const {
100 static const ZFClass *ClassData(
void) {
122 template<
typename T_ZFObject>
125 _ZFP_I_zfweak *old = _ZFP_obj;
126 _ZFP_obj = (t ?
zfRetain(t->_ZFP_ZFObject_weakHolder()) :
zfnull);
133 this->
set(obj.toObject());
139 _ZFP_I_zfweak *old = _ZFP_obj;
149 return _ZFP_obj ? _ZFP_obj->get().toObject() :
zfnull;
154 template<
typename T_ZFObject>
155 inline T_ZFObject
to(
void)
const {
172 v.toObject()->objectInfoT(s);
188template<
typename T_ZFObjectBase>
196 template<
typename T_ZFObject>
208 template<
typename T_ZFObject>
215 template<
typename T_ZFObject>
216 inline zfbool operator == (
ZF_IN T_ZFObject
const &obj)
const {
217 return this->
toObject() == _ZFP_zfanyCast(obj);
219 template<
typename T_ZFObject>
220 inline zfbool operator != (
ZF_IN T_ZFObject
const &obj)
const {
221 return this->
toObject() != _ZFP_zfanyCast(obj);
225 inline T_ZFObjectBase *operator -> (
void)
const {
235 static const ZFClass *ClassData(
void) {
236 return T_ZFObjectBase::ClassData();
243 v.toObject()->objectInfoT(s);
250template<typename T_ZFObject>
254 TypeIdRegistered = 1,
255 TypeIdSerializable = 1,
257 static inline const zfstring &TypeId(
void) {
260 static inline const ZFClass *TypeIdClass(
void) {
264 virtual zfbool typeIdSerializable(
void)
const {
265 return TypeIdSerializable;
268 virtual const zfstring &typeId(
void)
const {
272 virtual const ZFClass *typeIdClass(
void)
const {
273 return TypeIdClass();
281 template<
typename T_Access = zfweakT<T_ZFObject>
282 ,
int T_Mode = ((zftTraits<
typename zftTraits<T_Access>::TrNoRef>::TrIsPtr
283 && !zftIsSame<
typename zftTraits<T_Access>::TrNoRef, zfweakT<T_ZFObject> >::Value) ? 1
284 : ((zftTraits<
typename zftTraits<T_Access>::TrNoRef>::TrIsPtr
285 && zftIsSame<
typename zftTraits<T_Access>::TrNoRef, zfweakT<T_ZFObject> >::Value
286 && !zftTraits<T_Access>::TrIsRef) ? 2 : 0))
287 ,
typename T_Fix =
void
302 template<
typename T_Access>
331 Value<zfweakT<T_ZFObject> >::zfvAccessFinish(obj);
342template<
typename T_ZFObject>
344 return e.toObject() == _ZFP_zfanyCast(obj);
346template<
typename T_ZFObject>
348 return e.toObject() != _ZFP_zfanyCast(obj);
352template<
typename T_ZFObject,
typename T_ZFObjectBase>
354 return e.toObject() == _ZFP_zfanyCast(obj);
356template<
typename T_ZFObject,
typename T_ZFObjectBase>
358 return e.toObject() != _ZFP_zfanyCast(obj);
363template<
typename T_ZFObject>
366 static inline void zfweakNotSupport(
void) {}
369template<
typename T_ZFObject>
zfclassNotPOD _ZFP_zfweakCkT<zfweakT<T_ZFObject> > {};
370template<
typename T_ZFObject>
371inline void _ZFP_zfweakCk(T_ZFObject &t) {
372 _ZFP_zfweakCkT<typename zftTraits<T_ZFObject>::TrNoRef>::zfweakNotSupport();
#define ZFCOMPARER_DEFAULT_DECLARE(T_Comparable0, T_Comparable1, compareAction)
declare a template specialization for ZFComparerDefault
Definition ZFComparer.h:264
#define ZFLIB_ZFCore
used to export symbols
Definition ZFCoreEnvDef.h:30
#define zfclassLikePOD
shows the class is not a POD type, but you may use it like a POD except memset it to 0
Definition ZFCoreTypeDef_ClassType.h:41
#define zfextend
dummy macro shows class inherit from another
Definition ZFCoreTypeDef_ClassType.h:53
#define zfdelete(instance)
same as delete defined for future use
Definition ZFCoreTypeDef_ClassType.h:91
#define zfoverride
dummy macro shows that method override parent's method
Definition ZFCoreTypeDef_ClassType.h:58
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:180
#define ZF_OUT
dummy macro that shows the param used as required output
Definition ZFCoreTypeDef_ClassType.h:188
#define zfclassNotPOD
shows the class is not a POD type, you should not memset it or declare it in stack or copy value by c...
Definition ZFCoreTypeDef_ClassType.h:48
#define ZF_IN_OUT
dummy macro that shows the param used as required input and output
Definition ZFCoreTypeDef_ClassType.h:196
#define zfnew(Type,...)
same as new defined for future use
Definition ZFCoreTypeDef_ClassType.h:89
#define zfnullT
type for zfnull, can be used for function overload
Definition ZFCoreTypeDef_CoreType.h:85
_ZFT_t_zfbool zfbool
bool type
Definition ZFCoreTypeDef_CoreType.h:103
#define zfnull
same as NULL, defined for future use
Definition ZFCoreTypeDef_CoreType.h:88
#define ZFOUTPUT_TYPE(T_Type, outputAction)
declare your custom type conversion to string, convenient for debug
Definition ZFCoreTypeDef_OtherType.h:221
#define ZFOUTPUT_TYPE_TEMPLATE(T_typenameList, T_Type, outputAction)
see ZFOUTPUT_TYPE
Definition ZFCoreTypeDef_OtherType.h:262
#define ZFTOKEN_zfnull
string tokens
Definition ZFCoreTypeDef_OtherType.h:16
zft_zfstring< zfchar > zfstring
see zft_zfstring
Definition ZFCoreTypeDef_StringType.h:15
#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
#define zfRelease(obj)
release an object, see ZFObject
Definition ZFObjectRetain.h:148
#define zfRetain(obj)
retain an object, see ZFObject
Definition ZFObjectRetain.h:128
ZFCompareResult ZFObjectCompare(ZFObject *const &e0, ZFObject *const &e1)
util method to compare two ZFObject, return ZFCompareEqual if both null, return ZFCompareUncomparable...
Definition ZFObjectUtil.h:21
#define ZFTYPEID_ACCESS_ONLY_REG(ZFLIB_, TypeName, Type,...)
see ZFTYPEID_DECLARE
Definition ZFTypeIdDeclare.h:205
#define ZFTYPEID_ACCESS_ONLY_DECLARE(ZFLIB_, TypeName, Type)
see ZFTYPEID_DECLARE
Definition ZFTypeIdDeclare.h:195
ZFObject's class info.
Definition ZFClass.h:67
dummy base for ZFCoreArray
Definition ZFCoreArray.h:162
light weight array
Definition ZFCoreArray.h:331
base class of all objects
Definition ZFObjectCore.h:209
static const ZFClass * ClassData(void)
get class info
Definition ZFObjectCore.h:211
static zfbool zfvAccessAvailable(zfauto &obj)
try access as raw value, see ZFTypeId::Value
static T_Access zfvAccess(zfauto &obj)
try access as raw value, see ZFTypeId::Value
static void zfvAccessFinish(zfauto &obj)
finish access as raw value, see ZFTypeId::Value
type data traits for ZFTYPEID_DECLARE
Definition ZFTypeIdFwd.h:117
static const zfstring & TypeId(void)
get type id, or return ZFTypeId_none if not registered
static zfbool ValueStore(zfauto &obj, T_Type const &v)
store the value to wrapper object
base protocol for ZFTypeId
Definition ZFTypeIdFwd.h:24
static const ZFClass * ClassData(void)
get class info
Definition zfweak.h:181
util method to cast ZFObject types freely
Definition zfany.h:35
ZFObject * toObject(void) const
get the holded object
Definition zfany.h:85
see zfany
Definition zfany.h:106
a ZFObject holder which would release content object automatically when destroyed
Definition zfautoFwd.h:34
T_Type TrNoRef
remove reference
Definition ZFCoreUtilTemplate.h:110
weak reference to ZFObject
Definition zfweak.h:51
zfany get(void) const
get the holded object
Definition zfweak.h:116
const zfany & asAny(void) const
access as zfany
Definition zfweak.h:162
void set(T_ZFObject const &obj)
set the holded object
Definition zfweak.h:123
ZFObject * toObject(void) const
get the holded object
Definition zfweak.h:148
T_ZFObject to(void) const
cast by zfcast
Definition zfweak.h:155
void set(const zfweak &obj)
set the holded object
Definition zfweak.h:132
zfbool valid(void) const
true if the holded object is not null
Definition zfweak.h:109
void set(zft_zfnullT const &)
set the holded object
Definition zfweak.h:138
see zfweak
Definition zfweak.h:189
weak reference to ZFObject