Index: swig/Lib/std/std_char_traits.i |
=================================================================== |
--- swig/Lib/std/std_char_traits.i (revision 0) |
+++ swig/Lib/std/std_char_traits.i (revision 0) |
@@ -0,0 +1,140 @@ |
+%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 |
+} |