1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Copyright (c) 1999 3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Silicon Graphics Computer Systems, Inc. 4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Copyright (c) 1999 6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Boris Fomitchev 7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * This material is provided "as is", with absolutely no warranty expressed 9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * or implied. Any use is at your own risk. 10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Permission to use or copy this software for any purpose is hereby granted 12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * without fee, provided the above notices are retained on all copies. 13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Permission to modify the code and to distribute modified code is granted, 14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * provided the above notices are retained, and a notice that the code was 15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * modified is included with the above copyright notice. 16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "stlport_prefix.h" 19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <locale> 21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <algorithm> 22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_BEGIN_NAMESPACE 24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//---------------------------------------------------------------------- 26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// codecvt<char, char, mbstate_t> 27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt<char, char, mbstate_t>::~codecvt() {} 29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint codecvt<char, char, mbstate_t>::do_length(state_type&, 31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char* from, 32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char* end, 33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_t mx) const 34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return (int)(min) ( __STATIC_CAST(size_t, (end - from)), mx); } 35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint codecvt<char, char, mbstate_t>::do_max_length() const _STLP_NOTHROW 37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return 1; } 38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottbool 40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt<char, char, mbstate_t>::do_always_noconv() const _STLP_NOTHROW 41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return true; } 42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint 44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt<char, char, mbstate_t>::do_encoding() const _STLP_NOTHROW 45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return 1; } 46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt_base::result 48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt<char, char, mbstate_t>::do_unshift(state_type& /* __state */, 49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char* __to, 50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char* /* __to_limit */, 51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char*& __to_next) const 52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ __to_next = __to; return noconv; } 53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt_base::result 55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt<char, char, mbstate_t>::do_in (state_type& /* __state */ , 56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char* __from, 57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char* /* __from_end */, 58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char*& __from_next, 59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char* __to, 60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char* /* __to_end */, 61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char*& __to_next) const 62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ __from_next = __from; __to_next = __to; return noconv; } 63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 64e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt_base::result 65e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt<char, char, mbstate_t>::do_out(state_type& /* __state */, 66e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char* __from, 67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char* /* __from_end */, 68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char*& __from_next, 69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char* __to, 70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char* /* __to_limit */, 71e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char*& __to_next) const 72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ __from_next = __from; __to_next = __to; return noconv; } 73e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_NO_WCHAR_T) 76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//---------------------------------------------------------------------- 77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// codecvt<wchar_t, char, mbstate_t> 78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt<wchar_t, char, mbstate_t>::~codecvt() {} 80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 81e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt<wchar_t, char, mbstate_t>::result 83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt<wchar_t, char, mbstate_t>::do_out(state_type& /* state */, 84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const intern_type* from, 85e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const intern_type* from_end, 86e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const intern_type*& from_next, 87e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott extern_type* to, 88e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott extern_type* to_limit, 89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott extern_type*& to_next) const { 90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ptrdiff_t len = (min) (from_end - from, to_limit - to); 91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott copy(from, from + len, to); 92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott from_next = from + len; 93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott to_next = to + len; 94e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return ok; 95e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 96e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 97e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt<wchar_t, char, mbstate_t>::result 98e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt<wchar_t, char, mbstate_t>::do_in (state_type& /* state */, 99e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const extern_type* from, 100e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const extern_type* from_end, 101e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const extern_type*& from_next, 102e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott intern_type* to, 103e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott intern_type* to_limit, 104e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott intern_type*& to_next) const { 105e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ptrdiff_t len = (min) (from_end - from, to_limit - to); 106e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott copy(__REINTERPRET_CAST(const unsigned char*, from), 107e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __REINTERPRET_CAST(const unsigned char*, from) + len, to); 108e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott from_next = from + len; 109e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott to_next = to + len; 110e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return ok; 111e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 112e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 113e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt<wchar_t, char, mbstate_t>::result 114e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottcodecvt<wchar_t, char, mbstate_t>::do_unshift(state_type& /* state */, 115e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott extern_type* to, 116e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott extern_type* , 117e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott extern_type*& to_next) const { 118e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott to_next = to; 119e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return noconv; 120e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 121e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 122e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint codecvt<wchar_t, char, mbstate_t>::do_encoding() const _STLP_NOTHROW 123e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return 1; } 124e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 125e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottbool codecvt<wchar_t, char, mbstate_t>::do_always_noconv() const _STLP_NOTHROW 126e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return true; } 127e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 128e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint codecvt<wchar_t, char, mbstate_t>::do_length(state_type&, 129e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const extern_type* from, 130e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const extern_type* end, 131e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott size_t mx) const 132e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return (int)(min) ((size_t) (end - from), mx); } 133e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 134e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint codecvt<wchar_t, char, mbstate_t>::do_max_length() const _STLP_NOTHROW 135e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return 1; } 136e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif /* wchar_t */ 137e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 138e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_END_NAMESPACE 139e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 140e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// Local Variables: 141e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// mode:C++ 142e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// End: 143e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 144