32#ifndef _QX_REGISTER_H_
33#define _QX_REGISTER_H_
48#pragma warning(disable:4996)
49#pragma warning(disable:4094)
68#define QX_REGISTER_CLASS_MAPPING_FCT_HPP(dllImportExport, className) \
69namespace qx { template <> dllImportExport void register_class(QxClass< className > & t) QX_USED; }
71#define QX_REGISTER_SERIALIZE_QDATASTREAM_HPP(dllImportExport, className) \
72dllImportExport QDataStream & operator<< (QDataStream & stream, const className & t) QX_USED; \
73dllImportExport QDataStream & operator>> (QDataStream & stream, className & t) QX_USED;
75#define QX_REGISTER_SERIALIZE_QDATASTREAM_CPP(className) \
76QDataStream & operator<< (QDataStream & stream, const className & t) \
77{ return qx::QxSerializeRegistered< className >::save(stream, t); } \
78QDataStream & operator>> (QDataStream & stream, className & t) \
79{ return qx::QxSerializeRegistered< className >::load(stream, t); }
81#define QX_REGISTER_CLASS_MAPPING_FCT_EMPTY_CPP(className) \
82namespace qx { template <> void register_class(QxClass< className > & t) { Q_UNUSED(t); } }
84#ifdef _QX_ENABLE_BOOST_SERIALIZATION
85#define QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(Archive, className) \
86namespace boost { namespace serialization { \
87inline void serialize(Archive & ar, className & t, const unsigned int file_version) \
89 static_assert(qx::trait::is_qx_registered< className >::value, "qx::trait::is_qx_registered< className >::value"); \
90 typedef std::conditional< Archive::is_saving::value, qx::serialization::detail::saver< Archive, className >, qx::serialization::detail::loader< Archive, className > >::type type_invoker; \
91 type_invoker::invoke(ar, t, file_version); \
95#ifdef _QX_ENABLE_BOOST_SERIALIZATION
96#define QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, Archive, className) \
97namespace boost { namespace serialization { \
98dllImportExport void serialize(Archive & ar, className & t, const unsigned int file_version) QX_USED; \
102#ifdef _QX_ENABLE_BOOST_SERIALIZATION
103#define QX_SERIALIZE_IMPLEMENT_ARCHIVE_EMPTY_CPP(Archive, className) \
104namespace boost { namespace serialization { \
105inline void serialize(Archive & ar, className & t, const unsigned int file_version) \
106{ Q_UNUSED(ar); Q_UNUSED(t); Q_UNUSED(file_version); \
110#ifdef _QX_ENABLE_BOOST_SERIALIZATION
111#define QX_SERIALIZE_ARCHIVE_TEMPLATE_HPP(className) \
112namespace boost { namespace serialization { \
113template <class Archive> \
114void serialize(Archive & ar, className & t, const unsigned int file_version); \
118#ifdef _QX_ENABLE_BOOST_SERIALIZATION
119#if _QX_SERIALIZE_POLYMORPHIC
120#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_POLYMORPHIC_CPP(className) \
121QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::polymorphic_oarchive, className) \
122QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::polymorphic_iarchive, className) \
123QX_SERIALIZE_IMPLEMENT_ARCHIVE_EMPTY_CPP(boost::archive::polymorphic_binary_oarchive, className) \
124QX_SERIALIZE_IMPLEMENT_ARCHIVE_EMPTY_CPP(boost::archive::polymorphic_binary_iarchive, className) \
125QX_SERIALIZE_IMPLEMENT_ARCHIVE_EMPTY_CPP(boost::archive::polymorphic_text_oarchive, className) \
126QX_SERIALIZE_IMPLEMENT_ARCHIVE_EMPTY_CPP(boost::archive::polymorphic_text_iarchive, className) \
127QX_SERIALIZE_IMPLEMENT_ARCHIVE_EMPTY_CPP(boost::archive::polymorphic_xml_oarchive, className) \
128QX_SERIALIZE_IMPLEMENT_ARCHIVE_EMPTY_CPP(boost::archive::polymorphic_xml_iarchive, className) \
129QX_SERIALIZE_IMPLEMENT_ARCHIVE_EMPTY_CPP(boost::archive::binary_oarchive, className) \
130QX_SERIALIZE_IMPLEMENT_ARCHIVE_EMPTY_CPP(boost::archive::binary_iarchive, className) \
131QX_SERIALIZE_IMPLEMENT_ARCHIVE_EMPTY_CPP(boost::archive::text_oarchive, className) \
132QX_SERIALIZE_IMPLEMENT_ARCHIVE_EMPTY_CPP(boost::archive::text_iarchive, className) \
133QX_SERIALIZE_IMPLEMENT_ARCHIVE_EMPTY_CPP(boost::archive::xml_oarchive, className) \
134QX_SERIALIZE_IMPLEMENT_ARCHIVE_EMPTY_CPP(boost::archive::xml_iarchive, className)
136#define QX_SERIALIZE_LIST_ARCHIVE_POLYMORPHIC_HPP(dllImportExport, className) \
137QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::polymorphic_oarchive, className) \
138QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::polymorphic_iarchive, className) \
139QX_SERIALIZE_ARCHIVE_TEMPLATE_HPP(className)
141#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_POLYMORPHIC_CPP(className)
142#define QX_SERIALIZE_LIST_ARCHIVE_POLYMORPHIC_HPP(dllImportExport, className)
146#ifdef _QX_ENABLE_BOOST_SERIALIZATION
147#if _QX_SERIALIZE_BINARY
148#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_BINARY_CPP(className) \
149QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::binary_oarchive, className) \
150QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::binary_iarchive, className)
152#define QX_SERIALIZE_LIST_ARCHIVE_BINARY_HPP(dllImportExport, className) \
153QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::binary_oarchive, className) \
154QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::binary_iarchive, className)
156#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_BINARY_CPP(className)
157#define QX_SERIALIZE_LIST_ARCHIVE_BINARY_HPP(dllImportExport, className)
161#ifdef _QX_ENABLE_BOOST_SERIALIZATION
162#if _QX_SERIALIZE_TEXT
163#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_TEXT_CPP(className) \
164QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::text_oarchive, className) \
165QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::text_iarchive, className)
167#define QX_SERIALIZE_LIST_ARCHIVE_TEXT_HPP(dllImportExport, className) \
168QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::text_oarchive, className) \
169QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::text_iarchive, className)
171#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_TEXT_CPP(className)
172#define QX_SERIALIZE_LIST_ARCHIVE_TEXT_HPP(dllImportExport, className)
176#ifdef _QX_ENABLE_BOOST_SERIALIZATION
178#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_XML_CPP(className) \
179QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::xml_oarchive, className) \
180QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::xml_iarchive, className)
182#define QX_SERIALIZE_LIST_ARCHIVE_XML_HPP(dllImportExport, className) \
183QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::xml_oarchive, className) \
184QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::xml_iarchive, className)
186#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_XML_CPP(className)
187#define QX_SERIALIZE_LIST_ARCHIVE_XML_HPP(dllImportExport, className)
191#ifdef _QX_ENABLE_BOOST_SERIALIZATION
192#if _QX_SERIALIZE_PORTABLE_BINARY
193#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_PORTABLE_BINARY_CPP(className) \
194QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(eos::portable_oarchive, className) \
195QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(eos::portable_iarchive, className)
197#define QX_SERIALIZE_LIST_ARCHIVE_PORTABLE_BINARY_HPP(dllImportExport, className) \
198QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, eos::portable_oarchive, className) \
199QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, eos::portable_iarchive, className)
201#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_PORTABLE_BINARY_CPP(className)
202#define QX_SERIALIZE_LIST_ARCHIVE_PORTABLE_BINARY_HPP(dllImportExport, className)
206#ifdef _QX_ENABLE_BOOST_SERIALIZATION
207#if _QX_SERIALIZE_WIDE_BINARY
208#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_WIDE_BINARY_CPP(className) \
209QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::binary_woarchive, className) \
210QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::binary_wiarchive, className)
212#define QX_SERIALIZE_LIST_ARCHIVE_WIDE_BINARY_HPP(dllImportExport, className) \
213QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::binary_woarchive, className) \
214QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::binary_wiarchive, className)
216#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_WIDE_BINARY_CPP(className)
217#define QX_SERIALIZE_LIST_ARCHIVE_WIDE_BINARY_HPP(dllImportExport, className)
221#ifdef _QX_ENABLE_BOOST_SERIALIZATION
222#if _QX_SERIALIZE_WIDE_TEXT
223#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_WIDE_TEXT_CPP(className) \
224QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::text_woarchive, className) \
225QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::text_wiarchive, className)
227#define QX_SERIALIZE_LIST_ARCHIVE_WIDE_TEXT_HPP(dllImportExport, className) \
228QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::text_woarchive, className) \
229QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::text_wiarchive, className)
231#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_WIDE_TEXT_CPP(className)
232#define QX_SERIALIZE_LIST_ARCHIVE_WIDE_TEXT_HPP(dllImportExport, className)
236#ifdef _QX_ENABLE_BOOST_SERIALIZATION
237#if _QX_SERIALIZE_WIDE_XML
238#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_WIDE_XML_CPP(className) \
239QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::xml_woarchive, className) \
240QX_SERIALIZE_IMPLEMENT_ARCHIVE_CPP(boost::archive::xml_wiarchive, className)
242#define QX_SERIALIZE_LIST_ARCHIVE_WIDE_XML_HPP(dllImportExport, className) \
243QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::xml_woarchive, className) \
244QX_SERIALIZE_ARCHIVE_HPP(dllImportExport, boost::archive::xml_wiarchive, className)
246#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_WIDE_XML_CPP(className)
247#define QX_SERIALIZE_LIST_ARCHIVE_WIDE_XML_HPP(dllImportExport, className)
251#ifdef _QX_ENABLE_BOOST_SERIALIZATION
252#define QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_CPP(className) \
253QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_POLYMORPHIC_CPP(className) \
254QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_BINARY_CPP(className) \
255QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_TEXT_CPP(className) \
256QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_XML_CPP(className) \
257QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_PORTABLE_BINARY_CPP(className) \
258QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_WIDE_BINARY_CPP(className) \
259QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_WIDE_TEXT_CPP(className) \
260QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_WIDE_XML_CPP(className)
263#ifdef _QX_ENABLE_BOOST_SERIALIZATION
264#define QX_SERIALIZE_LIST_ARCHIVE_HPP(dllImportExport, className) \
265QX_SERIALIZE_LIST_ARCHIVE_POLYMORPHIC_HPP(dllImportExport, className) \
266QX_SERIALIZE_LIST_ARCHIVE_BINARY_HPP(dllImportExport, className) \
267QX_SERIALIZE_LIST_ARCHIVE_TEXT_HPP(dllImportExport, className) \
268QX_SERIALIZE_LIST_ARCHIVE_XML_HPP(dllImportExport, className) \
269QX_SERIALIZE_LIST_ARCHIVE_PORTABLE_BINARY_HPP(dllImportExport, className) \
270QX_SERIALIZE_LIST_ARCHIVE_WIDE_BINARY_HPP(dllImportExport, className) \
271QX_SERIALIZE_LIST_ARCHIVE_WIDE_TEXT_HPP(dllImportExport, className) \
272QX_SERIALIZE_LIST_ARCHIVE_WIDE_XML_HPP(dllImportExport, className)
275#ifdef _QX_ENABLE_BOOST_SERIALIZATION
276#if _QX_WRITE_BOOST_CLASS_EXPORT_IN_HPP_FILE
277#define QX_BOOST_CLASS_EXPORT_HPP(className) BOOST_CLASS_EXPORT_GUID(className, #className)
279#define QX_BOOST_CLASS_EXPORT_HPP(className)
283#ifdef _QX_ENABLE_BOOST_SERIALIZATION
284#if _QX_WRITE_BOOST_CLASS_EXPORT_IN_CPP_FILE
285#define QX_BOOST_CLASS_EXPORT_CPP(className) BOOST_CLASS_EXPORT_GUID(className, #className)
287#define QX_BOOST_CLASS_EXPORT_CPP(className)
291#define QX_REGISTER_FRIEND_CLASS(className) \
292template <class T> friend void qx::register_class(T & t);
294#define QX_DLL_EXPORT_TEMPLATE_QX_CLASS_HPP(className) \
295QX_DLL_EXPORT_TEMPLATE_HPP(class, qx::QxDataMemberX< className >) \
296QX_DLL_EXPORT_TEMPLATE_HPP(class, qx::QxSingleton< qx::QxDataMemberX< className > >) \
297QX_DLL_EXPORT_TEMPLATE_HPP(class, qx::QxClass< className >) \
298QX_DLL_EXPORT_TEMPLATE_HPP(class, qx::QxSingleton< qx::QxClass< className > >)
300#define QX_DLL_EXPORT_TEMPLATE_QX_CLASS_CPP(className) \
301QX_DLL_EXPORT_TEMPLATE_CPP(class, qx::QxDataMemberX< className >) \
302QX_DLL_EXPORT_TEMPLATE_CPP(class, qx::QxSingleton< qx::QxDataMemberX< className > >) \
303QX_DLL_EXPORT_TEMPLATE_CPP(class, qx::QxClass< className >) \
304QX_DLL_EXPORT_TEMPLATE_CPP(class, qx::QxSingleton< qx::QxClass< className > >)
306#ifdef _QX_ENABLE_BOOST_SERIALIZATION
307#define QX_REGISTER_COMPLEX_CLASS_NAME_HPP(className, baseClass, version, classNameFormatted) \
308QX_SET_REGISTERED(className) \
309QX_REGISTER_CLASS_NAME(className) \
310QX_REGISTER_BASE_CLASS(className, baseClass) \
311QX_REGISTER_FACTORY_COMPLEX_CLASS_NAME_HPP(className, classNameFormatted) \
312QX_REGISTER_BOOST_SERIALIZE_HELPER_COMPLEX_CLASS_NAME(className, classNameFormatted) \
313QX_BOOST_CLASS_EXPORT_HPP(className) \
314QX_CLASS_VERSION(className, version)
316#define QX_REGISTER_COMPLEX_CLASS_NAME_HPP(className, baseClass, version, classNameFormatted) \
317QX_SET_REGISTERED(className) \
318QX_REGISTER_CLASS_NAME(className) \
319QX_REGISTER_BASE_CLASS(className, baseClass) \
320QX_REGISTER_FACTORY_COMPLEX_CLASS_NAME_HPP(className, classNameFormatted) \
321QX_CLASS_VERSION(className, version)
324#define QX_REGISTER_HPP(className, baseClass, version) \
325QX_REGISTER_COMPLEX_CLASS_NAME_HPP(className, baseClass, version, className)
327#ifdef _QX_ENABLE_BOOST_SERIALIZATION
328#define QX_REGISTER_COMPLEX_CLASS_NAME_CPP(className, classNameFormatted) \
329QX_BOOST_CLASS_EXPORT_CPP(className) \
330QX_REGISTER_FACTORY_COMPLEX_CLASS_NAME_CPP(className, classNameFormatted) \
331QX_REGISTER_BOOST_SERIALIZE_HELPER_COMPLEX_CLASS_NAME_CPP(className, classNameFormatted) \
332QX_SERIALIZE_IMPLEMENT_LIST_ARCHIVE_CPP(className)
334#define QX_REGISTER_COMPLEX_CLASS_NAME_CPP(className, classNameFormatted) \
335QX_REGISTER_FACTORY_COMPLEX_CLASS_NAME_CPP(className, classNameFormatted)
338#define QX_REGISTER_CPP(className) \
339QX_REGISTER_COMPLEX_CLASS_NAME_CPP(className, className)
341#ifdef _QX_ENABLE_BOOST_SERIALIZATION
344#define QX_REGISTER_COMPLEX_CLASS_NAME_HPP_EXPORT_DLL(className, baseClass, version, classNameFormatted) \
345QX_REGISTER_COMPLEX_CLASS_NAME_HPP(className, baseClass, version, classNameFormatted) \
346QX_SERIALIZE_LIST_ARCHIVE_HPP(QX_DLL_EXPORT_HELPER, className) \
347QX_REGISTER_CLASS_MAPPING_FCT_HPP(QX_DLL_EXPORT_HELPER, className) \
348QX_REGISTER_SERIALIZE_QDATASTREAM_HPP(QX_DLL_EXPORT_HELPER, className)
350#define QX_REGISTER_HPP_EXPORT_DLL(className, baseClass, version) \
351QX_REGISTER_COMPLEX_CLASS_NAME_HPP_EXPORT_DLL(className, baseClass, version, className)
353#define QX_REGISTER_COMPLEX_CLASS_NAME_HPP_EXPORT_DLL(className, baseClass, version, classNameFormatted) \
354QX_REGISTER_COMPLEX_CLASS_NAME_HPP(className, baseClass, version, classNameFormatted) \
355QX_DLL_EXPORT_TEMPLATE_QX_CLASS_HPP(className) \
356QX_BOOST_EXPORT_SERIALIZATION_HPP(className) \
357QX_SERIALIZE_LIST_ARCHIVE_HPP(QX_DLL_EXPORT_HELPER, className) \
358QX_REGISTER_CLASS_MAPPING_FCT_HPP(QX_DLL_EXPORT_HELPER, className) \
359QX_REGISTER_SERIALIZE_QDATASTREAM_HPP(QX_DLL_EXPORT_HELPER, className)
361#define QX_REGISTER_HPP_EXPORT_DLL(className, baseClass, version) \
362QX_REGISTER_COMPLEX_CLASS_NAME_HPP_EXPORT_DLL(className, baseClass, version, className)
368#define QX_REGISTER_COMPLEX_CLASS_NAME_HPP_EXPORT_DLL(className, baseClass, version, classNameFormatted) \
369QX_REGISTER_COMPLEX_CLASS_NAME_HPP(className, baseClass, version, classNameFormatted) \
370QX_REGISTER_CLASS_MAPPING_FCT_HPP(QX_DLL_EXPORT_HELPER, className) \
371QX_REGISTER_SERIALIZE_QDATASTREAM_HPP(QX_DLL_EXPORT_HELPER, className)
373#define QX_REGISTER_HPP_EXPORT_DLL(className, baseClass, version) \
374QX_REGISTER_COMPLEX_CLASS_NAME_HPP_EXPORT_DLL(className, baseClass, version, className)
376#define QX_REGISTER_COMPLEX_CLASS_NAME_HPP_EXPORT_DLL(className, baseClass, version, classNameFormatted) \
377QX_REGISTER_COMPLEX_CLASS_NAME_HPP(className, baseClass, version, classNameFormatted) \
378QX_DLL_EXPORT_TEMPLATE_QX_CLASS_HPP(className) \
379QX_REGISTER_CLASS_MAPPING_FCT_HPP(QX_DLL_EXPORT_HELPER, className) \
380QX_REGISTER_SERIALIZE_QDATASTREAM_HPP(QX_DLL_EXPORT_HELPER, className)
382#define QX_REGISTER_HPP_EXPORT_DLL(className, baseClass, version) \
383QX_REGISTER_COMPLEX_CLASS_NAME_HPP_EXPORT_DLL(className, baseClass, version, className)
388#ifdef _QX_ENABLE_BOOST_SERIALIZATION
389#define QX_REGISTER_COMPLEX_CLASS_NAME_HPP_IMPORT_DLL(className, baseClass, version, classNameFormatted) \
390QX_REGISTER_COMPLEX_CLASS_NAME_HPP(className, baseClass, version, classNameFormatted) \
391QX_DLL_EXPORT_TEMPLATE_QX_CLASS_HPP(className) \
392QX_BOOST_EXPORT_SERIALIZATION_HPP(className) \
393QX_SERIALIZE_LIST_ARCHIVE_HPP(QX_DLL_IMPORT_HELPER, className) \
394QX_REGISTER_CLASS_MAPPING_FCT_HPP(QX_DLL_IMPORT_HELPER, className) \
395QX_REGISTER_SERIALIZE_QDATASTREAM_HPP(QX_DLL_IMPORT_HELPER, className)
397#define QX_REGISTER_COMPLEX_CLASS_NAME_HPP_IMPORT_DLL(className, baseClass, version, classNameFormatted) \
398QX_REGISTER_COMPLEX_CLASS_NAME_HPP(className, baseClass, version, classNameFormatted) \
399QX_DLL_EXPORT_TEMPLATE_QX_CLASS_HPP(className) \
400QX_REGISTER_CLASS_MAPPING_FCT_HPP(QX_DLL_IMPORT_HELPER, className) \
401QX_REGISTER_SERIALIZE_QDATASTREAM_HPP(QX_DLL_IMPORT_HELPER, className)
404#define QX_REGISTER_HPP_IMPORT_DLL(className, baseClass, version) \
405QX_REGISTER_COMPLEX_CLASS_NAME_HPP_IMPORT_DLL(className, baseClass, version, className)
407#ifdef _QX_ENABLE_BOOST_SERIALIZATION
408#define QX_REGISTER_COMPLEX_CLASS_NAME_CPP_EXPORT_DLL(className, classNameFormatted) \
409QX_REGISTER_COMPLEX_CLASS_NAME_CPP(className, classNameFormatted) \
410QX_DLL_EXPORT_TEMPLATE_QX_CLASS_CPP(className) \
411QX_BOOST_EXPORT_SERIALIZATION_CPP(className) \
412QX_REGISTER_SERIALIZE_QDATASTREAM_CPP(className)
414#define QX_REGISTER_COMPLEX_CLASS_NAME_CPP_EXPORT_DLL(className, classNameFormatted) \
415QX_REGISTER_COMPLEX_CLASS_NAME_CPP(className, classNameFormatted) \
416QX_DLL_EXPORT_TEMPLATE_QX_CLASS_CPP(className) \
417QX_REGISTER_SERIALIZE_QDATASTREAM_CPP(className)
420#define QX_REGISTER_CPP_EXPORT_DLL(className) \
421QX_REGISTER_COMPLEX_CLASS_NAME_CPP_EXPORT_DLL(className, className)
424#define QX_REGISTER_COMPLEX_CLASS_NAME_CPP_IMPORT_DLL(className, classNameFormatted) \
425QX_REGISTER_COMPLEX_CLASS_NAME_CPP(className, classNameFormatted)
427#define QX_REGISTER_CPP_IMPORT_DLL(className) \
428QX_REGISTER_COMPLEX_CLASS_NAME_CPP_IMPORT_DLL(className, className)
430#ifdef _QX_ENABLE_BOOST_SERIALIZATION
431#define QX_REGISTER_COMPLEX_CLASS_NAME_CPP_IMPORT_DLL(className, classNameFormatted) \
432QX_REGISTER_COMPLEX_CLASS_NAME_CPP(className, classNameFormatted) \
433QX_DLL_EXPORT_TEMPLATE_QX_CLASS_CPP(className) \
434QX_BOOST_EXPORT_SERIALIZATION_CPP(className)
436#define QX_REGISTER_COMPLEX_CLASS_NAME_CPP_IMPORT_DLL(className, classNameFormatted) \
437QX_REGISTER_COMPLEX_CLASS_NAME_CPP(className, classNameFormatted) \
438QX_DLL_EXPORT_TEMPLATE_QX_CLASS_CPP(className)
441#define QX_REGISTER_CPP_IMPORT_DLL(className) \
442QX_REGISTER_COMPLEX_CLASS_NAME_CPP_IMPORT_DLL(className, className)
445#ifdef _QX_ENABLE_BOOST_SERIALIZATION
446#define QX_REGISTER_ABSTRACT_CLASS(className) \
447BOOST_SERIALIZATION_ASSUME_ABSTRACT(className) \
448namespace boost { namespace serialization { \
449template<class Archive> \
450inline void load_construct_data(Archive & ar, className * t, const unsigned int file_version) \
451{ Q_UNUSED(ar); Q_UNUSED(t); Q_UNUSED(file_version); } \
454#define QX_REGISTER_ABSTRACT_CLASS(className)
Concrete class registered into QxOrm context.
List of parameters to compile and build QxOrm library.
Concrete factory class to create object dynamically using the class name.
List of common macros used by QxOrm library.
Provide a generic Qt QDataStream serialization method (save/load) for classes registered into QxOrm c...
Register a version number per class.
qx::trait::is_qx_registered<T>::value : return true if T is registered into QxOrm context to provide ...