annotate DEPENDENCIES/generic/include/boost/archive/impl/text_woarchive_impl.ipp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
Chris@16 2 // text_woarchive_impl.ipp:
Chris@16 3
Chris@16 4 // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
Chris@16 5 // Distributed under the Boost Software License, Version 1.0. (See
Chris@16 6 // accompanying file LICENSE_1_0.txt or copy at
Chris@16 7 // http://www.boost.org/LICENSE_1_0.txt)
Chris@16 8
Chris@16 9 // See http://www.boost.org for updates, documentation, and revision history.
Chris@16 10
Chris@16 11 #include <boost/config.hpp>
Chris@16 12 #ifndef BOOST_NO_STD_WSTREAMBUF
Chris@16 13
Chris@16 14 #include <cstring>
Chris@16 15 #include <cstddef> // size_t
Chris@16 16 #if defined(BOOST_NO_STDC_NAMESPACE) && ! defined(__LIBCOMO__)
Chris@16 17 namespace std{
Chris@16 18 using ::strlen;
Chris@16 19 using ::size_t;
Chris@16 20 } // namespace std
Chris@16 21 #endif
Chris@16 22
Chris@16 23 #include <ostream>
Chris@16 24
Chris@16 25 #include <boost/archive/text_woarchive.hpp>
Chris@16 26
Chris@16 27 namespace boost {
Chris@16 28 namespace archive {
Chris@16 29
Chris@16 30 //////////////////////////////////////////////////////////////////////
Chris@16 31 // implementation of woarchive functions
Chris@16 32 //
Chris@16 33 template<class Archive>
Chris@16 34 BOOST_WARCHIVE_DECL(void)
Chris@16 35 text_woarchive_impl<Archive>::save(const char *s)
Chris@16 36 {
Chris@16 37 // note: superfluous local variable fixes borland warning
Chris@16 38 const std::size_t size = std::strlen(s);
Chris@16 39 * this->This() << size;
Chris@16 40 this->This()->newtoken();
Chris@16 41 while(*s != '\0')
Chris@16 42 os.put(os.widen(*s++));
Chris@16 43 }
Chris@16 44
Chris@16 45 template<class Archive>
Chris@16 46 BOOST_WARCHIVE_DECL(void)
Chris@16 47 text_woarchive_impl<Archive>::save(const std::string &s)
Chris@16 48 {
Chris@16 49 const std::size_t size = s.size();
Chris@16 50 * this->This() << size;
Chris@16 51 this->This()->newtoken();
Chris@16 52 const char * cptr = s.data();
Chris@16 53 for(std::size_t i = size; i-- > 0;)
Chris@16 54 os.put(os.widen(*cptr++));
Chris@16 55 }
Chris@16 56
Chris@16 57 #ifndef BOOST_NO_INTRINSIC_WCHAR_T
Chris@16 58 template<class Archive>
Chris@16 59 BOOST_WARCHIVE_DECL(void)
Chris@16 60 text_woarchive_impl<Archive>::save(const wchar_t *ws)
Chris@16 61 {
Chris@16 62 const std::size_t size = std::wostream::traits_type::length(ws);
Chris@16 63 * this->This() << size;
Chris@16 64 this->This()->newtoken();
Chris@16 65 os.write(ws, size);
Chris@16 66 }
Chris@16 67 #endif
Chris@16 68
Chris@16 69 #ifndef BOOST_NO_STD_WSTRING
Chris@16 70 template<class Archive>
Chris@16 71 BOOST_WARCHIVE_DECL(void)
Chris@16 72 text_woarchive_impl<Archive>::save(const std::wstring &ws)
Chris@16 73 {
Chris@16 74 const std::size_t size = ws.length();
Chris@16 75 * this->This() << size;
Chris@16 76 this->This()->newtoken();
Chris@16 77 os.write(ws.data(), size);
Chris@16 78 }
Chris@16 79 #endif
Chris@16 80
Chris@16 81 } // namespace archive
Chris@16 82 } // namespace boost
Chris@16 83
Chris@16 84 #endif
Chris@16 85