![]() |
QxOrm 1.1.9
C++ Object Relational Mapping library
|
00001 /**************************************************************************** 00002 ** 00003 ** http://www.qxorm.com/ 00004 ** http://sourceforge.net/projects/qxorm/ 00005 ** Original file by Lionel Marty 00006 ** 00007 ** This file is part of the QxOrm library 00008 ** 00009 ** This software is provided 'as-is', without any express or implied 00010 ** warranty. In no event will the authors be held liable for any 00011 ** damages arising from the use of this software. 00012 ** 00013 ** GNU Lesser General Public License Usage 00014 ** This file must be used under the terms of the GNU Lesser 00015 ** General Public License version 2.1 as published by the Free Software 00016 ** Foundation and appearing in the file 'license.lgpl.txt' included in the 00017 ** packaging of this file. Please review the following information to 00018 ** ensure the GNU Lesser General Public License version 2.1 requirements 00019 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 00020 ** 00021 ** If you have questions regarding the use of this file, please contact : 00022 ** contact@qxorm.com 00023 ** 00024 ****************************************************************************/ 00025 00026 #ifndef _QX_EXPORT_DLL_MACRO_HPP_H_ 00027 #define _QX_EXPORT_DLL_MACRO_HPP_H_ 00028 00029 #ifdef _MSC_VER 00030 #pragma once 00031 #endif 00032 00033 #include <QxCommon/QxConfig.h> 00034 00035 #include <QxSerialize/boost/QxSerialize_shared_ptr.h> 00036 00037 #include <QxTraits/get_base_class.h> 00038 00039 #if _QX_USE_EXPORT_DLL_BOOST_SERIALIZATION_SINGLETON 00040 00041 #if _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132 00042 #if (BOOST_VERSION >= 104100) 00043 #define QX_BOOST_132_SHARED_PTR_HELPER(T) \ 00044 boost_132::detail::sp_counted_base_impl< T *, boost::serialization::null_deleter > 00045 #else // (BOOST_VERSION >= 104100) 00046 #define QX_BOOST_132_SHARED_PTR_HELPER(T) \ 00047 boost_132::detail::sp_counted_base_impl< T *, boost_132::serialization::detail::null_deleter > 00048 #endif // (BOOST_VERSION >= 104100) 00049 #endif // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132 00050 00051 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \ 00052 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::pointer_iserializer, ArchiveIn, T) \ 00053 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::pointer_iserializer, ArchiveIn, T) 00054 00055 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \ 00056 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::pointer_oserializer, ArchiveOut, T) \ 00057 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::pointer_oserializer, ArchiveOut, T) 00058 00059 #if _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132 00060 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_BOOST_132_HELPER_HPP(ArchiveIn, ArchiveOut, T) \ 00061 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::pointer_iserializer, ArchiveIn, QX_BOOST_132_SHARED_PTR_HELPER(T)) \ 00062 QX_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)) 00063 #else // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132 00064 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_BOOST_132_HELPER_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */ 00065 #endif // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132 00066 00067 #if _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132 00068 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_BOOST_132_HELPER_HPP(ArchiveIn, ArchiveOut, T) \ 00069 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::pointer_oserializer, ArchiveOut, QX_BOOST_132_SHARED_PTR_HELPER(T)) \ 00070 QX_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)) 00071 #else // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132 00072 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_BOOST_132_HELPER_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */ 00073 #endif // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132 00074 00075 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_ISERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \ 00076 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::iserializer, ArchiveIn, T) \ 00077 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::iserializer, ArchiveIn, T) 00078 00079 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_OSERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \ 00080 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::archive::detail::oserializer, ArchiveOut, T) \ 00081 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::oserializer, ArchiveOut, T) 00082 00083 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_EXTENDED_TYPE_ID_HPP(T) \ 00084 QX_DLL_EXPORT_TEMPLATE_T_P1_HPP(class, boost::serialization::extended_type_info_typeid, T) \ 00085 QX_DLL_EXPORT_TEMPLATE_T_U_P1_HPP(class, boost::serialization::singleton, boost::serialization::extended_type_info_typeid, T) 00086 00087 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_VOID_CAST_PRIMITIVE_HPP(T) \ 00088 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(class, boost::serialization::void_cast_detail::void_caster_primitive, T, QX_GET_BASE_CLASS_2(T)) \ 00089 QX_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)) 00090 00091 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_TYPE_INFO_IMPL_HPP(T) \ 00092 QX_DLL_EXPORT_TEMPLATE_T_P1_HPP(struct, boost::serialization::type_info_implementation, T) \ 00093 QX_DLL_EXPORT_TEMPLATE_T_U_P1_HPP(class, boost::serialization::singleton, boost::serialization::type_info_implementation, T) 00094 00095 #if (BOOST_VERSION < 104100) 00096 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) \ 00097 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::save_pointer_type, ArchiveOut, T *) \ 00098 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::save_pointer_type, ArchiveOut, T *) 00099 #else // (BOOST_VERSION < 104100) 00100 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */ 00101 #endif // (BOOST_VERSION < 104100) 00102 00103 #if (BOOST_VERSION < 104100) 00104 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_NON_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) \ 00105 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::save_non_pointer_type, ArchiveOut, T) \ 00106 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::save_non_pointer_type, ArchiveOut, T) 00107 #else // (BOOST_VERSION < 104100) 00108 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_NON_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */ 00109 #endif // (BOOST_VERSION < 104100) 00110 00111 #if (BOOST_VERSION < 104100) 00112 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ENUM_TYPE_HPP(ArchiveIn, ArchiveOut, T) \ 00113 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::save_enum_type, ArchiveOut, T) \ 00114 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::save_enum_type, ArchiveOut, T) 00115 #else // (BOOST_VERSION < 104100) 00116 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ENUM_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */ 00117 #endif // (BOOST_VERSION < 104100) 00118 00119 #if (BOOST_VERSION < 104100) 00120 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ARRAY_TYPE_HPP(ArchiveIn, ArchiveOut, T) \ 00121 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::save_array_type, ArchiveOut, T) \ 00122 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::save_array_type, ArchiveOut, T) 00123 #else // (BOOST_VERSION < 104100) 00124 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ARRAY_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */ 00125 #endif // (BOOST_VERSION < 104100) 00126 00127 #if (BOOST_VERSION < 104100) 00128 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) \ 00129 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::load_pointer_type, ArchiveIn, T *) \ 00130 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::load_pointer_type, ArchiveIn, T *) 00131 #else // (BOOST_VERSION < 104100) 00132 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */ 00133 #endif // (BOOST_VERSION < 104100) 00134 00135 #if (BOOST_VERSION < 104100) 00136 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_NON_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) \ 00137 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::load_non_pointer_type, ArchiveIn, T) \ 00138 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::load_non_pointer_type, ArchiveIn, T) 00139 #else // (BOOST_VERSION < 104100) 00140 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_NON_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */ 00141 #endif // (BOOST_VERSION < 104100) 00142 00143 #if (BOOST_VERSION < 104100) 00144 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ENUM_TYPE_HPP(ArchiveIn, ArchiveOut, T) \ 00145 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::load_enum_type, ArchiveIn, T) \ 00146 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::load_enum_type, ArchiveIn, T) 00147 #else // (BOOST_VERSION < 104100) 00148 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ENUM_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */ 00149 #endif // (BOOST_VERSION < 104100) 00150 00151 #if (BOOST_VERSION < 104100) 00152 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ARRAY_TYPE_HPP(ArchiveIn, ArchiveOut, T) \ 00153 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_HPP(struct, boost::archive::detail::load_array_type, ArchiveIn, T) \ 00154 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_HPP(class, boost::serialization::singleton, boost::archive::detail::load_array_type, ArchiveIn, T) 00155 #else // (BOOST_VERSION < 104100) 00156 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ARRAY_TYPE_HPP(ArchiveIn, ArchiveOut, T) /* Nothing */ 00157 #endif // (BOOST_VERSION < 104100) 00158 00159 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(ArchiveIn, ArchiveOut, T) \ 00160 QX_BOOST_EXPORT_SERIALIZATION_IMPL_ISERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \ 00161 QX_BOOST_EXPORT_SERIALIZATION_IMPL_OSERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \ 00162 QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \ 00163 QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_HPP(ArchiveIn, ArchiveOut, T) \ 00164 QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_BOOST_132_HELPER_HPP(ArchiveIn, ArchiveOut, T) \ 00165 QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_BOOST_132_HELPER_HPP(ArchiveIn, ArchiveOut, T) \ 00166 QX_BOOST_EXPORT_SERIALIZATION_SAVE_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) \ 00167 QX_BOOST_EXPORT_SERIALIZATION_LOAD_POINTER_TYPE_HPP(ArchiveIn, ArchiveOut, T) 00168 00169 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_HPP(T) \ 00170 QX_BOOST_EXPORT_SERIALIZATION_IMPL_EXTENDED_TYPE_ID_HPP(T) \ 00171 /* 00172 QX_BOOST_EXPORT_SERIALIZATION_IMPL_VOID_CAST_PRIMITIVE_HPP(T) \ 00173 QX_BOOST_EXPORT_SERIALIZATION_IMPL_TYPE_INFO_IMPL_HPP(T) 00174 */ 00175 00176 #if _QX_SERIALIZE_POLYMORPHIC 00177 #define QX_BOOST_EXPORT_SERIALIZATION_POLYMORPHIC_HPP(T) \ 00178 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::polymorphic_iarchive, boost::archive::polymorphic_oarchive, T) 00179 #else // _QX_SERIALIZE_POLYMORPHIC 00180 #define QX_BOOST_EXPORT_SERIALIZATION_POLYMORPHIC_HPP(T) /* Nothing */ 00181 #endif // _QX_SERIALIZE_POLYMORPHIC 00182 00183 #if _QX_SERIALIZE_BINARY 00184 #define QX_BOOST_EXPORT_SERIALIZATION_BINARY_HPP(T) \ 00185 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::binary_iarchive, boost::archive::binary_oarchive, T) 00186 #else // _QX_SERIALIZE_BINARY 00187 #define QX_BOOST_EXPORT_SERIALIZATION_BINARY_HPP(T) /* Nothing */ 00188 #endif // _QX_SERIALIZE_BINARY 00189 00190 #if _QX_SERIALIZE_TEXT 00191 #define QX_BOOST_EXPORT_SERIALIZATION_TEXT_HPP(T) \ 00192 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::text_iarchive, boost::archive::text_oarchive, T) 00193 #else // _QX_SERIALIZE_TEXT 00194 #define QX_BOOST_EXPORT_SERIALIZATION_TEXT_HPP(T) /* Nothing */ 00195 #endif // _QX_SERIALIZE_TEXT 00196 00197 #if _QX_SERIALIZE_XML 00198 #define QX_BOOST_EXPORT_SERIALIZATION_XML_HPP(T) \ 00199 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::xml_iarchive, boost::archive::xml_oarchive, T) 00200 #else // _QX_SERIALIZE_XML 00201 #define QX_BOOST_EXPORT_SERIALIZATION_XML_HPP(T) /* Nothing */ 00202 #endif // _QX_SERIALIZE_XML 00203 00204 #if _QX_SERIALIZE_PORTABLE_BINARY 00205 #define QX_BOOST_EXPORT_SERIALIZATION_PORTABLE_BINARY_HPP(T) \ 00206 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(eos::portable_iarchive, eos::portable_oarchive, T) 00207 #else // _QX_SERIALIZE_PORTABLE_BINARY 00208 #define QX_BOOST_EXPORT_SERIALIZATION_PORTABLE_BINARY_HPP(T) /* Nothing */ 00209 #endif // _QX_SERIALIZE_PORTABLE_BINARY 00210 00211 #if _QX_SERIALIZE_WIDE_BINARY 00212 #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_BINARY_HPP(T) \ 00213 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::binary_wiarchive, boost::archive::binary_woarchive, T) 00214 #else // _QX_SERIALIZE_WIDE_BINARY 00215 #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_BINARY_HPP(T) /* Nothing */ 00216 #endif // _QX_SERIALIZE_WIDE_BINARY 00217 00218 #if _QX_SERIALIZE_WIDE_TEXT 00219 #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_TEXT_HPP(T) \ 00220 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::text_wiarchive, boost::archive::text_woarchive, T) 00221 #else // _QX_SERIALIZE_WIDE_TEXT 00222 #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_TEXT_HPP(T) /* Nothing */ 00223 #endif // _QX_SERIALIZE_WIDE_TEXT 00224 00225 #if _QX_SERIALIZE_WIDE_XML 00226 #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_XML_HPP(T) \ 00227 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_HPP(boost::archive::xml_wiarchive, boost::archive::xml_woarchive, T) 00228 #else // _QX_SERIALIZE_WIDE_XML 00229 #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_XML_HPP(T) /* Nothing */ 00230 #endif // _QX_SERIALIZE_WIDE_XML 00231 00232 #define QX_BOOST_EXPORT_SERIALIZATION_HPP(T) \ 00233 QX_BOOST_EXPORT_SERIALIZATION_IMPL_HPP(T) \ 00234 QX_BOOST_EXPORT_SERIALIZATION_POLYMORPHIC_HPP(T) \ 00235 QX_BOOST_EXPORT_SERIALIZATION_BINARY_HPP(T) \ 00236 QX_BOOST_EXPORT_SERIALIZATION_TEXT_HPP(T) \ 00237 QX_BOOST_EXPORT_SERIALIZATION_XML_HPP(T) \ 00238 QX_BOOST_EXPORT_SERIALIZATION_PORTABLE_BINARY_HPP(T) \ 00239 QX_BOOST_EXPORT_SERIALIZATION_WIDE_BINARY_HPP(T) \ 00240 QX_BOOST_EXPORT_SERIALIZATION_WIDE_TEXT_HPP(T) \ 00241 QX_BOOST_EXPORT_SERIALIZATION_WIDE_XML_HPP(T) 00242 00243 #else // _QX_USE_EXPORT_DLL_BOOST_SERIALIZATION_SINGLETON 00244 00245 #define QX_BOOST_EXPORT_SERIALIZATION_HPP(T) /* Nothing */ 00246 00247 #endif // _QX_USE_EXPORT_DLL_BOOST_SERIALIZATION_SINGLETON 00248 #endif // _QX_EXPORT_DLL_MACRO_HPP_H_