diff options
Diffstat (limited to 'system/include/libcxx/support/solaris/xlocale.h')
-rw-r--r-- | system/include/libcxx/support/solaris/xlocale.h | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/system/include/libcxx/support/solaris/xlocale.h b/system/include/libcxx/support/solaris/xlocale.h new file mode 100644 index 00000000..359508d9 --- /dev/null +++ b/system/include/libcxx/support/solaris/xlocale.h @@ -0,0 +1,146 @@ +//////////////////////////////////////////////////////////////////////////////// +// Minimal xlocale implementation for Solaris. This implements the subset of +// the xlocale APIs that libc++ depends on. +//////////////////////////////////////////////////////////////////////////////// +#ifndef __XLOCALE_H_INCLUDED +#define __XLOCALE_H_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef struct _LC_locale_t* locale_t; + +#define LC_COLLATE_MASK (1<<0) +#define LC_CTYPE_MASK (1<<1) +#define LC_MESSAGES_MASK (1<<2) +#define LC_MONETARY_MASK (1<<3) +#define LC_NUMERIC_MASK (1<<4) +#define LC_TIME_MASK (1<<5) +#define LC_ALL_MASK (LC_COLLATE_MASK | LC_CTYPE_MASK | LC_MESSAGES_MASK | \ + LC_MONETARY_MASK | LC_NUMERIC_MASK | LC_TIME_MASK) + +#define LC_GLOBAL_LOCALE ((locale_t)-1) + +size_t __mb_cur_max(locale_t l); +#define MB_CUR_MAX_L(l) __mb_cur_max(l) + +locale_t newlocale(int mask, const char * locale, locale_t base); +void freelocale(locale_t loc); + +wint_t btowc_l(int __c, locale_t __l); + +int wctob_l(wint_t __c, locale_t __l); + +size_t wcrtomb_l(char *__s, wchar_t __wc, mbstate_t *__ps, locale_t __l); + +size_t mbrtowc_l(wchar_t *__pwc, const char *__s, size_t __n, + mbstate_t *__ps, locale_t __l); + +int mbtowc_l(wchar_t *__pwc, const char *__pmb, size_t __max, locale_t __l); + +size_t mbrlen_l(const char *__s, size_t __n, mbstate_t *__ps, locale_t __l); + +struct lconv *localeconv_l(locale_t __l); + +size_t mbsrtowcs_l(wchar_t *__dest, const char **__src, size_t __len, + mbstate_t *__ps, locale_t __l); + +int sprintf_l(char *__s, locale_t __l, const char *__format, ...); + +int snprintf_l(char *__s, size_t __n, locale_t __l, const char *__format, ...); + +int asprintf_l(char **__s, locale_t __l, const char *__format, ...); + +int sscanf_l(const char *__s, locale_t __l, const char *__format, ...); + +int isalnum_l(int,locale_t); +int isalpha_l(int,locale_t); +int isblank_l(int,locale_t); +int iscntrl_l(int,locale_t); +int isdigit_l(int,locale_t); +int isgraph_l(int,locale_t); +int islower_l(int,locale_t); +int isprint_l(int,locale_t); +int ispunct_l(int,locale_t); +int isspace_l(int,locale_t); +int isupper_l(int,locale_t); +int isxdigit_l(int,locale_t); + +int iswalnum_l(wchar_t,locale_t); +int iswalpha_l(wchar_t,locale_t); +int iswblank_l(wchar_t,locale_t); +int iswcntrl_l(wchar_t,locale_t); +int iswdigit_l(wchar_t,locale_t); +int iswgraph_l(wchar_t,locale_t); +int iswlower_l(wchar_t,locale_t); +int iswprint_l(wchar_t,locale_t); +int iswpunct_l(wchar_t,locale_t); +int iswspace_l(wchar_t,locale_t); +int iswupper_l(wchar_t,locale_t); +int iswxdigit_l(wchar_t,locale_t); + +int iswctype_l(wint_t, wctype_t, locale_t); + +int toupper_l(int __c, locale_t __l); +int tolower_l(int __c, locale_t __l); +wint_t towupper_l(wint_t __c, locale_t __l); +wint_t towlower_l(wint_t __c, locale_t __l); + + +int strcoll_l(const char *__s1, const char *__s2, locale_t __l); +int wcscoll_l(const wchar_t *__s1, const wchar_t *__s2, locale_t __l); +size_t strftime_l(char *__s, size_t __size, const char *__fmt, const struct tm + *__tm, locale_t __l); + +size_t strxfrm_l(char *__s1, const char *__s2, size_t __n, locale_t __l); + +size_t wcsxfrm_l(wchar_t *__ws1, const wchar_t *__ws2, size_t __n, + locale_t __l); + + + +size_t +mbsnrtowcs_l(wchar_t * __restrict dst, const char ** __restrict src, + size_t nms, size_t len, mbstate_t * __restrict ps, locale_t loc); + + +size_t +wcsnrtombs_l(char * __restrict dst, const wchar_t ** __restrict src, + size_t nwc, size_t len, mbstate_t * __restrict ps, locale_t loc); + +locale_t __cloc(void); + +// FIXME: These are quick-and-dirty hacks to make things pretend to work +static inline +long long strtoll_l(const char *__nptr, char **__endptr, + int __base, locale_t __loc) { + return strtoll(__nptr, __endptr, __base); +} +static inline +long strtol_l(const char *__nptr, char **__endptr, + int __base, locale_t __loc) { + return strtol(__nptr, __endptr, __base); +} +static inline +long double strtold_l(const char *__nptr, char **__endptr, + locale_t __loc) { + return strtold(__nptr, __endptr); +} +static inline +unsigned long long strtoull_l(const char *__nptr, char **__endptr, + int __base, locale_t __loc) { + return strtoull(__nptr, __endptr, __base); +} +static inline +unsigned long strtoul_l(const char *__nptr, char **__endptr, + int __base, locale_t __loc) { + return strtoul(__nptr, __endptr, __base); +} + +#ifdef __cplusplus +} +#endif + +#endif |