359508d9f8f0ba2dec965b9ba5929d36eacb4c5c
[platform/framework/web/crosswalk.git] / src / third_party / libc++ / trunk / include / support / solaris / xlocale.h
1 ////////////////////////////////////////////////////////////////////////////////
2 // Minimal xlocale implementation for Solaris.  This implements the subset of
3 // the xlocale APIs that libc++ depends on.
4 ////////////////////////////////////////////////////////////////////////////////
5 #ifndef __XLOCALE_H_INCLUDED
6 #define __XLOCALE_H_INCLUDED
7
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11
12
13 typedef struct _LC_locale_t* locale_t;
14
15 #define LC_COLLATE_MASK  (1<<0)
16 #define LC_CTYPE_MASK    (1<<1)
17 #define LC_MESSAGES_MASK (1<<2)
18 #define LC_MONETARY_MASK (1<<3)
19 #define LC_NUMERIC_MASK  (1<<4)
20 #define LC_TIME_MASK     (1<<5)
21 #define LC_ALL_MASK      (LC_COLLATE_MASK | LC_CTYPE_MASK | LC_MESSAGES_MASK | \
22                 LC_MONETARY_MASK | LC_NUMERIC_MASK | LC_TIME_MASK)
23
24 #define LC_GLOBAL_LOCALE ((locale_t)-1)
25
26 size_t __mb_cur_max(locale_t l);
27 #define MB_CUR_MAX_L(l) __mb_cur_max(l) 
28
29 locale_t newlocale(int mask, const char * locale, locale_t base);
30 void freelocale(locale_t loc);
31
32 wint_t btowc_l(int __c, locale_t __l);
33
34 int wctob_l(wint_t __c, locale_t __l);
35
36 size_t wcrtomb_l(char *__s, wchar_t __wc, mbstate_t *__ps, locale_t __l);
37
38 size_t mbrtowc_l(wchar_t *__pwc, const char *__s, size_t __n,
39                  mbstate_t *__ps, locale_t __l);
40
41 int mbtowc_l(wchar_t *__pwc, const char *__pmb, size_t __max, locale_t __l);
42
43 size_t mbrlen_l(const char *__s, size_t __n, mbstate_t *__ps, locale_t __l);
44
45 struct lconv *localeconv_l(locale_t __l);
46
47 size_t mbsrtowcs_l(wchar_t *__dest, const char **__src, size_t __len,
48                    mbstate_t *__ps, locale_t __l);
49
50 int sprintf_l(char *__s, locale_t __l, const char *__format, ...);
51
52 int snprintf_l(char *__s, size_t __n, locale_t __l, const char *__format, ...);
53
54 int asprintf_l(char **__s, locale_t __l, const char *__format, ...);
55
56 int sscanf_l(const char *__s, locale_t __l, const char *__format, ...);
57
58 int isalnum_l(int,locale_t);
59 int isalpha_l(int,locale_t);
60 int isblank_l(int,locale_t);
61 int iscntrl_l(int,locale_t);
62 int isdigit_l(int,locale_t);
63 int isgraph_l(int,locale_t);
64 int islower_l(int,locale_t);
65 int isprint_l(int,locale_t);
66 int ispunct_l(int,locale_t);
67 int isspace_l(int,locale_t);
68 int isupper_l(int,locale_t);
69 int isxdigit_l(int,locale_t);
70
71 int iswalnum_l(wchar_t,locale_t);
72 int iswalpha_l(wchar_t,locale_t);
73 int iswblank_l(wchar_t,locale_t);
74 int iswcntrl_l(wchar_t,locale_t);
75 int iswdigit_l(wchar_t,locale_t);
76 int iswgraph_l(wchar_t,locale_t);
77 int iswlower_l(wchar_t,locale_t);
78 int iswprint_l(wchar_t,locale_t);
79 int iswpunct_l(wchar_t,locale_t);
80 int iswspace_l(wchar_t,locale_t);
81 int iswupper_l(wchar_t,locale_t);
82 int iswxdigit_l(wchar_t,locale_t);
83
84 int iswctype_l(wint_t, wctype_t, locale_t);
85
86 int toupper_l(int __c, locale_t __l);
87 int tolower_l(int __c, locale_t __l);
88 wint_t towupper_l(wint_t __c, locale_t __l);
89 wint_t towlower_l(wint_t __c, locale_t __l);
90
91
92 int strcoll_l(const char *__s1, const char *__s2, locale_t __l);
93 int wcscoll_l(const wchar_t *__s1, const wchar_t *__s2, locale_t __l);
94 size_t strftime_l(char *__s, size_t __size, const char *__fmt, const struct tm
95     *__tm, locale_t __l);
96
97 size_t strxfrm_l(char *__s1, const char *__s2, size_t __n, locale_t __l);
98
99 size_t wcsxfrm_l(wchar_t *__ws1, const wchar_t *__ws2, size_t __n,
100     locale_t __l);
101
102
103
104 size_t
105 mbsnrtowcs_l(wchar_t * __restrict dst, const char ** __restrict src,
106     size_t nms, size_t len, mbstate_t * __restrict ps, locale_t loc);
107
108
109 size_t
110 wcsnrtombs_l(char * __restrict dst, const wchar_t ** __restrict src,
111     size_t nwc, size_t len, mbstate_t * __restrict ps, locale_t loc);
112
113 locale_t __cloc(void);
114
115 // FIXME: These are quick-and-dirty hacks to make things pretend to work
116 static inline
117 long long strtoll_l(const char *__nptr, char **__endptr,
118     int __base, locale_t __loc) {
119   return strtoll(__nptr, __endptr, __base);
120 }
121 static inline
122 long strtol_l(const char *__nptr, char **__endptr,
123     int __base, locale_t __loc) {
124   return strtol(__nptr, __endptr, __base);
125 }
126 static inline
127 long double strtold_l(const char *__nptr, char **__endptr,
128     locale_t __loc) {
129   return strtold(__nptr, __endptr);
130 }
131 static inline
132 unsigned long long strtoull_l(const char *__nptr, char **__endptr,
133     int __base, locale_t __loc) {
134   return strtoull(__nptr, __endptr, __base);
135 }
136 static inline
137 unsigned long strtoul_l(const char *__nptr, char **__endptr,
138     int __base, locale_t __loc) {
139   return strtoul(__nptr, __endptr, __base);
140 }
141
142 #ifdef __cplusplus
143 }
144 #endif
145
146 #endif