QxOrm 1.4.9
C++ Object Relational Mapping library
Loading...
Searching...
No Matches
QxExportDllMacroHpp.h
Go to the documentation of this file.
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
32#ifdef _QX_ENABLE_BOOST_SERIALIZATION
33#ifndef _QX_EXPORT_DLL_MACRO_HPP_H_
34#define _QX_EXPORT_DLL_MACRO_HPP_H_
35
36#ifdef _MSC_VER
37#pragma once
38#endif
39
40#include <QxCommon/QxConfig.h>
41
43
45
46#if _QX_USE_EXPORT_DLL_BOOST_SERIALIZATION_SINGLETON
47
48#if _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
49#if (BOOST_VERSION >= 104100)
50#define QX_BOOST_132_SHARED_PTR_HELPER(T) \
51boost_132::detail::sp_counted_base_impl< T *, boost::serialization::null_deleter >
52#else // (BOOST_VERSION >= 104100)
53#define QX_BOOST_132_SHARED_PTR_HELPER(T) \
54boost_132::detail::sp_counted_base_impl< T *, boost_132::serialization::detail::null_deleter >
55#endif // (BOOST_VERSION >= 104100)
56#endif // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
57
58#if (BOOST_VERSION < 106600)
59#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \
60QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::pointer_iserializer, ArchiveIn, T) \
61QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::pointer_iserializer, ArchiveIn, T)
62
63#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \
64QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::pointer_oserializer, ArchiveOut, T) \
65QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::pointer_oserializer, ArchiveOut, T)
66#else // (BOOST_VERSION < 106600)
67#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \
68QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::pointer_iserializer, ArchiveIn, T)
69
70#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \
71QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::pointer_oserializer, ArchiveOut, T)
72#endif // (BOOST_VERSION < 106600)
73
74#if _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
75#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_BOOST_132_HELPER_HPP(ArchiveIn, ArchiveOut, T) \
76QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::pointer_iserializer, ArchiveIn, QX_BOOST_132_SHARED_PTR_HELPER(T)) \
77QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::pointer_iserializer, ArchiveIn, QX_BOOST_132_SHARED_PTR_HELPER(T))
78#else // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
79#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_BOOST_132_HELPER_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */
80#endif // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
81
82#if _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
83#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_BOOST_132_HELPER_HPP(ArchiveIn, ArchiveOut, T) \
84QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::pointer_oserializer, ArchiveOut, QX_BOOST_132_SHARED_PTR_HELPER(T)) \
85QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::pointer_oserializer, ArchiveOut, QX_BOOST_132_SHARED_PTR_HELPER(T))
86#else // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
87#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_BOOST_132_HELPER_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */
88#endif // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
89
90#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_ISERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \
91QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::iserializer, ArchiveIn, T) \
92QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::iserializer, ArchiveIn, T)
93
94#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_OSERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \
95QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::oserializer, ArchiveOut, T) \
96QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::oserializer, ArchiveOut, T)
97
98#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_EXTENDED_TYPE_ID_HPP(T) \
99QX_DLL_EXPORT_TEMPLATE_T_P1_HPP(class, boost::serialization::extended_type_info_typeid, T) \
100QX_DLL_EXPORT_TEMPLATE_T_U_P1_HPP(class, boost::serialization::singleton, boost::serialization::extended_type_info_typeid, T)
101
102#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_VOID_CAST_PRIMITIVE_HPP(T) \
103QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::serialization::void_cast_detail::void_caster_primitive, T, QX_GET_BASE_CLASS_2(T)) \
104QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::serialization::void_cast_detail::void_caster_primitive, T, QX_GET_BASE_CLASS_2(T))
105
106#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_TYPE_INFO_IMPL_HPP(T) \
107QX_DLL_EXPORT_TEMPLATE_T_P1_HPP(struct, boost::serialization::type_info_implementation, T) \
108QX_DLL_EXPORT_TEMPLATE_T_U_P1_HPP(class, boost::serialization::singleton, boost::serialization::type_info_implementation, T)
109
110#if (BOOST_VERSION < 104100)
111#define QX_BOOST_EXPORT_SERIALIZATION_SAVE_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) \
112QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::save_pointer_type, ArchiveOut, T *) \
113QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::save_pointer_type, ArchiveOut, T *)
114#else // (BOOST_VERSION < 104100)
115#define QX_BOOST_EXPORT_SERIALIZATION_SAVE_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */
116#endif // (BOOST_VERSION < 104100)
117
118#if (BOOST_VERSION < 104100)
119#define QX_BOOST_EXPORT_SERIALIZATION_SAVE_NON_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) \
120QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::save_non_pointer_type, ArchiveOut, T) \
121QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::save_non_pointer_type, ArchiveOut, T)
122#else // (BOOST_VERSION < 104100)
123#define QX_BOOST_EXPORT_SERIALIZATION_SAVE_NON_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */
124#endif // (BOOST_VERSION < 104100)
125
126#if (BOOST_VERSION < 104100)
127#define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ENUM_TYPE_HPP(ArchiveIn, ArchiveOut, T) \
128QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::save_enum_type, ArchiveOut, T) \
129QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::save_enum_type, ArchiveOut, T)
130#else // (BOOST_VERSION < 104100)
131#define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ENUM_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */
132#endif // (BOOST_VERSION < 104100)
133
134#if (BOOST_VERSION < 104100)
135#define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ARRAY_TYPE_HPP(ArchiveIn, ArchiveOut, T) \
136QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::save_array_type, ArchiveOut, T) \
137QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::save_array_type, ArchiveOut, T)
138#else // (BOOST_VERSION < 104100)
139#define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ARRAY_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */
140#endif // (BOOST_VERSION < 104100)
141
142#if (BOOST_VERSION < 104100)
143#define QX_BOOST_EXPORT_SERIALIZATION_LOAD_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) \
144QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::load_pointer_type, ArchiveIn, T *) \
145QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::load_pointer_type, ArchiveIn, T *)
146#else // (BOOST_VERSION < 104100)
147#define QX_BOOST_EXPORT_SERIALIZATION_LOAD_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */
148#endif // (BOOST_VERSION < 104100)
149
150#if (BOOST_VERSION < 104100)
151#define QX_BOOST_EXPORT_SERIALIZATION_LOAD_NON_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) \
152QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::load_non_pointer_type, ArchiveIn, T) \
153QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::load_non_pointer_type, ArchiveIn, T)
154#else // (BOOST_VERSION < 104100)
155#define QX_BOOST_EXPORT_SERIALIZATION_LOAD_NON_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */
156#endif // (BOOST_VERSION < 104100)
157
158#if (BOOST_VERSION < 104100)
159#define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ENUM_TYPE_HPP(ArchiveIn, ArchiveOut, T) \
160QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::load_enum_type, ArchiveIn, T) \
161QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::load_enum_type, ArchiveIn, T)
162#else // (BOOST_VERSION < 104100)
163#define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ENUM_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */
164#endif // (BOOST_VERSION < 104100)
165
166#if (BOOST_VERSION < 104100)
167#define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ARRAY_TYPE_HPP(ArchiveIn, ArchiveOut, T) \
168QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::load_array_type, ArchiveIn, T) \
169QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::load_array_type, ArchiveIn, T)
170#else // (BOOST_VERSION < 104100)
171#define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ARRAY_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */
172#endif // (BOOST_VERSION < 104100)
173
174#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(ArchiveIn, ArchiveOut, T) \
175QX_BOOST_EXPORT_SERIALIZATION_IMPL_ISERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \
176QX_BOOST_EXPORT_SERIALIZATION_IMPL_OSERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \
177QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \
178QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \
179QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_BOOST_132_HELPER_HPP(ArchiveIn, ArchiveOut, T) \
180QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_BOOST_132_HELPER_HPP(ArchiveIn, ArchiveOut, T) \
181QX_BOOST_EXPORT_SERIALIZATION_SAVE_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) \
182QX_BOOST_EXPORT_SERIALIZATION_LOAD_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T)
183
184#define QX_BOOST_EXPORT_SERIALIZATION_IMPL_HPP(T) \
185QX_BOOST_EXPORT_SERIALIZATION_IMPL_EXTENDED_TYPE_ID_HPP(T) \
186/*
187QX_BOOST_EXPORT_SERIALIZATION_IMPL_VOID_CAST_PRIMITIVE_HPP(T) \
188QX_BOOST_EXPORT_SERIALIZATION_IMPL_TYPE_INFO_IMPL_HPP(T)
189*/
190
191#if _QX_SERIALIZE_POLYMORPHIC
192#define QX_BOOST_EXPORT_SERIALIZATION_POLYMORPHIC_HPP(T) \
193QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::polymorphic_iarchive, boost::archive::polymorphic_oarchive, T)
194#else // _QX_SERIALIZE_POLYMORPHIC
195#define QX_BOOST_EXPORT_SERIALIZATION_POLYMORPHIC_HPP(T) /* Nothing */
196#endif // _QX_SERIALIZE_POLYMORPHIC
197
198#if _QX_SERIALIZE_BINARY
199#define QX_BOOST_EXPORT_SERIALIZATION_BINARY_HPP(T) \
200QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::binary_iarchive, boost::archive::binary_oarchive, T)
201#else // _QX_SERIALIZE_BINARY
202#define QX_BOOST_EXPORT_SERIALIZATION_BINARY_HPP(T) /* Nothing */
203#endif // _QX_SERIALIZE_BINARY
204
205#if _QX_SERIALIZE_TEXT
206#define QX_BOOST_EXPORT_SERIALIZATION_TEXT_HPP(T) \
207QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::text_iarchive, boost::archive::text_oarchive, T)
208#else // _QX_SERIALIZE_TEXT
209#define QX_BOOST_EXPORT_SERIALIZATION_TEXT_HPP(T) /* Nothing */
210#endif // _QX_SERIALIZE_TEXT
211
212#if _QX_SERIALIZE_XML
213#define QX_BOOST_EXPORT_SERIALIZATION_XML_HPP(T) \
214QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::xml_iarchive, boost::archive::xml_oarchive, T)
215#else // _QX_SERIALIZE_XML
216#define QX_BOOST_EXPORT_SERIALIZATION_XML_HPP(T) /* Nothing */
217#endif // _QX_SERIALIZE_XML
218
219#if _QX_SERIALIZE_PORTABLE_BINARY
220#define QX_BOOST_EXPORT_SERIALIZATION_PORTABLE_BINARY_HPP(T) \
221QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(eos::portable_iarchive, eos::portable_oarchive, T)
222#else // _QX_SERIALIZE_PORTABLE_BINARY
223#define QX_BOOST_EXPORT_SERIALIZATION_PORTABLE_BINARY_HPP(T) /* Nothing */
224#endif // _QX_SERIALIZE_PORTABLE_BINARY
225
226#if _QX_SERIALIZE_WIDE_BINARY
227#define QX_BOOST_EXPORT_SERIALIZATION_WIDE_BINARY_HPP(T) \
228QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::binary_wiarchive, boost::archive::binary_woarchive, T)
229#else // _QX_SERIALIZE_WIDE_BINARY
230#define QX_BOOST_EXPORT_SERIALIZATION_WIDE_BINARY_HPP(T) /* Nothing */
231#endif // _QX_SERIALIZE_WIDE_BINARY
232
233#if _QX_SERIALIZE_WIDE_TEXT
234#define QX_BOOST_EXPORT_SERIALIZATION_WIDE_TEXT_HPP(T) \
235QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::text_wiarchive, boost::archive::text_woarchive, T)
236#else // _QX_SERIALIZE_WIDE_TEXT
237#define QX_BOOST_EXPORT_SERIALIZATION_WIDE_TEXT_HPP(T) /* Nothing */
238#endif // _QX_SERIALIZE_WIDE_TEXT
239
240#if _QX_SERIALIZE_WIDE_XML
241#define QX_BOOST_EXPORT_SERIALIZATION_WIDE_XML_HPP(T) \
242QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::xml_wiarchive, boost::archive::xml_woarchive, T)
243#else // _QX_SERIALIZE_WIDE_XML
244#define QX_BOOST_EXPORT_SERIALIZATION_WIDE_XML_HPP(T) /* Nothing */
245#endif // _QX_SERIALIZE_WIDE_XML
246
247#define QX_BOOST_EXPORT_SERIALIZATION_HPP(T) \
248QX_BOOST_EXPORT_SERIALIZATION_IMPL_HPP(T) \
249QX_BOOST_EXPORT_SERIALIZATION_POLYMORPHIC_HPP(T) \
250QX_BOOST_EXPORT_SERIALIZATION_BINARY_HPP(T) \
251QX_BOOST_EXPORT_SERIALIZATION_TEXT_HPP(T) \
252QX_BOOST_EXPORT_SERIALIZATION_XML_HPP(T) \
253QX_BOOST_EXPORT_SERIALIZATION_PORTABLE_BINARY_HPP(T) \
254QX_BOOST_EXPORT_SERIALIZATION_WIDE_BINARY_HPP(T) \
255QX_BOOST_EXPORT_SERIALIZATION_WIDE_TEXT_HPP(T) \
256QX_BOOST_EXPORT_SERIALIZATION_WIDE_XML_HPP(T)
257
258#else // _QX_USE_EXPORT_DLL_BOOST_SERIALIZATION_SINGLETON
259
260#define QX_BOOST_EXPORT_SERIALIZATION_HPP(T) /* Nothing */
261
262#endif // _QX_USE_EXPORT_DLL_BOOST_SERIALIZATION_SINGLETON
263#endif // _QX_EXPORT_DLL_MACRO_HPP_H_
264#endif // _QX_ENABLE_BOOST_SERIALIZATION
List of parameters to compile and build QxOrm library.
qx::trait::get_base_class<T>::type : retrieve base class of type T registered into QxOrm context and ...