1 #ifndef PORTABLE_BINARY_OARCHIVE_HPP
2 #define PORTABLE_BINARY_OARCHIVE_HPP
5 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
10 #pragma warning( push )
11 #pragma warning( disable : 4244 )
25 #include <boost/serialization/string.hpp>
26 #include <boost/archive/archive_exception.hpp>
27 #include <boost/archive/basic_binary_oprimitive.hpp>
28 #include <boost/archive/detail/common_oarchive.hpp>
29 #include <boost/archive/detail/register_archive.hpp>
31 #include "portable_binary_archive.hpp"
37 public boost::archive::archive_exception
45 virtual const char *what( )
const throw( )
47 const char *msg =
"programmer error";
50 msg =
"cannot be both big and little endian";
52 boost::archive::archive_exception::what();
64 public boost::archive::basic_binary_oprimitive<
65 portable_binary_oarchive,
66 std::ostream::char_type,
67 std::ostream::traits_type
69 public boost::archive::detail::common_oarchive<
70 portable_binary_oarchive
73 typedef boost::archive::basic_binary_oprimitive<
75 std::ostream::char_type,
76 std::ostream::traits_type
78 typedef boost::archive::detail::common_oarchive<
79 portable_binary_oarchive
81 #ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
84 friend archive_base_t;
85 friend primitive_base_t;
86 friend class boost::archive::detail::interface_oarchive<
87 portable_binary_oarchive
89 friend class boost::archive::save_access;
93 void save_impl(
const boost::intmax_t l,
const char maxsize);
101 void save(
const T & t){
102 save_impl(t,
sizeof(T));
104 void save(
const std::string & t){
105 this->primitive_base_t::save(t);
107 #ifndef BOOST_NO_STD_WSTRING
108 void save(
const std::wstring & t){
109 this->primitive_base_t::save(t);
112 void save(
const float & t){
113 this->primitive_base_t::save(t);
117 void save(
const double & t){
118 this->primitive_base_t::save(t);
122 void save(
const char & t){
123 this->primitive_base_t::save(t);
125 void save(
const unsigned char & t){
126 this->primitive_base_t::save(t);
131 typedef boost::archive::detail::common_oarchive<portable_binary_oarchive>
132 detail_common_oarchive;
134 void save_override(T & t, BOOST_PFTO
int){
135 this->detail_common_oarchive::save_override(t, 0);
138 void save_override(
const boost::archive::class_name_type & t,
int){
139 const std::string s(t);
144 const boost::archive::class_id_optional_type & ,
148 void init(
unsigned int flags);
150 portable_binary_oarchive(std::ostream & os,
unsigned flags = 0) :
153 0 != (flags & boost::archive::no_codecvt)
155 archive_base_t(flags),
156 m_flags(flags & (endian_big | endian_little))
161 portable_binary_oarchive(
162 std::basic_streambuf<
163 std::ostream::char_type,
164 std::ostream::traits_type
170 0 != (flags & boost::archive::no_codecvt)
172 archive_base_t(flags),
181 #ifdef BOOST_SERIALIZATION_REGISTER_ARCHIVE
186 #define BOOST_ARCHIVE_CUSTOM_OARCHIVE_TYPES portable_binary_oarchive
188 #if defined(_MSC_VER)
189 #pragma warning( pop )
192 #endif // PORTABLE_BINARY_OARCHIVE_HPP
Definition: portable_binary_oarchive.hpp:63
Definition: portable_binary_oarchive.hpp:36