19 #ifndef RCF_BOOST_UTF8_CODECVT_FACET_HPP
20 #define RCF_BOOST_UTF8_CODECVT_FACET_HPP
23 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
98 #include <boost/config.hpp>
99 #include <boost/detail/workaround.hpp>
102 #pragma warning( push )
103 #pragma warning( disable: 4263 ) // warning C4263: 'int RcfBoost::boost::program_options::detail::utf8_codecvt_facet::do_length(const mbstate_t &,const char *,const char *,size_t) const' : member function does not override any base class virtual member function
106 #if defined(BOOST_NO_STDC_NAMESPACE)
113 #if !defined(__MSL_CPP__) && !defined(__LIBCOMO__)
114 #define BOOST_CODECVT_DO_LENGTH_CONST const
116 #define BOOST_CODECVT_DO_LENGTH_CONST
120 #define MB_LENGTH_MAX 8
122 BOOST_UTF8_BEGIN_NAMESPACE
124 struct BOOST_UTF8_DECL utf8_codecvt_facet :
125 public std::codecvt<wchar_t, char, std::mbstate_t>
128 explicit utf8_codecvt_facet(std::size_t no_locale_manage=0)
129 : std::codecvt<wchar_t, char, std::mbstate_t>(no_locale_manage)
132 virtual std::codecvt_base::result do_in(
133 std::mbstate_t& state,
135 const char * from_end,
136 const char * & from_next,
142 virtual std::codecvt_base::result do_out(
143 std::mbstate_t & state,
const wchar_t * from,
144 const wchar_t * from_end,
const wchar_t* & from_next,
145 char * to,
char * to_end,
char * & to_next
148 bool invalid_continuing_octet(
unsigned char octet_1)
const {
149 return (octet_1 < 0x80|| 0xbf< octet_1);
152 bool invalid_leading_octet(
unsigned char octet_1)
const {
153 return (0x7f < octet_1 && octet_1 < 0xc0) ||
158 static unsigned int get_cont_octet_count(
unsigned char lead_octet) {
159 return get_octet_count(lead_octet) - 1;
162 static unsigned int get_octet_count(
unsigned char lead_octet);
166 int get_cont_octet_out_count(
wchar_t word)
const ;
168 virtual bool do_always_noconv()
const throw() {
return false; }
171 virtual std::codecvt_base::result do_unshift(
182 virtual int do_encoding()
const throw() {
183 const int variable_byte_external_encoding=0;
184 return variable_byte_external_encoding;
189 virtual int do_length(
190 BOOST_CODECVT_DO_LENGTH_CONST std::mbstate_t &,
192 const char * from_end,
193 std::size_t max_limit
194 #
if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600))
201 virtual int do_max_length()
const throw () {
206 BOOST_UTF8_END_NAMESPACE
209 #pragma warning( pop )
212 #endif // RCF_BOOST_UTF8_CODECVT_FACET_HPP