QxOrm  1.2.3
C++ Object Relational Mapping library
QxExportDllMacroCpp.h
Go to the documentation of this file.
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_CPP_H_
00027 #define _QX_EXPORT_DLL_MACRO_CPP_H_
00028 
00029 #ifdef _MSC_VER
00030 #pragma once
00031 #endif
00032 
00033 #include <QxCommon/QxConfig.h>
00034 
00035 #include <QxSerialize/boost/QxExportDllMacroHpp.h>
00036 
00037 #if _QX_USE_EXPORT_DLL_BOOST_SERIALIZATION_SINGLETON
00038 
00039 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
00040 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::pointer_iserializer, ArchiveIn, T) \
00041 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::pointer_iserializer, ArchiveIn, T)
00042 
00043 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
00044 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::pointer_oserializer, ArchiveOut, T) \
00045 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::pointer_oserializer, ArchiveOut, T)
00046 
00047 #if _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
00048 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_BOOST_132_HELPER_CPP(ArchiveIn, ArchiveOut, T) \
00049 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::pointer_iserializer, ArchiveIn, QX_BOOST_132_SHARED_PTR_HELPER(T)) \
00050 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))
00051 #else // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
00052 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_BOOST_132_HELPER_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
00053 #endif // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
00054 
00055 #if _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
00056 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_BOOST_132_HELPER_CPP(ArchiveIn, ArchiveOut, T) \
00057 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::pointer_oserializer, ArchiveOut, QX_BOOST_132_SHARED_PTR_HELPER(T)) \
00058 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))
00059 #else // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
00060 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_BOOST_132_HELPER_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
00061 #endif // _QX_SUPPORT_BOOST_SERIALIZE_SHARED_PTR_132
00062 
00063 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_ISERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
00064 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::iserializer, ArchiveIn, T) \
00065 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::iserializer, ArchiveIn, T)
00066 
00067 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_OSERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
00068 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::archive::detail::oserializer, ArchiveOut, T) \
00069 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::oserializer, ArchiveOut, T)
00070 
00071 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_EXTENDED_TYPE_ID_CPP(T) \
00072 QX_DLL_EXPORT_TEMPLATE_T_P1_CPP(class, boost::serialization::extended_type_info_typeid, T) \
00073 QX_DLL_EXPORT_TEMPLATE_T_U_P1_CPP(class, boost::serialization::singleton, boost::serialization::extended_type_info_typeid, T)
00074 
00075 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_VOID_CAST_PRIMITIVE_CPP(T) \
00076 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(class, boost::serialization::void_cast_detail::void_caster_primitive, T, QX_GET_BASE_CLASS_2(T)) \
00077 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))
00078 
00079 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_TYPE_INFO_IMPL_CPP(T) \
00080 QX_DLL_EXPORT_TEMPLATE_T_P1_CPP(struct, boost::serialization::type_info_implementation, T) \
00081 QX_DLL_EXPORT_TEMPLATE_T_U_P1_CPP(class, boost::serialization::singleton, boost::serialization::type_info_implementation, T)
00082 
00083 #if (BOOST_VERSION < 104100)
00084 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
00085 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::save_pointer_type, ArchiveOut, T *) \
00086 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::save_pointer_type, ArchiveOut, T *)
00087 #else // (BOOST_VERSION < 104100)
00088 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
00089 #endif // (BOOST_VERSION < 104100)
00090 
00091 #if (BOOST_VERSION < 104100)
00092 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_NON_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
00093 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::save_non_pointer_type, ArchiveOut, T) \
00094 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::save_non_pointer_type, ArchiveOut, T)
00095 #else // (BOOST_VERSION < 104100)
00096 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_NON_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
00097 #endif // (BOOST_VERSION < 104100)
00098 
00099 #if (BOOST_VERSION < 104100)
00100 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ENUM_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
00101 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::save_enum_type, ArchiveOut, T) \
00102 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::save_enum_type, ArchiveOut, T)
00103 #else // (BOOST_VERSION < 104100)
00104 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ENUM_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
00105 #endif // (BOOST_VERSION < 104100)
00106 
00107 #if (BOOST_VERSION < 104100)
00108 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ARRAY_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
00109 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::save_array_type, ArchiveOut, T) \
00110 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::save_array_type, ArchiveOut, T)
00111 #else // (BOOST_VERSION < 104100)
00112 #define QX_BOOST_EXPORT_SERIALIZATION_SAVE_ARRAY_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
00113 #endif // (BOOST_VERSION < 104100)
00114 
00115 #if (BOOST_VERSION < 104100)
00116 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
00117 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::load_pointer_type, ArchiveIn, T *) \
00118 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::load_pointer_type, ArchiveIn, T *)
00119 #else // (BOOST_VERSION < 104100)
00120 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
00121 #endif // (BOOST_VERSION < 104100)
00122 
00123 #if (BOOST_VERSION < 104100)
00124 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_NON_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
00125 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::load_non_pointer_type, ArchiveIn, T) \
00126 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::load_non_pointer_type, ArchiveIn, T)
00127 #else // (BOOST_VERSION < 104100)
00128 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_NON_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
00129 #endif // (BOOST_VERSION < 104100)
00130 
00131 #if (BOOST_VERSION < 104100)
00132 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ENUM_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
00133 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::load_enum_type, ArchiveIn, T) \
00134 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::load_enum_type, ArchiveIn, T)
00135 #else // (BOOST_VERSION < 104100)
00136 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ENUM_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
00137 #endif // (BOOST_VERSION < 104100)
00138 
00139 #if (BOOST_VERSION < 104100)
00140 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ARRAY_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
00141 QX_DLL_EXPORT_TEMPLATE_T_P1_P2_CPP(struct, boost::archive::detail::load_array_type, ArchiveIn, T) \
00142 QX_DLL_EXPORT_TEMPLATE_T_U_P1_P2_CPP(class, boost::serialization::singleton, boost::archive::detail::load_array_type, ArchiveIn, T)
00143 #else // (BOOST_VERSION < 104100)
00144 #define QX_BOOST_EXPORT_SERIALIZATION_LOAD_ARRAY_TYPE_CPP(ArchiveIn, ArchiveOut, T) /* Nothing */
00145 #endif // (BOOST_VERSION < 104100)
00146 
00147 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(ArchiveIn, ArchiveOut, T) \
00148 QX_BOOST_EXPORT_SERIALIZATION_IMPL_ISERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
00149 QX_BOOST_EXPORT_SERIALIZATION_IMPL_OSERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
00150 QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
00151 QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_CPP(ArchiveIn, ArchiveOut, T) \
00152 QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_ISERIALIZER_BOOST_132_HELPER_CPP(ArchiveIn, ArchiveOut, T) \
00153 QX_BOOST_EXPORT_SERIALIZATION_IMPL_POINTER_OSERIALIZER_BOOST_132_HELPER_CPP(ArchiveIn, ArchiveOut, T) \
00154 QX_BOOST_EXPORT_SERIALIZATION_SAVE_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T) \
00155 QX_BOOST_EXPORT_SERIALIZATION_LOAD_POINTER_TYPE_CPP(ArchiveIn, ArchiveOut, T)
00156 
00157 #define QX_BOOST_EXPORT_SERIALIZATION_IMPL_CPP(T) \
00158 QX_BOOST_EXPORT_SERIALIZATION_IMPL_EXTENDED_TYPE_ID_CPP(T) \
00159 /*
00160 QX_BOOST_EXPORT_SERIALIZATION_IMPL_VOID_CAST_PRIMITIVE_CPP(T) \
00161 QX_BOOST_EXPORT_SERIALIZATION_IMPL_TYPE_INFO_IMPL_CPP(T)
00162 */
00163 
00164 #if _QX_SERIALIZE_POLYMORPHIC
00165 #define QX_BOOST_EXPORT_SERIALIZATION_POLYMORPHIC_CPP(T) \
00166 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::polymorphic_iarchive, boost::archive::polymorphic_oarchive, T)
00167 #else // _QX_SERIALIZE_POLYMORPHIC
00168 #define QX_BOOST_EXPORT_SERIALIZATION_POLYMORPHIC_CPP(T) /* Nothing */
00169 #endif // _QX_SERIALIZE_POLYMORPHIC
00170 
00171 #if _QX_SERIALIZE_BINARY
00172 #define QX_BOOST_EXPORT_SERIALIZATION_BINARY_CPP(T) \
00173 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::binary_iarchive, boost::archive::binary_oarchive, T)
00174 #else // _QX_SERIALIZE_BINARY
00175 #define QX_BOOST_EXPORT_SERIALIZATION_BINARY_CPP(T) /* Nothing */
00176 #endif // _QX_SERIALIZE_BINARY
00177 
00178 #if _QX_SERIALIZE_TEXT
00179 #define QX_BOOST_EXPORT_SERIALIZATION_TEXT_CPP(T) \
00180 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::text_iarchive, boost::archive::text_oarchive, T)
00181 #else // _QX_SERIALIZE_TEXT
00182 #define QX_BOOST_EXPORT_SERIALIZATION_TEXT_CPP(T) /* Nothing */
00183 #endif // _QX_SERIALIZE_TEXT
00184 
00185 #if _QX_SERIALIZE_XML
00186 #define QX_BOOST_EXPORT_SERIALIZATION_XML_CPP(T) \
00187 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::xml_iarchive, boost::archive::xml_oarchive, T)
00188 #else // _QX_SERIALIZE_XML
00189 #define QX_BOOST_EXPORT_SERIALIZATION_XML_CPP(T) /* Nothing */
00190 #endif // _QX_SERIALIZE_XML
00191 
00192 #if _QX_SERIALIZE_PORTABLE_BINARY
00193 #define QX_BOOST_EXPORT_SERIALIZATION_PORTABLE_BINARY_CPP(T) \
00194 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(eos::portable_iarchive, eos::portable_oarchive, T)
00195 #else // _QX_SERIALIZE_PORTABLE_BINARY
00196 #define QX_BOOST_EXPORT_SERIALIZATION_PORTABLE_BINARY_CPP(T) /* Nothing */
00197 #endif // _QX_SERIALIZE_PORTABLE_BINARY
00198 
00199 #if _QX_SERIALIZE_WIDE_BINARY
00200 #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_BINARY_CPP(T) \
00201 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::binary_wiarchive, boost::archive::binary_woarchive, T)
00202 #else // _QX_SERIALIZE_WIDE_BINARY
00203 #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_BINARY_CPP(T) /* Nothing */
00204 #endif // _QX_SERIALIZE_WIDE_BINARY
00205 
00206 #if _QX_SERIALIZE_WIDE_TEXT
00207 #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_TEXT_CPP(T) \
00208 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::text_wiarchive, boost::archive::text_woarchive, T)
00209 #else // _QX_SERIALIZE_WIDE_TEXT
00210 #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_TEXT_CPP(T) /* Nothing */
00211 #endif // _QX_SERIALIZE_WIDE_TEXT
00212 
00213 #if _QX_SERIALIZE_WIDE_XML
00214 #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_XML_CPP(T) \
00215 QX_BOOST_EXPORT_SERIALIZATION_IMPL_WITH_ARCHIVE_CPP(boost::archive::xml_wiarchive, boost::archive::xml_woarchive, T)
00216 #else // _QX_SERIALIZE_WIDE_XML
00217 #define QX_BOOST_EXPORT_SERIALIZATION_WIDE_XML_CPP(T) /* Nothing */
00218 #endif // _QX_SERIALIZE_WIDE_XML
00219 
00220 #define QX_BOOST_EXPORT_SERIALIZATION_CPP(T) \
00221 QX_BOOST_EXPORT_SERIALIZATION_IMPL_CPP(T) \
00222 QX_BOOST_EXPORT_SERIALIZATION_POLYMORPHIC_CPP(T) \
00223 QX_BOOST_EXPORT_SERIALIZATION_BINARY_CPP(T) \
00224 QX_BOOST_EXPORT_SERIALIZATION_TEXT_CPP(T) \
00225 QX_BOOST_EXPORT_SERIALIZATION_XML_CPP(T) \
00226 QX_BOOST_EXPORT_SERIALIZATION_PORTABLE_BINARY_CPP(T) \
00227 QX_BOOST_EXPORT_SERIALIZATION_WIDE_BINARY_CPP(T) \
00228 QX_BOOST_EXPORT_SERIALIZATION_WIDE_TEXT_CPP(T) \
00229 QX_BOOST_EXPORT_SERIALIZATION_WIDE_XML_CPP(T)
00230 
00231 #else // _QX_USE_EXPORT_DLL_BOOST_SERIALIZATION_SINGLETON
00232 
00233 #define QX_BOOST_EXPORT_SERIALIZATION_CPP(T) /* Nothing */
00234 
00235 #endif // _QX_USE_EXPORT_DLL_BOOST_SERIALIZATION_SINGLETON
00236 #endif // _QX_EXPORT_DLL_MACRO_CPP_H_