Go to the documentation of this file.
79 #include <boost/version.hpp>
86 #if BOOST_VERSION < 103600
88 #ifndef CHASTE_SERIALIZATION_CPP
89 #include <boost/serialization/export.hpp>
90 #endif // CHASTE_SERIALIZATION_CPP
92 #elif BOOST_VERSION < 104100
94 #ifdef CHASTE_SERIALIZATION_CPP
96 #include <boost/serialization/export.hpp>
97 #endif // CHASTE_SERIALIZATION_CPP
101 #include <boost/serialization/extended_type_info.hpp>
102 #include <boost/serialization/export.hpp>
103 #ifdef CHASTE_SERIALIZATION_CPP
105 #endif // CHASTE_SERIALIZATION_CPP
111 #if BOOST_VERSION >= 104100 && defined(CHASTE_SERIALIZATION_CPP)
116 #undef CHASTE_CLASS_EXPORT_TEMPLATED
122 #define CHASTE_CLASS_EXPORT_TEMPLATED(T, S) \
123 BOOST_CLASS_EXPORT_IMPLEMENT(T)
125 #undef CHASTE_CLASS_EXPORT_INTERNAL
130 #define CHASTE_CLASS_EXPORT_INTERNAL(T) \
131 BOOST_CLASS_EXPORT_IMPLEMENT(T)
133 #endif // BOOST_VERSION >= 104100 && defined(CHASTE_SERIALIZATION_CPP)
137 #ifndef SERIALIZATIONEXPORTWRAPPER_HPP_
139 #define SERIALIZATIONEXPORTWRAPPER_HPP_
145 #include <boost/preprocessor/cat.hpp>
146 #include <boost/preprocessor/stringize.hpp>
149 #if BOOST_VERSION >= 104100
157 #define CHASTE_CLASS_EXPORT_TEMPLATED(T, S) \
158 BOOST_CLASS_EXPORT_KEY(T)
164 #define CHASTE_CLASS_EXPORT_INTERNAL(T) \
165 BOOST_CLASS_EXPORT_KEY(T)
167 #else // BOOST_VERSION < 103600 || (BOOST_VERSION >= 103800 && BOOST_VERSION < 104100)
175 #define CHASTE_CLASS_EXPORT_TEMPLATED(T, S) \
176 BOOST_CLASS_EXPORT(T)
182 #define CHASTE_CLASS_EXPORT_INTERNAL(T) \
183 BOOST_CLASS_EXPORT(T)
185 #endif // BOOST_VERSION >= 103600 && BOOST_VERSION < 103800
194 template<
class T>
struct pack<void (T)> {
203 #define CHASTE_EXPORT_KEY_1(CLASS, P1) \
204 BOOST_PP_CAT(CLASS, P1)
212 #define CHASTE_EXPORT_KEY_2(CLASS, P1, P2) \
213 BOOST_PP_CAT(BOOST_PP_CAT(CLASS, P1), P2)
222 #define CHASTE_EXPORT_KEY_3(CLASS, P1, P2, P3) \
223 BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(CLASS, P1), P2), P3)
230 #define CHASTE_PACK_1(CLASS, P1) pack<void (CLASS< P1 >)>::type
238 #define CHASTE_PACK_2(CLASS, P1, P2) pack<void (CLASS< P1,P2 >)>::type
247 #define CHASTE_PACK_3(CLASS, P1, P2, P3) pack<void (CLASS< P1,P2,P3 >)>::type
250 #endif // SERIALIZATIONEXPORTWRAPPER_HPP_
256 #ifdef EXPORT_TEMPLATE_CLASS3_INTERNAL
258 #undef EXPORT_TEMPLATE_CLASS3_INTERNAL
259 #undef EXPORT_TEMPLATE_CLASS2_INTERNAL
260 #undef EXPORT_TEMPLATE_CLASS1_INTERNAL
261 #undef EXPORT_TEMPLATE_CLASS_ALL_DIMS_INTERNAL
262 #undef EXPORT_TEMPLATE_CLASS_SAME_DIMS_INTERNAL
263 #endif // EXPORT_TEMPLATE_CLASS3_INTERNAL
275 #define EXPORT_TEMPLATE_CLASS3_INTERNAL(CLASS, E, S, P) \
276 CHASTE_CLASS_EXPORT_TEMPLATED( CHASTE_PACK_3(CLASS, E, S, P), CHASTE_EXPORT_KEY_3(CLASS, E, S, P) )
285 #define EXPORT_TEMPLATE_CLASS2_INTERNAL(CLASS, E, S) \
286 CHASTE_CLASS_EXPORT_TEMPLATED( CHASTE_PACK_2(CLASS, E, S), CHASTE_EXPORT_KEY_2(CLASS, E, S) )
294 #define EXPORT_TEMPLATE_CLASS1_INTERNAL(CLASS, D) \
295 CHASTE_CLASS_EXPORT_TEMPLATED( CHASTE_PACK_1(CLASS, D), CHASTE_EXPORT_KEY_1(CLASS, D) )
303 #define EXPORT_TEMPLATE_CLASS_ALL_DIMS_INTERNAL(CLASS) \
304 EXPORT_TEMPLATE_CLASS2(CLASS, 1, 1) \
305 EXPORT_TEMPLATE_CLASS2(CLASS, 1, 2) \
306 EXPORT_TEMPLATE_CLASS2(CLASS, 1, 3) \
307 EXPORT_TEMPLATE_CLASS2(CLASS, 2, 2) \
308 EXPORT_TEMPLATE_CLASS2(CLASS, 2, 3) \
309 EXPORT_TEMPLATE_CLASS2(CLASS, 3, 3)
316 #define EXPORT_TEMPLATE_CLASS_SAME_DIMS_INTERNAL(CLASS) \
317 EXPORT_TEMPLATE_CLASS1(CLASS, 1) \
318 EXPORT_TEMPLATE_CLASS1(CLASS, 2) \
319 EXPORT_TEMPLATE_CLASS1(CLASS, 3)
325 #if !defined(CHASTE_CLASS_EXPORT) || defined(CHASTE_SERIALIZATION_CPP)
326 #ifdef CHASTE_SERIALIZATION_CPP
328 #undef CHASTE_CLASS_EXPORT
329 #undef EXPORT_TEMPLATE_CLASS_SAME_DIMS
330 #undef EXPORT_TEMPLATE_CLASS_ALL_DIMS
331 #undef EXPORT_TEMPLATE_CLASS1
332 #undef EXPORT_TEMPLATE_CLASS2
333 #undef EXPORT_TEMPLATE_CLASS3
334 #endif // CHASTE_SERIALIZATION_CPP
336 #if (BOOST_VERSION < 103600 && ! defined(CHASTE_SERIALIZATION_CPP)) || \
337 (BOOST_VERSION >= 103600 && defined(CHASTE_SERIALIZATION_CPP)) || \
338 (BOOST_VERSION >= 104100)
347 #define CHASTE_CLASS_EXPORT(T) CHASTE_CLASS_EXPORT_INTERNAL(T)
352 #define EXPORT_TEMPLATE_CLASS_SAME_DIMS(CLASS) EXPORT_TEMPLATE_CLASS_SAME_DIMS_INTERNAL(CLASS)
358 #define EXPORT_TEMPLATE_CLASS_ALL_DIMS(CLASS) EXPORT_TEMPLATE_CLASS_ALL_DIMS_INTERNAL(CLASS)
364 #define EXPORT_TEMPLATE_CLASS1(CLASS, D) EXPORT_TEMPLATE_CLASS1_INTERNAL(CLASS, D)
371 #define EXPORT_TEMPLATE_CLASS2(CLASS, E, S) EXPORT_TEMPLATE_CLASS2_INTERNAL(CLASS, E, S)
379 #define EXPORT_TEMPLATE_CLASS3(CLASS, E, S, P) EXPORT_TEMPLATE_CLASS3_INTERNAL(CLASS, E, S, P)
387 #define CHASTE_CLASS_EXPORT(T)
392 #define EXPORT_TEMPLATE_CLASS_SAME_DIMS(CLASS)
397 #define EXPORT_TEMPLATE_CLASS_ALL_DIMS(CLASS)
403 #define EXPORT_TEMPLATE_CLASS1(CLASS, D)
410 #define EXPORT_TEMPLATE_CLASS2(CLASS, E, S)
418 #define EXPORT_TEMPLATE_CLASS3(CLASS, E, S, P)
421 #endif // !defined(CHASTE_CLASS_EXPORT) || defined(CHASTE_SERIALIZATION_CPP)