Chris@16: #ifndef BOOST_ARCHIVE_CODECVT_NULL_HPP Chris@16: #define BOOST_ARCHIVE_CODECVT_NULL_HPP Chris@16: Chris@16: // MS compatible compilers support #pragma once Chris@101: #if defined(_MSC_VER) Chris@16: # pragma once Chris@16: #endif Chris@16: Chris@16: /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 Chris@16: // codecvt_null.hpp: Chris@16: Chris@16: // (C) Copyright 2004 Robert Ramey - http://www.rrsd.com . Chris@16: // Use, modification and distribution is subject to the Boost Software Chris@16: // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: // See http://www.boost.org for updates, documentation, and revision history. Chris@16: Chris@16: #include Chris@16: #include // NULL, size_t Chris@16: #include // for mbstate_t Chris@16: #include Chris@16: #include Chris@16: #include // must be the last header Chris@16: Chris@16: #if defined(BOOST_NO_STDC_NAMESPACE) Chris@16: namespace std { Chris@16: // For STLport on WinCE, BOOST_NO_STDC_NAMESPACE can get defined if STLport is putting symbols in its own namespace. Chris@16: // In the case of codecvt, however, this does not mean that codecvt is in the global namespace (it will be in STLport's namespace) Chris@16: # if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) Chris@16: using ::codecvt; Chris@16: # endif Chris@16: using ::mbstate_t; Chris@16: using ::size_t; Chris@16: } // namespace Chris@16: #endif Chris@16: Chris@16: #ifdef BOOST_MSVC Chris@16: # pragma warning(push) Chris@16: # pragma warning(disable : 4511 4512) Chris@16: #endif Chris@16: Chris@16: namespace boost { Chris@16: namespace archive { Chris@16: Chris@16: template Chris@16: class codecvt_null; Chris@16: Chris@16: template<> Chris@16: class codecvt_null : public std::codecvt Chris@16: { Chris@16: virtual bool do_always_noconv() const throw() { Chris@16: return true; Chris@16: } Chris@16: public: Chris@16: explicit codecvt_null(std::size_t no_locale_manage = 0) : Chris@16: std::codecvt(no_locale_manage) Chris@16: {} Chris@16: }; Chris@16: Chris@16: template<> Chris@16: class codecvt_null : public std::codecvt Chris@16: { Chris@16: virtual BOOST_WARCHIVE_DECL(std::codecvt_base::result) Chris@16: do_out( Chris@16: std::mbstate_t & state, Chris@16: const wchar_t * first1, Chris@16: const wchar_t * last1, Chris@16: const wchar_t * & next1, Chris@16: char * first2, Chris@16: char * last2, Chris@16: char * & next2 Chris@16: ) const; Chris@16: virtual BOOST_WARCHIVE_DECL(std::codecvt_base::result) Chris@16: do_in( Chris@16: std::mbstate_t & state, Chris@16: const char * first1, Chris@16: const char * last1, Chris@16: const char * & next1, Chris@16: wchar_t * first2, Chris@16: wchar_t * last2, Chris@16: wchar_t * & next2 Chris@16: ) const; Chris@16: virtual int do_encoding( ) const throw( ){ Chris@16: return sizeof(wchar_t) / sizeof(char); Chris@16: } Chris@16: virtual int do_max_length( ) const throw( ){ Chris@16: return do_encoding(); Chris@16: } Chris@101: public: Chris@101: explicit codecvt_null(std::size_t no_locale_manage = 0) : Chris@101: std::codecvt(no_locale_manage) Chris@101: {} Chris@16: }; Chris@16: Chris@16: } // namespace archive Chris@16: } // namespace boost Chris@16: Chris@16: #ifdef BOOST_MSVC Chris@16: # pragma warning(pop) Chris@16: #endif Chris@16: #include // pop pragmas Chris@16: Chris@16: #endif //BOOST_ARCHIVE_CODECVT_NULL_HPP