![]() |
QxOrm
1.2.3
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_SERIALIZE_INCLUDE_H_ 00027 #define _QX_SERIALIZE_INCLUDE_H_ 00028 00029 #ifdef _MSC_VER 00030 #pragma once 00031 #endif 00032 00033 #include <QxCommon/QxConfig.h> 00034 00035 #ifdef _MSC_VER 00036 #pragma warning(push) 00037 #pragma warning(disable:4189) 00038 #pragma warning(disable:4996) 00039 #endif // _MSC_VER 00040 00041 #if _QX_SERIALIZE_POLYMORPHIC 00042 #include <boost/archive/polymorphic_iarchive.hpp> 00043 #include <boost/archive/polymorphic_oarchive.hpp> 00044 #include <boost/archive/polymorphic_binary_iarchive.hpp> 00045 #include <boost/archive/polymorphic_binary_oarchive.hpp> 00046 #include <boost/archive/polymorphic_text_iarchive.hpp> 00047 #include <boost/archive/polymorphic_text_oarchive.hpp> 00048 #include <boost/archive/polymorphic_xml_iarchive.hpp> 00049 #include <boost/archive/polymorphic_xml_oarchive.hpp> 00050 #endif // _QX_SERIALIZE_POLYMORPHIC 00051 00052 #if _QX_SERIALIZE_BINARY 00053 #include <boost/archive/binary_iarchive.hpp> 00054 #include <boost/archive/binary_oarchive.hpp> 00055 #endif // _QX_SERIALIZE_BINARY 00056 00057 #if _QX_SERIALIZE_TEXT 00058 #include <boost/archive/text_iarchive.hpp> 00059 #include <boost/archive/text_oarchive.hpp> 00060 #endif // _QX_SERIALIZE_TEXT 00061 00062 #if _QX_SERIALIZE_XML 00063 #include <boost/archive/xml_iarchive.hpp> 00064 #include <boost/archive/xml_oarchive.hpp> 00065 #endif // _QX_SERIALIZE_XML 00066 00067 #if _QX_SERIALIZE_PORTABLE_BINARY 00068 #include <QxSerialize/boost/portable_binary/portable_iarchive.hpp> 00069 #include <QxSerialize/boost/portable_binary/portable_oarchive.hpp> 00070 #endif // _QX_SERIALIZE_PORTABLE_BINARY 00071 00072 #if _QX_SERIALIZE_WIDE_BINARY 00073 #include <boost/archive/binary_wiarchive.hpp> 00074 #include <boost/archive/binary_woarchive.hpp> 00075 #endif // _QX_SERIALIZE_WIDE_BINARY 00076 00077 #if _QX_SERIALIZE_WIDE_TEXT 00078 #include <boost/archive/text_wiarchive.hpp> 00079 #include <boost/archive/text_woarchive.hpp> 00080 #endif // _QX_SERIALIZE_WIDE_TEXT 00081 00082 #if _QX_SERIALIZE_WIDE_XML 00083 #include <boost/archive/xml_wiarchive.hpp> 00084 #include <boost/archive/xml_woarchive.hpp> 00085 #endif // _QX_SERIALIZE_WIDE_XML 00086 00087 #ifndef _QX_BOOST_ARCHIVE_SERIALIZER_IMPL_DEFINED_ 00088 #define _QX_BOOST_ARCHIVE_SERIALIZER_IMPL_DEFINED_ 00089 #if (BOOST_VERSION > 103800) 00090 #include <boost/archive/impl/archive_serializer_map.ipp> 00091 #else // (BOOST_VERSION > 103800) 00092 #include <boost/archive/impl/archive_pointer_oserializer.ipp> 00093 #include <boost/archive/impl/archive_pointer_iserializer.ipp> 00094 #endif // (BOOST_VERSION > 103800) 00095 #include <boost/archive/impl/basic_binary_oprimitive.ipp> 00096 #include <boost/archive/impl/basic_binary_iprimitive.ipp> 00097 #include <boost/archive/impl/basic_binary_oarchive.ipp> 00098 #include <boost/archive/impl/basic_binary_iarchive.ipp> 00099 #if _QX_SERIALIZE_TEXT 00100 #include <boost/archive/impl/basic_text_oprimitive.ipp> 00101 #include <boost/archive/impl/basic_text_iprimitive.ipp> 00102 #include <boost/archive/impl/basic_text_oarchive.ipp> 00103 #include <boost/archive/impl/basic_text_iarchive.ipp> 00104 #endif // _QX_SERIALIZE_TEXT 00105 #if (BOOST_VERSION > 103800) 00106 #else // (BOOST_VERSION > 103800) 00107 #if _QX_INCLUDE_BOOST_SERIALIZE_ARCHIVE_IMPL_IPP 00108 #if _QX_SERIALIZE_TEXT 00109 #include <boost/archive/impl/text_oarchive_impl.ipp> 00110 #include <boost/archive/impl/text_iarchive_impl.ipp> 00111 #endif // _QX_SERIALIZE_TEXT 00112 #if _QX_SERIALIZE_XML 00113 #include <boost/archive/impl/xml_oarchive_impl.ipp> 00114 #include <boost/archive/impl/xml_iarchive_impl.ipp> 00115 #endif // _QX_SERIALIZE_XML 00116 #if _QX_SERIALIZE_WIDE_TEXT 00117 #include <boost/archive/impl/text_woarchive_impl.ipp> 00118 #include <boost/archive/impl/text_wiarchive_impl.ipp> 00119 #endif // _QX_SERIALIZE_WIDE_TEXT 00120 #if _QX_SERIALIZE_WIDE_XML 00121 #include <boost/archive/impl/xml_woarchive_impl.ipp> 00122 #include <boost/archive/impl/xml_wiarchive_impl.ipp> 00123 #endif // _QX_SERIALIZE_WIDE_XML 00124 #endif // _QX_INCLUDE_BOOST_SERIALIZE_ARCHIVE_IMPL_IPP 00125 #endif // (BOOST_VERSION > 103800) 00126 #endif // _QX_BOOST_ARCHIVE_SERIALIZER_IMPL_DEFINED_ 00127 00128 #ifdef _MSC_VER 00129 #pragma warning(pop) 00130 #endif // _MSC_VER 00131 00132 #ifndef QX_DEFAULT_ARCHIVE_INPUT // && QX_DEFAULT_ARCHIVE_OUTPUT 00133 #if _QX_SERIALIZE_POLYMORPHIC 00134 #define QX_DEFAULT_ARCHIVE_INPUT boost::archive::polymorphic_binary_iarchive 00135 #define QX_DEFAULT_ARCHIVE_OUTPUT boost::archive::polymorphic_binary_oarchive 00136 #elif _QX_SERIALIZE_BINARY 00137 #define QX_DEFAULT_ARCHIVE_INPUT boost::archive::binary_iarchive 00138 #define QX_DEFAULT_ARCHIVE_OUTPUT boost::archive::binary_oarchive 00139 #elif _QX_SERIALIZE_TEXT 00140 #define QX_DEFAULT_ARCHIVE_INPUT boost::archive::text_iarchive 00141 #define QX_DEFAULT_ARCHIVE_OUTPUT boost::archive::text_oarchive 00142 #elif _QX_SERIALIZE_XML 00143 #define QX_DEFAULT_ARCHIVE_INPUT boost::archive::xml_iarchive 00144 #define QX_DEFAULT_ARCHIVE_OUTPUT boost::archive::xml_oarchive 00145 #elif _QX_SERIALIZE_PORTABLE_BINARY 00146 #define QX_DEFAULT_ARCHIVE_INPUT eos::portable_iarchive 00147 #define QX_DEFAULT_ARCHIVE_OUTPUT eos::portable_oarchive 00148 #elif _QX_SERIALIZE_WIDE_BINARY 00149 #define QX_DEFAULT_ARCHIVE_INPUT boost::archive::binary_wiarchive 00150 #define QX_DEFAULT_ARCHIVE_OUTPUT boost::archive::binary_woarchive 00151 #elif _QX_SERIALIZE_WIDE_TEXT 00152 #define QX_DEFAULT_ARCHIVE_INPUT boost::archive::text_wiarchive 00153 #define QX_DEFAULT_ARCHIVE_OUTPUT boost::archive::text_woarchive 00154 #elif _QX_SERIALIZE_WIDE_XML 00155 #define QX_DEFAULT_ARCHIVE_INPUT boost::archive::xml_wiarchive 00156 #define QX_DEFAULT_ARCHIVE_OUTPUT boost::archive::xml_woarchive 00157 #endif // _QX_SERIALIZE_BINARY 00158 #endif // QX_DEFAULT_ARCHIVE_INPUT 00159 00160 #ifndef QX_CLONE_STRING_STREAM // && QX_CLONE_BINARY_OUTPUT_ARCHIVE && QX_CLONE_BINARY_INPUT_ARCHIVE 00161 #if _QX_SERIALIZE_POLYMORPHIC 00162 #define QX_CLONE_STRING_STREAM std::stringstream 00163 #define QX_CLONE_BINARY_OUTPUT_ARCHIVE boost::archive::polymorphic_binary_oarchive 00164 #define QX_CLONE_BINARY_INPUT_ARCHIVE boost::archive::polymorphic_binary_iarchive 00165 #elif _QX_SERIALIZE_WIDE_BINARY 00166 #define QX_CLONE_STRING_STREAM std::wstringstream 00167 #define QX_CLONE_BINARY_OUTPUT_ARCHIVE boost::archive::binary_woarchive 00168 #define QX_CLONE_BINARY_INPUT_ARCHIVE boost::archive::binary_wiarchive 00169 #elif _QX_SERIALIZE_BINARY 00170 #define QX_CLONE_STRING_STREAM std::stringstream 00171 #define QX_CLONE_BINARY_OUTPUT_ARCHIVE boost::archive::binary_oarchive 00172 #define QX_CLONE_BINARY_INPUT_ARCHIVE boost::archive::binary_iarchive 00173 #elif _QX_SERIALIZE_PORTABLE_BINARY 00174 #define QX_CLONE_STRING_STREAM std::stringstream 00175 #define QX_CLONE_BINARY_OUTPUT_ARCHIVE eos::portable_oarchive 00176 #define QX_CLONE_BINARY_INPUT_ARCHIVE eos::portable_iarchive 00177 #endif // _QX_SERIALIZE_WIDE_BINARY 00178 #else 00179 #define QX_CLONE_NEED_BINARY_TO_INCREASE_PERFORMANCE "qx::clone() need binary archive for best performance" 00180 #if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) 00181 # pragma message (QX_CLONE_NEED_BINARY_TO_INCREASE_PERFORMANCE) 00182 #elif defined(__GNUC__) || defined(__HP_aCC) || defined(__SUNPRO_CC) || defined(__IBMCPP__) 00183 # warning QX_CLONE_NEED_BINARY_TO_INCREASE_PERFORMANCE 00184 #endif // defined(_MSC_VER) || defined(__BORLANDC__) || defined(__DMC__) 00185 #endif // QX_CLONE_STRING_STREAM 00186 00187 #endif // _QX_SERIALIZE_INCLUDE_H_