QxExportDllMacroCpp.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. /****************************************************************************
  2. **
  3. ** https://www.qxorm.com/
  4. ** Copyright (C) 2013 Lionel Marty (contact@qxorm.com)
  5. **
  6. ** This file is part of the QxOrm library
  7. **
  8. ** This software is provided 'as-is', without any express or implied
  9. ** warranty. In no event will the authors be held liable for any
  10. ** damages arising from the use of this software
  11. **
  12. ** Commercial Usage
  13. ** Licensees holding valid commercial QxOrm licenses may use this file in
  14. ** accordance with the commercial license agreement provided with the
  15. ** Software or, alternatively, in accordance with the terms contained in
  16. ** a written agreement between you and Lionel Marty
  17. **
  18. ** GNU General Public License Usage
  19. ** Alternatively, this file may be used under the terms of the GNU
  20. ** General Public License version 3.0 as published by the Free Software
  21. ** Foundation and appearing in the file 'license.gpl3.txt' included in the
  22. ** packaging of this file. Please review the following information to
  23. ** ensure the GNU General Public License version 3.0 requirements will be
  24. ** met : http://www.gnu.org/copyleft/gpl.html
  25. **
  26. ** If you are unsure which license is appropriate for your use, or
  27. ** if you have questions regarding the use of this file, please contact :
  28. ** contact@qxorm.com
  29. **
  30. ****************************************************************************/
  31. #ifdef _QX_ENABLE_BOOST_SERIALIZATION
  32. #ifndef _QX_EXPORT_DLL_MACRO_CPP_H_
  33. #define _QX_EXPORT_DLL_MACRO_CPP_H_
  34. #ifdef _MSC_VER
  35. #pragma once
  36. #endif
  37. #include <QxCommon/QxConfig.h>
  38. #include <QxSerialize/boost/QxExportDllMacroHpp.h>
  39. #if _QX_USE_EXPORT_DLL_BOOST_SERIALIZATION_SINGLETON
  40. #if (BOOST_VERSION < 106600)
  41. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
  42. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::pointer_iserializer, ArchiveIn, T) \
  43. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::pointer_iserializer, ArchiveIn, T)
  44. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
  45. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::pointer_oserializer, ArchiveOut, T) \
  46. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::pointer_oserializer, ArchiveOut, T)
  47. #else // (BOOST_VERSION < 106600)
  48. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
  49. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::pointer_iserializer, ArchiveIn, T)
  50. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
  51. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::pointer_oserializer, ArchiveOut, T)
  52. #endif // (BOOST_VERSION < 106600)
  53. #if _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
  54. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_BOOST_132_HELPER_CPP(ArchiveIn, ArchiveOut, T) \
  55. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::pointer_iserializer, ArchiveIn, QX_BOOST_132_SHARED_PTR_HELPER(T)) \
  56. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::pointer_iserializer, ArchiveIn, QX_BOOST_132_SHARED_PTR_HELPER(T))
  57. #else // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
  58. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_BOOST_132_HELPER_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
  59. #endif // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
  60. #if _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
  61. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_BOOST_132_HELPER_CPP(ArchiveIn, ArchiveOut, T) \
  62. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::pointer_oserializer, ArchiveOut, QX_BOOST_132_SHARED_PTR_HELPER(T)) \
  63. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::pointer_oserializer, ArchiveOut, QX_BOOST_132_SHARED_PTR_HELPER(T))
  64. #else // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
  65. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_BOOST_132_HELPER_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
  66. #endif // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
  67. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_ISERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
  68. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::iserializer, ArchiveIn, T) \
  69. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::iserializer, ArchiveIn, T)
  70. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_OSERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
  71. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::oserializer, ArchiveOut, T) \
  72. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::oserializer, ArchiveOut, T)
  73. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_EXTENDED_TYPE_ID_CPP(T) \
  74. QX_DLL_EXPORT_TEMPLATE_T_P1_CPP(class, boost::serialization::extended_type_info_typeid, T) \
  75. QX_DLL_EXPORT_TEMPLATE_T_U_P1_CPP(class, boost::serialization::singleton, boost::serialization::extended_type_info_typeid, T)
  76. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_VOID_CAST_PRIMITIVE_CPP(T) \
  77. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::serialization::void_cast_detail::void_caster_primitive, T, QX_GET_BASE_CLASS_2(T)) \
  78. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::serialization::void_cast_detail::void_caster_primitive, T, QX_GET_BASE_CLASS_2(T))
  79. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_TYPE_INFO_IMPL_CPP(T) \
  80. QX_DLL_EXPORT_TEMPLATE_T_P1_CPP(struct, boost::serialization::type_info_implementation, T) \
  81. QX_DLL_EXPORT_TEMPLATE_T_U_P1_CPP(class, boost::serialization::singleton, boost::serialization::type_info_implementation, T)
  82. #if (BOOST_VERSION < 104100)
  83. #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
  84. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::save_pointer_type, ArchiveOut, T *) \
  85. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::save_pointer_type, ArchiveOut, T *)
  86. #else // (BOOST_VERSION < 104100)
  87. #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
  88. #endif // (BOOST_VERSION < 104100)
  89. #if (BOOST_VERSION < 104100)
  90. #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_NON_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
  91. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::save_non_pointer_type, ArchiveOut, T) \
  92. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::save_non_pointer_type, ArchiveOut, T)
  93. #else // (BOOST_VERSION < 104100)
  94. #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_NON_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
  95. #endif // (BOOST_VERSION < 104100)
  96. #if (BOOST_VERSION < 104100)
  97. #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ENUM_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
  98. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::save_enum_type, ArchiveOut, T) \
  99. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::save_enum_type, ArchiveOut, T)
  100. #else // (BOOST_VERSION < 104100)
  101. #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ENUM_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
  102. #endif // (BOOST_VERSION < 104100)
  103. #if (BOOST_VERSION < 104100)
  104. #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ARRAY_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
  105. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::save_array_type, ArchiveOut, T) \
  106. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::save_array_type, ArchiveOut, T)
  107. #else // (BOOST_VERSION < 104100)
  108. #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ARRAY_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
  109. #endif // (BOOST_VERSION < 104100)
  110. #if (BOOST_VERSION < 104100)
  111. #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
  112. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::load_pointer_type, ArchiveIn, T *) \
  113. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::load_pointer_type, ArchiveIn, T *)
  114. #else // (BOOST_VERSION < 104100)
  115. #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
  116. #endif // (BOOST_VERSION < 104100)
  117. #if (BOOST_VERSION < 104100)
  118. #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_NON_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
  119. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::load_non_pointer_type, ArchiveIn, T) \
  120. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::load_non_pointer_type, ArchiveIn, T)
  121. #else // (BOOST_VERSION < 104100)
  122. #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_NON_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
  123. #endif // (BOOST_VERSION < 104100)
  124. #if (BOOST_VERSION < 104100)
  125. #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ENUM_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
  126. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::load_enum_type, ArchiveIn, T) \
  127. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::load_enum_type, ArchiveIn, T)
  128. #else // (BOOST_VERSION < 104100)
  129. #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ENUM_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
  130. #endif // (BOOST_VERSION < 104100)
  131. #if (BOOST_VERSION < 104100)
  132. #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ARRAY_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
  133. QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::load_array_type, ArchiveIn, T) \
  134. QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::load_array_type, ArchiveIn, T)
  135. #else // (BOOST_VERSION < 104100)
  136. #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ARRAY_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
  137. #endif // (BOOST_VERSION < 104100)
  138. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(ArchiveIn, ArchiveOut, T) \
  139. QX_BOOST_EXPORT_SERIALIZATION_IMPL_ISERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
  140. QX_BOOST_EXPORT_SERIALIZATION_IMPL_OSERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
  141. QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
  142. QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
  143. QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_BOOST_132_HELPER_CPP(ArchiveIn, ArchiveOut, T) \
  144. QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_BOOST_132_HELPER_CPP(ArchiveIn, ArchiveOut, T) \
  145. QX_BOOST_EXPORT_SERIALIZATION_SAVE_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
  146. QX_BOOST_EXPORT_SERIALIZATION_LOAD_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T)
  147. #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_CPP(T) \
  148. QX_BOOST_EXPORT_SERIALIZATION_IMPL_EXTENDED_TYPE_ID_CPP(T) \
  149. /*
  150. QX_BOOST_EXPORT_SERIALIZATION_IMPL_VOID_CAST_PRIMITIVE_CPP(T) \
  151. QX_BOOST_EXPORT_SERIALIZATION_IMPL_TYPE_INFO_IMPL_CPP(T)
  152. */
  153. #if _QX_SERIALIZE_POLYMORPHIC
  154. #define QX_BOOST_EXPORT_SERIALIZATION_POLYMORPHIC_CPP(T) \
  155. QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::polymorphic_iarchive, boost::archive::polymorphic_oarchive, T)
  156. #else // _QX_SERIALIZE_POLYMORPHIC
  157. #define QX_BOOST_EXPORT_SERIALIZATION_POLYMORPHIC_CPP(T) /* Nothing */
  158. #endif // _QX_SERIALIZE_POLYMORPHIC
  159. #if _QX_SERIALIZE_BINARY
  160. #define QX_BOOST_EXPORT_SERIALIZATION_BINARY_CPP(T) \
  161. QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::binary_iarchive, boost::archive::binary_oarchive, T)
  162. #else // _QX_SERIALIZE_BINARY
  163. #define QX_BOOST_EXPORT_SERIALIZATION_BINARY_CPP(T) /* Nothing */
  164. #endif // _QX_SERIALIZE_BINARY
  165. #if _QX_SERIALIZE_TEXT
  166. #define QX_BOOST_EXPORT_SERIALIZATION_TEXT_CPP(T) \
  167. QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::text_iarchive, boost::archive::text_oarchive, T)
  168. #else // _QX_SERIALIZE_TEXT
  169. #define QX_BOOST_EXPORT_SERIALIZATION_TEXT_CPP(T) /* Nothing */
  170. #endif // _QX_SERIALIZE_TEXT
  171. #if _QX_SERIALIZE_XML
  172. #define QX_BOOST_EXPORT_SERIALIZATION_XML_CPP(T) \
  173. QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::xml_iarchive, boost::archive::xml_oarchive, T)
  174. #else // _QX_SERIALIZE_XML
  175. #define QX_BOOST_EXPORT_SERIALIZATION_XML_CPP(T) /* Nothing */
  176. #endif // _QX_SERIALIZE_XML
  177. #if _QX_SERIALIZE_PORTABLE_BINARY
  178. #define QX_BOOST_EXPORT_SERIALIZATION_PORTABLE_BINARY_CPP(T) \
  179. QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(eos::portable_iarchive, eos::portable_oarchive, T)
  180. #else // _QX_SERIALIZE_PORTABLE_BINARY
  181. #define QX_BOOST_EXPORT_SERIALIZATION_PORTABLE_BINARY_CPP(T) /* Nothing */
  182. #endif // _QX_SERIALIZE_PORTABLE_BINARY
  183. #if _QX_SERIALIZE_WIDE_BINARY
  184. #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_BINARY_CPP(T) \
  185. QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::binary_wiarchive, boost::archive::binary_woarchive, T)
  186. #else // _QX_SERIALIZE_WIDE_BINARY
  187. #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_BINARY_CPP(T) /* Nothing */
  188. #endif // _QX_SERIALIZE_WIDE_BINARY
  189. #if _QX_SERIALIZE_WIDE_TEXT
  190. #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_TEXT_CPP(T) \
  191. QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::text_wiarchive, boost::archive::text_woarchive, T)
  192. #else // _QX_SERIALIZE_WIDE_TEXT
  193. #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_TEXT_CPP(T) /* Nothing */
  194. #endif // _QX_SERIALIZE_WIDE_TEXT
  195. #if _QX_SERIALIZE_WIDE_XML
  196. #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_XML_CPP(T) \
  197. QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::xml_wiarchive, boost::archive::xml_woarchive, T)
  198. #else // _QX_SERIALIZE_WIDE_XML
  199. #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_XML_CPP(T) /* Nothing */
  200. #endif // _QX_SERIALIZE_WIDE_XML
  201. #define QX_BOOST_EXPORT_SERIALIZATION_CPP(T) \
  202. QX_BOOST_EXPORT_SERIALIZATION_IMPL_CPP(T) \
  203. QX_BOOST_EXPORT_SERIALIZATION_POLYMORPHIC_CPP(T) \
  204. QX_BOOST_EXPORT_SERIALIZATION_BINARY_CPP(T) \
  205. QX_BOOST_EXPORT_SERIALIZATION_TEXT_CPP(T) \
  206. QX_BOOST_EXPORT_SERIALIZATION_XML_CPP(T) \
  207. QX_BOOST_EXPORT_SERIALIZATION_PORTABLE_BINARY_CPP(T) \
  208. QX_BOOST_EXPORT_SERIALIZATION_WIDE_BINARY_CPP(T) \
  209. QX_BOOST_EXPORT_SERIALIZATION_WIDE_TEXT_CPP(T) \
  210. QX_BOOST_EXPORT_SERIALIZATION_WIDE_XML_CPP(T)
  211. #else // _QX_USE_EXPORT_DLL_BOOST_SERIALIZATION_SINGLETON
  212. #define QX_BOOST_EXPORT_SERIALIZATION_CPP(T) /* Nothing */
  213. #endif // _QX_USE_EXPORT_DLL_BOOST_SERIALIZATION_SINGLETON
  214. #endif // _QX_EXPORT_DLL_MACRO_CPP_H_
  215. #endif // _QX_ENABLE_BOOST_SERIALIZATION