1 #ifndef BOOST_ARCHIVE_XML_WIARCHIVE_HPP
2 #define BOOST_ARCHIVE_XML_WIARCHIVE_HPP
4 // MS compatible compilers support #pragma once
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.
19 #include <boost/config.hpp>
20 #ifdef BOOST_NO_STD_WSTREAMBUF
21 #error "wide char i/o not supported on this platform"
26 #include <boost/smart_ptr/scoped_ptr.hpp>
27 #include <boost/archive/detail/auto_link_warchive.hpp>
28 #include <boost/archive/basic_text_iprimitive.hpp>
29 #include <boost/archive/basic_xml_iarchive.hpp>
30 #include <boost/archive/detail/register_archive.hpp>
31 #include <boost/serialization/item_version_type.hpp>
32 // #include <boost/archive/detail/utf8_codecvt_facet.hpp>
34 #include <boost/archive/detail/abi_prefix.hpp> // must be the last header
37 # pragma warning(push)
38 # pragma warning(disable : 4511 4512)
45 template<class Archive> class interface_iarchive;
48 template<class CharType>
49 class basic_xml_grammar;
50 typedef basic_xml_grammar<wchar_t> xml_wgrammar;
52 template<class Archive>
53 class BOOST_SYMBOL_VISIBLE xml_wiarchive_impl :
54 public basic_text_iprimitive<std::wistream>,
55 public basic_xml_iarchive<Archive>
57 #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
61 friend class detail::interface_iarchive<Archive>;
62 friend class basic_xml_iarchive<Archive>;
63 friend class load_access;
65 std::locale archive_locale;
66 boost::scoped_ptr<xml_wgrammar> gimpl;
67 std::wistream & get_is(){
73 basic_text_iprimitive<std::wistream>::load(t);
76 load(version_type & t){
82 load(boost::serialization::item_version_type & t){
85 t = boost::serialization::item_version_type(v);
87 BOOST_WARCHIVE_DECL void
89 #ifndef BOOST_NO_INTRINSIC_WCHAR_T
90 BOOST_WARCHIVE_DECL void
93 BOOST_WARCHIVE_DECL void
95 #ifndef BOOST_NO_STD_WSTRING
96 BOOST_WARCHIVE_DECL void
97 load(std::wstring &ws);
100 void load_override(T & t){
101 basic_xml_iarchive<Archive>::load_override(t);
103 BOOST_WARCHIVE_DECL void
104 load_override(class_name_type & t);
105 BOOST_WARCHIVE_DECL void
108 xml_wiarchive_impl(std::wistream & is, unsigned int flags) ;
110 ~xml_wiarchive_impl();
113 } // namespace archive
117 # pragma warning(pop)
120 #include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
123 # pragma warning(push)
124 # pragma warning(disable : 4511 4512)
130 class BOOST_SYMBOL_VISIBLE xml_wiarchive :
131 public xml_wiarchive_impl<xml_wiarchive>{
133 xml_wiarchive(std::wistream & is, unsigned int flags = 0) :
134 xml_wiarchive_impl<xml_wiarchive>(is, flags)
136 if(0 == (flags & no_header))
142 } // namespace archive
145 // required by export
146 BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::archive::xml_wiarchive)
152 #endif // BOOST_NO_STD_WSTREAMBUF
153 #endif // BOOST_ARCHIVE_XML_WIARCHIVE_HPP