1
#ifndef BOOST_ARCHIVE_TEXT_OARCHIVE_HPP
2
#define BOOST_ARCHIVE_TEXT_OARCHIVE_HPP
4
// MS compatible compilers support #pragma once
5
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
9
/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
12
// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
13
// Use, modification and distribution is subject to the Boost Software
14
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
15
// http://www.boost.org/LICENSE_1_0.txt)
17
// See http://www.boost.org for updates, documentation, and revision history.
20
#include <cstddef> // std::size_t
22
#include <boost/config.hpp>
23
#if defined(BOOST_NO_STDC_NAMESPACE)
29
#include <boost/archive/detail/auto_link_archive.hpp>
30
#include <boost/archive/basic_text_oprimitive.hpp>
31
#include <boost/archive/basic_text_oarchive.hpp>
32
#include <boost/archive/detail/register_archive.hpp>
34
#include <boost/archive/detail/abi_prefix.hpp> // must be the last header
39
template<class Archive>
40
class text_oarchive_impl :
41
/* protected ? */ public basic_text_oprimitive<std::ostream>,
42
public basic_text_oarchive<Archive>
44
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
47
friend class detail::interface_oarchive<Archive>;
48
friend class basic_text_oarchive<Archive>;
49
friend class save_access;
53
void save(const T & t){
55
basic_text_oprimitive<std::ostream>::save(t);
57
BOOST_ARCHIVE_DECL(void)
59
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
60
BOOST_ARCHIVE_DECL(void)
61
save(const wchar_t * t);
63
BOOST_ARCHIVE_DECL(void)
64
save(const std::string &s);
65
#ifndef BOOST_NO_STD_WSTRING
66
BOOST_ARCHIVE_DECL(void)
67
save(const std::wstring &ws);
69
BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY())
70
text_oarchive_impl(std::ostream & os, unsigned int flags);
71
BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY())
72
~text_oarchive_impl(){};
74
BOOST_ARCHIVE_DECL(void)
75
save_binary(const void *address, std::size_t count);
78
// do not derive from this class. If you want to extend this functionality
79
// via inhertance, derived from text_oarchive_impl instead. This will
80
// preserve correct static polymorphism.
82
public text_oarchive_impl<text_oarchive>
86
text_oarchive(std::ostream & os_, unsigned int flags = 0) :
87
// note: added _ to suppress useless gcc warning
88
text_oarchive_impl<text_oarchive>(os_, flags)
93
typedef text_oarchive naked_text_oarchive;
95
} // namespace archive
99
BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::archive::text_oarchive)
101
#include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
103
#endif // BOOST_ARCHIVE_TEXT_OARCHIVE_HPP