27 #ifndef _REC_RPC_SERIALIZATION_COMPLEX_H_ 28 #define _REC_RPC_SERIALIZATION_COMPLEX_H_ 33 #include <QDataStream> 40 namespace serialization
61 Complex(
const QString& versionString );
76 void serialize( QDataStream& )
const;
77 void deserialize( QDataStream& );
79 const QString _versionString;
80 QList< Serializable* > _children;
99 #define BEGIN_COMPLEX_DATA_DECLARATION( TYPENAME ) \ 101 typedef QSharedPointer< TYPENAME > TYPENAME##Ptr; \ 102 typedef QSharedPointer< const TYPENAME > TYPENAME##PtrConst; \ 103 class TYPENAME : public rec::rpc::serialization::Complex \ 113 #define END_COMPLEX_DATA_DECLARATION }; 126 #define BEGIN_COMPLEX_DATA_IMPLEMENTATION( TYPENAME, VERSION ) \ 127 TYPENAME::TYPENAME() \ 128 : rec::rpc::serialization::Complex( #TYPENAME "_" #VERSION ) \ 136 #define END_COMPLEX_DATA_IMPLEMENTATION } 154 #define BEGIN_COMPLEX_DATA_DECLARATION_AND_IMPLEMENTATION( TYPENAME, VERSION ) \ 156 typedef QSharedPointer< TYPENAME > TYPENAME##Ptr; \ 157 typedef QSharedPointer< const TYPENAME > TYPENAME##PtrConst; \ 158 class TYPENAME : public rec::rpc::serialization::Complex \ 162 : rec::rpc::serialization::Complex( #TYPENAME "_" #VERSION ) \ 173 #define END_COMPLEX_DATA_DECLARATION_AND_IMPLEMENTATION_CONSTRUCTOR } 180 #define END_COMPLEX_DATA_DECLARATION_AND_IMPLEMENTATION }; 190 #define USE_COMPLEX_DATA( EXISTINGTYPENAME, NEWTYPENAME ) \ 191 typedef EXISTINGTYPENAME NEWTYPENAME; \ 192 typedef QSharedPointer< NEWTYPENAME > NEWTYPENAME##Ptr; \ 193 typedef QSharedPointer< const NEWTYPENAME > NEWTYPENAME##PtrConst; 203 #define USE_COMPLEX_DATA_AS_PARAM( TYPENAME, FUNCTIONNAME ) USE_COMPLEX_DATA( TYPENAME, FUNCTIONNAME##Param ) 213 #define USE_COMPLEX_DATA_AS_RESULT( TYPENAME, FUNCTIONNAME ) USE_COMPLEX_DATA( TYPENAME, FUNCTIONNAME##Result ) 223 #define USE_COMPLEX_DATA_AS_TOPICDATA( TYPENAME, TOPICNAME ) USE_COMPLEX_DATA( TYPENAME, topic##TOPICNAME##Data ) 236 #define DECLARE_CUSTOM_MEMBER( DATATYPE, NAME ) \ 238 QSharedPointer< DATATYPE > _##NAME; \ 239 void create_##NAME() { _##NAME = QSharedPointer< DATATYPE >( new DATATYPE ); } \ 241 DATATYPE& NAME() { return *_##NAME; } \ 242 const DATATYPE& NAME() const { return *_##NAME; } \ 243 void set##NAME( const DATATYPE& pos ) { *_##NAME = pos; } 252 #define ADD_MEMBER( NAME ) \ 254 addChild( _##NAME.data() ); 256 #endif //_REC_RPC_SERIALIZATION_COMPLEX_H_
Base class for all serializable data.
Base class for complex serializable data containers.