Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

cxx_args_obj.h

00001 #ifndef __UPF_CXX_ARGS_OBJ_H__
00002 #define __UPF_CXX_ARGS_OBJ_H__
00003 
00004 
00005 namespace upf
00006 {
00007 
00008 // upf object I/O:
00009 inline Arguments& operator<<(Arguments& holder, IObject* obj)
00010 {
00011     upf_Object *value = obj ? obj->_upf_getABIObject() : NULL;
00012     holder.write(&value, sizeof(value));
00013     // add one reference, so that the object lives for the duration of data
00014     // transfer (i.e. till it is unmarshalled with operator>>):
00015     if (value) value->refCnt++;
00016     return holder;
00017 }
00018 
00019 template<class T>
00020 inline Arguments& operator>>(Arguments& holder, ::upf::Ptr<T>& obj)
00021 {
00022     upf_Object *value;
00023     holder.read(&value, sizeof(value));
00024     obj = value ? _makeCxxObject<T>(value) : (T*)NULL;
00025     // decrement refCount of unmarshalled object (was incremented by operator<<):
00026     if (value) value->refCnt--;
00027     return holder;
00028 }
00029 
00030 } // end of namespace 'upf'
00031 
00032 
00033 #endif

Generated on Wed Jan 15 23:10:55 2003 for Universal Plugins Framework by doxygen1.2.18