1 // -*- C++ -*-
2 //===-----------------------------------------------------------------------===//
3 //
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //
8 //===----------------------------------------------------------------------===//
9 // These are reimplementations of some extended locale functions ( *_l ) that
10 // are normally part of POSIX. This shared implementation provides parts of the
11 // extended locale support for libc's that normally don't have any (like
12 // Android's bionic and Newlib).
13 //===----------------------------------------------------------------------===//
14
15 #ifndef _LIBCPP_SUPPORT_XLOCALE_POSIX_L_FALLBACK_H
16 #define _LIBCPP_SUPPORT_XLOCALE_POSIX_L_FALLBACK_H
17
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21
isalnum_l(int c,locale_t)22 inline _LIBCPP_INLINE_VISIBILITY int isalnum_l(int c, locale_t) {
23 return ::isalnum(c);
24 }
25
isalpha_l(int c,locale_t)26 inline _LIBCPP_INLINE_VISIBILITY int isalpha_l(int c, locale_t) {
27 return ::isalpha(c);
28 }
29
isblank_l(int c,locale_t)30 inline _LIBCPP_INLINE_VISIBILITY int isblank_l(int c, locale_t) {
31 return ::isblank(c);
32 }
33
iscntrl_l(int c,locale_t)34 inline _LIBCPP_INLINE_VISIBILITY int iscntrl_l(int c, locale_t) {
35 return ::iscntrl(c);
36 }
37
isdigit_l(int c,locale_t)38 inline _LIBCPP_INLINE_VISIBILITY int isdigit_l(int c, locale_t) {
39 return ::isdigit(c);
40 }
41
isgraph_l(int c,locale_t)42 inline _LIBCPP_INLINE_VISIBILITY int isgraph_l(int c, locale_t) {
43 return ::isgraph(c);
44 }
45
islower_l(int c,locale_t)46 inline _LIBCPP_INLINE_VISIBILITY int islower_l(int c, locale_t) {
47 return ::islower(c);
48 }
49
isprint_l(int c,locale_t)50 inline _LIBCPP_INLINE_VISIBILITY int isprint_l(int c, locale_t) {
51 return ::isprint(c);
52 }
53
ispunct_l(int c,locale_t)54 inline _LIBCPP_INLINE_VISIBILITY int ispunct_l(int c, locale_t) {
55 return ::ispunct(c);
56 }
57
isspace_l(int c,locale_t)58 inline _LIBCPP_INLINE_VISIBILITY int isspace_l(int c, locale_t) {
59 return ::isspace(c);
60 }
61
isupper_l(int c,locale_t)62 inline _LIBCPP_INLINE_VISIBILITY int isupper_l(int c, locale_t) {
63 return ::isupper(c);
64 }
65
isxdigit_l(int c,locale_t)66 inline _LIBCPP_INLINE_VISIBILITY int isxdigit_l(int c, locale_t) {
67 return ::isxdigit(c);
68 }
69
iswalnum_l(wint_t c,locale_t)70 inline _LIBCPP_INLINE_VISIBILITY int iswalnum_l(wint_t c, locale_t) {
71 return ::iswalnum(c);
72 }
73
iswalpha_l(wint_t c,locale_t)74 inline _LIBCPP_INLINE_VISIBILITY int iswalpha_l(wint_t c, locale_t) {
75 return ::iswalpha(c);
76 }
77
iswblank_l(wint_t c,locale_t)78 inline _LIBCPP_INLINE_VISIBILITY int iswblank_l(wint_t c, locale_t) {
79 return ::iswblank(c);
80 }
81
iswcntrl_l(wint_t c,locale_t)82 inline _LIBCPP_INLINE_VISIBILITY int iswcntrl_l(wint_t c, locale_t) {
83 return ::iswcntrl(c);
84 }
85
iswdigit_l(wint_t c,locale_t)86 inline _LIBCPP_INLINE_VISIBILITY int iswdigit_l(wint_t c, locale_t) {
87 return ::iswdigit(c);
88 }
89
iswgraph_l(wint_t c,locale_t)90 inline _LIBCPP_INLINE_VISIBILITY int iswgraph_l(wint_t c, locale_t) {
91 return ::iswgraph(c);
92 }
93
iswlower_l(wint_t c,locale_t)94 inline _LIBCPP_INLINE_VISIBILITY int iswlower_l(wint_t c, locale_t) {
95 return ::iswlower(c);
96 }
97
iswprint_l(wint_t c,locale_t)98 inline _LIBCPP_INLINE_VISIBILITY int iswprint_l(wint_t c, locale_t) {
99 return ::iswprint(c);
100 }
101
iswpunct_l(wint_t c,locale_t)102 inline _LIBCPP_INLINE_VISIBILITY int iswpunct_l(wint_t c, locale_t) {
103 return ::iswpunct(c);
104 }
105
iswspace_l(wint_t c,locale_t)106 inline _LIBCPP_INLINE_VISIBILITY int iswspace_l(wint_t c, locale_t) {
107 return ::iswspace(c);
108 }
109
iswupper_l(wint_t c,locale_t)110 inline _LIBCPP_INLINE_VISIBILITY int iswupper_l(wint_t c, locale_t) {
111 return ::iswupper(c);
112 }
113
iswxdigit_l(wint_t c,locale_t)114 inline _LIBCPP_INLINE_VISIBILITY int iswxdigit_l(wint_t c, locale_t) {
115 return ::iswxdigit(c);
116 }
117
toupper_l(int c,locale_t)118 inline _LIBCPP_INLINE_VISIBILITY int toupper_l(int c, locale_t) {
119 return ::toupper(c);
120 }
121
tolower_l(int c,locale_t)122 inline _LIBCPP_INLINE_VISIBILITY int tolower_l(int c, locale_t) {
123 return ::tolower(c);
124 }
125
towupper_l(wint_t c,locale_t)126 inline _LIBCPP_INLINE_VISIBILITY wint_t towupper_l(wint_t c, locale_t) {
127 return ::towupper(c);
128 }
129
towlower_l(wint_t c,locale_t)130 inline _LIBCPP_INLINE_VISIBILITY wint_t towlower_l(wint_t c, locale_t) {
131 return ::towlower(c);
132 }
133
strcoll_l(const char * s1,const char * s2,locale_t)134 inline _LIBCPP_INLINE_VISIBILITY int strcoll_l(const char *s1, const char *s2,
135 locale_t) {
136 return ::strcoll(s1, s2);
137 }
138
strxfrm_l(char * dest,const char * src,size_t n,locale_t)139 inline _LIBCPP_INLINE_VISIBILITY size_t strxfrm_l(char *dest, const char *src,
140 size_t n, locale_t) {
141 return ::strxfrm(dest, src, n);
142 }
143
strftime_l(char * s,size_t max,const char * format,const struct tm * tm,locale_t)144 inline _LIBCPP_INLINE_VISIBILITY size_t strftime_l(char *s, size_t max,
145 const char *format,
146 const struct tm *tm, locale_t) {
147 return ::strftime(s, max, format, tm);
148 }
149
wcscoll_l(const wchar_t * ws1,const wchar_t * ws2,locale_t)150 inline _LIBCPP_INLINE_VISIBILITY int wcscoll_l(const wchar_t *ws1,
151 const wchar_t *ws2, locale_t) {
152 return ::wcscoll(ws1, ws2);
153 }
154
wcsxfrm_l(wchar_t * dest,const wchar_t * src,size_t n,locale_t)155 inline _LIBCPP_INLINE_VISIBILITY size_t wcsxfrm_l(wchar_t *dest, const wchar_t *src,
156 size_t n, locale_t) {
157 return ::wcsxfrm(dest, src, n);
158 }
159
160 #ifdef __cplusplus
161 }
162 #endif
163
164 #endif // _LIBCPP_SUPPORT_XLOCALE_POSIX_L_FALLBACK_H
165