mirror of
https://github.com/reactos/reactos.git
synced 2025-05-19 17:14:32 +00:00
143 lines
5.5 KiB
C++
143 lines
5.5 KiB
C++
/*
|
|
* 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:
|
|
|