From 1fef8494fec86d23e557007343036c3d8a5b0ace Mon Sep 17 00:00:00 2001 From: Robert Ramey Date: Fri, 12 Dec 2014 21:28:21 -0800 Subject: [PATCH] eliminated MACRO for do length by providing both const and non-const versions --- include/boost/detail/utf8_codecvt_facet.hpp | 26 ++++++++++++++------- include/boost/detail/utf8_codecvt_facet.ipp | 2 +- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/include/boost/detail/utf8_codecvt_facet.hpp b/include/boost/detail/utf8_codecvt_facet.hpp index 1e78b38..2d7ed8b 100644 --- a/include/boost/detail/utf8_codecvt_facet.hpp +++ b/include/boost/detail/utf8_codecvt_facet.hpp @@ -93,12 +93,6 @@ namespace std { } #endif -#if defined(_CPPLIB_VER) && (_CPPLIB_VER < 540) - #define BOOST_CODECVT_DO_LENGTH_CONST const -#else - #define BOOST_CODECVT_DO_LENGTH_CONST -#endif - // maximum lenght of a multibyte string #define MB_LENGTH_MAX 8 @@ -183,7 +177,7 @@ protected: // How many char objects can I process to get <= max_limit // wchar_t objects? virtual int do_length( - BOOST_CODECVT_DO_LENGTH_CONST std::mbstate_t &, + const std::mbstate_t &, const char * from, const char * from_end, std::size_t max_limit @@ -192,7 +186,23 @@ protected: throw() #endif ; - + virtual int do_length( + std::mbstate_t & s, + const char * from, + const char * from_end, + std::size_t max_limit + ) const +#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) + throw() +#endif + { + return do_length( + const_cast(s), + from, + from_end, + max_limit + ); + } // Largest possible value do_length(state,from,from_end,1) could return. virtual int do_max_length() const BOOST_NOEXCEPT_OR_NOTHROW { return 6; // largest UTF-8 encoding of a UCS-4 character diff --git a/include/boost/detail/utf8_codecvt_facet.ipp b/include/boost/detail/utf8_codecvt_facet.ipp index e08c9e0..d39170f 100644 --- a/include/boost/detail/utf8_codecvt_facet.ipp +++ b/include/boost/detail/utf8_codecvt_facet.ipp @@ -171,7 +171,7 @@ std::codecvt_base::result utf8_codecvt_facet::do_out( // How many char objects can I process to get <= max_limit // wchar_t objects? int utf8_codecvt_facet::do_length( - BOOST_CODECVT_DO_LENGTH_CONST std::mbstate_t &, + const std::mbstate_t &, const char * from, const char * from_end, std::size_t max_limit