QxOrm 1.1.6
C++ Object Relational Mapping library
QxExportDllMacroHpp.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_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_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines