ucs2string.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __UCS2STRING_H__
00025 #define __UCS2STRING_H__
00026
00027 #include <ucs2char.h>
00028 #include <string>
00029
00030 struct ucs2char_traits
00031 {
00032 typedef ucs2char_t char_type;
00033 typedef int int_type;
00034 typedef std::streamoff off_type;
00035 typedef std::fpos<std::mbstate_t> pos_type;
00036 typedef std::mbstate_t state_type;
00037
00038 static void assign(char_type& __cl, const char_type& __cr)
00039 {
00040 __cl = __cr;
00041 }
00042
00043 static bool eq(const char_type& __cl, const char_type& __cr)
00044 {
00045 return __cl == __cr;
00046 }
00047
00048 static bool lt(const char_type& __cl, const char_type& __cr)
00049 {
00050 return __cl < __cr;
00051 }
00052
00053 static int compare(const char_type* __s1, const char_type* __s2, size_t __n)
00054 {
00055 return ucs2memcmp(__s1, __s2, __n);
00056 }
00057
00058 static size_t length(const char_type* __s)
00059 {
00060 return ucs2len(__s);
00061 }
00062
00063 static const char_type* find(const char_type* __s, size_t __n, const char_type& __a)
00064 {
00065 return ucs2memchr(__s, __a, __n);
00066 }
00067
00068 static char_type* move(char_type* __s1, const char_type* __s2, size_t __n)
00069 {
00070 return ucs2memmove(__s1, __s2, __n);
00071 }
00072
00073 static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n)
00074 {
00075 return ucs2memcpy(__s1, __s2, __n);
00076 }
00077
00078 static char_type* assign(char_type* __s, size_t __n, char_type __a)
00079 {
00080 return ucs2memset(__s, __a, __n);
00081 }
00082
00083 static char_type to_char_type(const int_type& __c)
00084 {
00085 return char_type(__c);
00086 }
00087
00088 static int_type to_int_type(const char_type& __c)
00089 {
00090 return int_type(__c);
00091 }
00092
00093 static bool eq_int_type(const int_type& __c1, const int_type& __c2)
00094 {
00095 return __c1 == __c2;
00096 }
00097
00098 static int_type eof()
00099 {
00100 return static_cast<int_type>(0xFFFF);
00101 }
00102
00103 static int_type not_eof(const int_type& __c)
00104 {
00105 return eq_int_type(__c, eof()) ? 0 : __c;
00106 }
00107 };
00108
00109 typedef std::basic_string<ucs2char_t, ucs2char_traits, std::allocator<ucs2char_t> > ucs2string;
00110
00111 #endif