1#ifndef PORTABLE_BINARY_OARCHIVE_HPP
2#define PORTABLE_BINARY_OARCHIVE_HPP
10#pragma warning( push )
11#pragma warning( disable : 4244 )
25#include <boost/version.hpp>
26#include <boost/serialization/string.hpp>
27#include <boost/archive/archive_exception.hpp>
28#include <boost/archive/basic_binary_oprimitive.hpp>
29#include <boost/archive/detail/common_oarchive.hpp>
30#include <boost/archive/detail/register_archive.hpp>
33#include <boost/archive/impl/basic_binary_oprimitive.ipp>
41 public boost::archive::archive_exception
51 virtual const char *
what( )
const throw( )
53 const char *msg =
"programmer error";
56 msg =
"cannot be both big and little endian";
59 msg = boost::archive::archive_exception::what();
73 public boost::archive::basic_binary_oprimitive<
74 portable_binary_oarchive,
75 std::ostream::char_type,
76 std::ostream::traits_type
78 public boost::archive::detail::common_oarchive<
79 portable_binary_oarchive
82 typedef boost::archive::basic_binary_oprimitive<
84 std::ostream::char_type,
85 std::ostream::traits_type
87 typedef boost::archive::detail::common_oarchive<
90#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
95 friend class boost::archive::detail::interface_oarchive<
98 friend class boost::archive::save_access;
102 void save_impl(
const boost::intmax_t l,
const char maxsize);
113 void save(
const std::string & t){
114 this->primitive_base_t::save(t);
116 #ifndef BOOST_NO_STD_WSTRING
117 void save(
const std::wstring & t){
118 this->primitive_base_t::save(t);
122 this->primitive_base_t::save(t);
127 this->primitive_base_t::save(t);
132 this->primitive_base_t::save(t);
134 void save(
const unsigned char & t){
135 this->primitive_base_t::save(t);
140 typedef boost::archive::detail::common_oarchive<portable_binary_oarchive>
142#if BOOST_VERSION > 105800
145 this->detail_common_oarchive::save_override(t);
148 void save_override(
const boost::archive::class_name_type & t){
149 const std::string
s(t);
154 const boost::archive::class_id_optional_type &
159 this->detail_common_oarchive::save_override(t, 0);
163 const std::string
s(t);
168 const boost::archive::class_id_optional_type & ,
int
186 std::basic_streambuf<
187 std::ostream::char_type,
188 std::ostream::traits_type
206#ifdef BOOST_SERIALIZATION_REGISTER_ARCHIVE
207 BOOST_SERIALIZATION_REGISTER_ARCHIVE(portable_binary_oarchive)
211#define BOOST_ARCHIVE_CUSTOM_OARCHIVE_TYPES portable_binary_oarchive
224#include <boost/predef/other/endian.h>
226namespace boost {
namespace archive {
230 const boost::intmax_t l,
233 signed char size = 0;
236 this->primitive_base_t::save(size);
252 this->primitive_base_t::save(
253 static_cast<signed char>(
negative ? -size : size)
260 char * cptr =
reinterpret_cast<char *
>(& ll);
261 #if BOOST_ENDIAN_BIG_BYTE
262 cptr += (
sizeof(boost::intmax_t) - size);
269 this->primitive_base_t::save_binary(cptr, size);
275 boost::serialization::throw_exception(
279 if(0 == (
flags & boost::archive::no_header)){
281 const std::string file_signature(
282 boost::archive::BOOST_ARCHIVE_SIGNATURE()
284 *
this << file_signature;
286 const boost::archive::library_version_type v{};
295 save(
static_cast<unsigned char>(
m_flags >> CHAR_BIT));
304 template class archive_serializer_map<portable_binary_oarchive>;
317#pragma warning( pop )
#define s(x, c)
Definition aesb.c:47
Definition portable_binary_oarchive.hpp:42
virtual const char * what() const
Definition portable_binary_oarchive.hpp:51
exception_code
Definition portable_binary_oarchive.hpp:44
@ invalid_flags
Definition portable_binary_oarchive.hpp:45
enum boost::archive::portable_binary_oarchive_exception::exception_code m_exception_code
portable_binary_oarchive_exception(exception_code c=invalid_flags)
Definition portable_binary_oarchive.hpp:47
boost::archive::basic_binary_oprimitive< portable_binary_oarchive, std::ostream::char_type, std::ostream::traits_type > primitive_base_t
Definition portable_binary_oarchive.hpp:86
void save(const unsigned char &t)
Definition portable_binary_oarchive.hpp:134
void save(const std::wstring &t)
Definition portable_binary_oarchive.hpp:117
void save_override(const boost::archive::class_name_type &t, int)
Definition portable_binary_oarchive.hpp:162
void save_impl(const boost::intmax_t l, const char maxsize)
Definition portable_binary_oarchive.hpp:229
void save(const double &t)
Definition portable_binary_oarchive.hpp:126
boost::archive::detail::common_oarchive< portable_binary_oarchive > archive_base_t
Definition portable_binary_oarchive.hpp:89
portable_binary_oarchive(std::basic_streambuf< std::ostream::char_type, std::ostream::traits_type > &bsb, unsigned int flags)
Definition portable_binary_oarchive.hpp:185
void save(const char &t)
Definition portable_binary_oarchive.hpp:131
void save_override(T &t, int)
Definition portable_binary_oarchive.hpp:158
void save(const T &t)
Definition portable_binary_oarchive.hpp:110
void init(unsigned int flags)
Definition portable_binary_oarchive.hpp:273
void save(const std::string &t)
Definition portable_binary_oarchive.hpp:113
portable_binary_oarchive(std::ostream &os, unsigned flags=endian_little)
Definition portable_binary_oarchive.hpp:174
boost::archive::detail::common_oarchive< portable_binary_oarchive > detail_common_oarchive
Definition portable_binary_oarchive.hpp:141
void save_override(const boost::archive::class_id_optional_type &, int)
Definition portable_binary_oarchive.hpp:167
void save(const float &t)
Definition portable_binary_oarchive.hpp:121
unsigned int m_flags
Definition portable_binary_oarchive.hpp:101
static void init()
Definition logging.cpp:42
static int flags
Definition mdb_load.c:31
Definition portable_binary_archive.hpp:29
@ endian_big
Definition portable_binary_archive.hpp:32
@ endian_little
Definition portable_binary_archive.hpp:33
void reverse_bytes(signed char size, char *address)
Definition portable_binary_archive.hpp:41
Definition portable_binary_archive.hpp:29
declaration and default definition for the functions used the API
Definition expect.cpp:34
static unsigned char negative(signed char b)
Definition crypto-ops.c:1598