/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 // text_woarchive_impl.ipp: // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // See http://www.boost.org for updates, documentation, and revision history. #include #ifndef BOOST_NO_STD_WSTREAMBUF #include #include // size_t #if defined(BOOST_NO_STDC_NAMESPACE) && ! defined(__LIBCOMO__) namespace std{ using ::strlen; using ::size_t; } // namespace std #endif #include #include namespace boost { namespace archive { ////////////////////////////////////////////////////////////////////// // implementation of woarchive functions // template BOOST_WARCHIVE_DECL(void) text_woarchive_impl::save(const char *s) { // note: superfluous local variable fixes borland warning const std::size_t size = std::strlen(s); * this->This() << size; this->This()->newtoken(); while(*s != '\0') os.put(os.widen(*s++)); } template BOOST_WARCHIVE_DECL(void) text_woarchive_impl::save(const std::string &s) { const std::size_t size = s.size(); * this->This() << size; this->This()->newtoken(); const char * cptr = s.data(); for(std::size_t i = size; i-- > 0;) os.put(os.widen(*cptr++)); } #ifndef BOOST_NO_INTRINSIC_WCHAR_T template BOOST_WARCHIVE_DECL(void) text_woarchive_impl::save(const wchar_t *ws) { const std::size_t size = std::wostream::traits_type::length(ws); * this->This() << size; this->This()->newtoken(); os.write(ws, size); } #endif #ifndef BOOST_NO_STD_WSTRING template BOOST_WARCHIVE_DECL(void) text_woarchive_impl::save(const std::wstring &ws) { const std::size_t size = ws.length(); * this->This() << size; this->This()->newtoken(); os.write(ws.data(), size); } #endif } // namespace archive } // namespace boost #endif