You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
3.1 KiB
140 lines
3.1 KiB
%include <std_common.i> |
|
#if defined(SWIG_WCHAR) |
|
%include <wchar.i> |
|
#endif |
|
|
|
namespace std |
|
{ |
|
|
|
/// 21.1.2 Basis for explicit _Traits specialization |
|
/// NB: That for any given actual character type this definition is |
|
/// probably wrong. |
|
template<class _CharT> |
|
struct char_traits |
|
{ |
|
}; |
|
|
|
|
|
/// 21.1.4 char_traits specializations |
|
template<> |
|
struct char_traits<char> { |
|
typedef char char_type; |
|
typedef int int_type; |
|
typedef streampos pos_type; |
|
typedef streamoff off_type; |
|
typedef mbstate_t state_type; |
|
|
|
static void |
|
assign(char_type& __c1, const char_type& __c2); |
|
|
|
static bool |
|
eq(const char_type& __c1, const char_type& __c2); |
|
|
|
static bool |
|
lt(const char_type& __c1, const char_type& __c2); |
|
|
|
static int |
|
compare(const char_type* __s1, const char_type* __s2, size_t __n); |
|
|
|
static size_t |
|
length(const char_type* __s); |
|
|
|
static const char_type* |
|
find(const char_type* __s, size_t __n, const char_type& __a); |
|
|
|
static char_type* |
|
move(char_type* __s1, const char_type* __s2, size_t __n); |
|
|
|
static char_type* |
|
copy(char_type* __s1, const char_type* __s2, size_t __n); |
|
|
|
static char_type* |
|
assign(char_type* __s, size_t __n, char_type __a); |
|
|
|
static char_type |
|
to_char_type(const int_type& __c); |
|
|
|
// To keep both the byte 0xff and the eof symbol 0xffffffff |
|
// from ending up as 0xffffffff. |
|
static int_type |
|
to_int_type(const char_type& __c); |
|
|
|
static bool |
|
eq_int_type(const int_type& __c1, const int_type& __c2); |
|
|
|
static int_type |
|
eof() ; |
|
|
|
static int_type |
|
not_eof(const int_type& __c); |
|
}; |
|
|
|
|
|
#if defined(SWIG_WCHAR) |
|
template<> |
|
struct char_traits<wchar_t> |
|
{ |
|
typedef wchar_t char_type; |
|
typedef wint_t int_type; |
|
typedef streamoff off_type; |
|
typedef wstreampos pos_type; |
|
typedef mbstate_t state_type; |
|
|
|
static void |
|
assign(char_type& __c1, const char_type& __c2); |
|
|
|
static bool |
|
eq(const char_type& __c1, const char_type& __c2); |
|
|
|
static bool |
|
lt(const char_type& __c1, const char_type& __c2); |
|
|
|
static int |
|
compare(const char_type* __s1, const char_type* __s2, size_t __n); |
|
|
|
static size_t |
|
length(const char_type* __s); |
|
|
|
static const char_type* |
|
find(const char_type* __s, size_t __n, const char_type& __a); |
|
|
|
static char_type* |
|
move(char_type* __s1, const char_type* __s2, int_type __n); |
|
|
|
static char_type* |
|
copy(char_type* __s1, const char_type* __s2, size_t __n); |
|
|
|
static char_type* |
|
assign(char_type* __s, size_t __n, char_type __a); |
|
|
|
static char_type |
|
to_char_type(const int_type& __c) ; |
|
|
|
static int_type |
|
to_int_type(const char_type& __c) ; |
|
|
|
static bool |
|
eq_int_type(const int_type& __c1, const int_type& __c2); |
|
|
|
static int_type |
|
eof() ; |
|
|
|
static int_type |
|
not_eof(const int_type& __c); |
|
}; |
|
#endif |
|
} |
|
|
|
namespace std { |
|
#ifndef SWIG_STL_WRAP_TRAITS |
|
%template() char_traits<char>; |
|
#if defined(SWIG_WCHAR) |
|
%template() char_traits<wchar_t>; |
|
#endif |
|
#else |
|
%template(char_traits_c) char_traits<char>; |
|
#if defined(SWIG_WCHAR) |
|
%template(char_traits_w) char_traits<wchar_t>; |
|
#endif |
|
#endif |
|
}
|
|
|