| /* |
| * Copyright (c) 1999 |
| * Silicon Graphics Computer Systems, Inc. |
| * |
| * Copyright (c) 1999 |
| * Boris Fomitchev |
| * |
| * This material is provided "as is", with absolutely no warranty expressed |
| * or implied. Any use is at your own risk. |
| * |
| * Permission to use or copy this software for any purpose is hereby granted |
| * without fee, provided the above notices are retained on all copies. |
| * Permission to modify the code and to distribute modified code is granted, |
| * provided the above notices are retained, and a notice that the code was |
| * modified is included with the above copyright notice. |
| * |
| */ |
| #include "stlport_prefix.h" |
| |
| #include <locale> |
| #include <algorithm> |
| |
| _STLP_BEGIN_NAMESPACE |
| |
| //---------------------------------------------------------------------- |
| // codecvt<char, char, mbstate_t> |
| |
| codecvt<char, char, mbstate_t>::~codecvt() {} |
| |
| int codecvt<char, char, mbstate_t>::do_length(state_type&, |
| const char* from, |
| const char* end, |
| size_t mx) const |
| { return (int)(min) ( __STATIC_CAST(size_t, (end - from)), mx); } |
| |
| int codecvt<char, char, mbstate_t>::do_max_length() const _STLP_NOTHROW |
| { return 1; } |
| |
| bool |
| codecvt<char, char, mbstate_t>::do_always_noconv() const _STLP_NOTHROW |
| { return true; } |
| |
| int |
| codecvt<char, char, mbstate_t>::do_encoding() const _STLP_NOTHROW |
| { return 1; } |
| |
| codecvt_base::result |
| codecvt<char, char, mbstate_t>::do_unshift(state_type& /* __state */, |
| char* __to, |
| char* /* __to_limit */, |
| char*& __to_next) const |
| { __to_next = __to; return noconv; } |
| |
| codecvt_base::result |
| codecvt<char, char, mbstate_t>::do_in (state_type& /* __state */ , |
| const char* __from, |
| const char* /* __from_end */, |
| const char*& __from_next, |
| char* __to, |
| char* /* __to_end */, |
| char*& __to_next) const |
| { __from_next = __from; __to_next = __to; return noconv; } |
| |
| codecvt_base::result |
| codecvt<char, char, mbstate_t>::do_out(state_type& /* __state */, |
| const char* __from, |
| const char* /* __from_end */, |
| const char*& __from_next, |
| char* __to, |
| char* /* __to_limit */, |
| char*& __to_next) const |
| { __from_next = __from; __to_next = __to; return noconv; } |
| |
| |
| #if !defined (_STLP_NO_WCHAR_T) |
| //---------------------------------------------------------------------- |
| // codecvt<wchar_t, char, mbstate_t> |
| |
| codecvt<wchar_t, char, mbstate_t>::~codecvt() {} |
| |
| |
| codecvt<wchar_t, char, mbstate_t>::result |
| codecvt<wchar_t, char, mbstate_t>::do_out(state_type& /* state */, |
| const intern_type* from, |
| const intern_type* from_end, |
| const intern_type*& from_next, |
| extern_type* to, |
| extern_type* to_limit, |
| extern_type*& to_next) const { |
| ptrdiff_t len = (min) (from_end - from, to_limit - to); |
| copy(from, from + len, to); |
| from_next = from + len; |
| to_next = to + len; |
| return ok; |
| } |
| |
| codecvt<wchar_t, char, mbstate_t>::result |
| codecvt<wchar_t, char, mbstate_t>::do_in (state_type& /* state */, |
| const extern_type* from, |
| const extern_type* from_end, |
| const extern_type*& from_next, |
| intern_type* to, |
| intern_type* to_limit, |
| intern_type*& to_next) const { |
| ptrdiff_t len = (min) (from_end - from, to_limit - to); |
| copy(__REINTERPRET_CAST(const unsigned char*, from), |
| __REINTERPRET_CAST(const unsigned char*, from) + len, to); |
| from_next = from + len; |
| to_next = to + len; |
| return ok; |
| } |
| |
| codecvt<wchar_t, char, mbstate_t>::result |
| codecvt<wchar_t, char, mbstate_t>::do_unshift(state_type& /* state */, |
| extern_type* to, |
| extern_type* , |
| extern_type*& to_next) const { |
| to_next = to; |
| return noconv; |
| } |
| |
| int codecvt<wchar_t, char, mbstate_t>::do_encoding() const _STLP_NOTHROW |
| { return 1; } |
| |
| bool codecvt<wchar_t, char, mbstate_t>::do_always_noconv() const _STLP_NOTHROW |
| { return true; } |
| |
| int codecvt<wchar_t, char, mbstate_t>::do_length(state_type&, |
| const extern_type* from, |
| const extern_type* end, |
| size_t mx) const |
| { return (int)(min) ((size_t) (end - from), mx); } |
| |
| int codecvt<wchar_t, char, mbstate_t>::do_max_length() const _STLP_NOTHROW |
| { return 1; } |
| #endif /* wchar_t */ |
| |
| _STLP_END_NAMESPACE |
| |
| // Local Variables: |
| // mode:C++ |
| // End: |
| |