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_HIDE_FROM_ABI int isalnum_l(int __c, locale_t) {
23   return ::isalnum(__c);
24 }
25 
isalpha_l(int __c,locale_t)26 inline _LIBCPP_HIDE_FROM_ABI int isalpha_l(int __c, locale_t) {
27   return ::isalpha(__c);
28 }
29 
isblank_l(int __c,locale_t)30 inline _LIBCPP_HIDE_FROM_ABI int isblank_l(int __c, locale_t) {
31   return ::isblank(__c);
32 }
33 
iscntrl_l(int __c,locale_t)34 inline _LIBCPP_HIDE_FROM_ABI int iscntrl_l(int __c, locale_t) {
35   return ::iscntrl(__c);
36 }
37 
isdigit_l(int __c,locale_t)38 inline _LIBCPP_HIDE_FROM_ABI int isdigit_l(int __c, locale_t) {
39   return ::isdigit(__c);
40 }
41 
isgraph_l(int __c,locale_t)42 inline _LIBCPP_HIDE_FROM_ABI int isgraph_l(int __c, locale_t) {
43   return ::isgraph(__c);
44 }
45 
islower_l(int __c,locale_t)46 inline _LIBCPP_HIDE_FROM_ABI int islower_l(int __c, locale_t) {
47   return ::islower(__c);
48 }
49 
isprint_l(int __c,locale_t)50 inline _LIBCPP_HIDE_FROM_ABI int isprint_l(int __c, locale_t) {
51   return ::isprint(__c);
52 }
53 
ispunct_l(int __c,locale_t)54 inline _LIBCPP_HIDE_FROM_ABI int ispunct_l(int __c, locale_t) {
55   return ::ispunct(__c);
56 }
57 
isspace_l(int __c,locale_t)58 inline _LIBCPP_HIDE_FROM_ABI int isspace_l(int __c, locale_t) {
59   return ::isspace(__c);
60 }
61 
isupper_l(int __c,locale_t)62 inline _LIBCPP_HIDE_FROM_ABI int isupper_l(int __c, locale_t) {
63   return ::isupper(__c);
64 }
65 
isxdigit_l(int __c,locale_t)66 inline _LIBCPP_HIDE_FROM_ABI int isxdigit_l(int __c, locale_t) {
67   return ::isxdigit(__c);
68 }
69 
iswalnum_l(wint_t __c,locale_t)70 inline _LIBCPP_HIDE_FROM_ABI int iswalnum_l(wint_t __c, locale_t) {
71   return ::iswalnum(__c);
72 }
73 
iswalpha_l(wint_t __c,locale_t)74 inline _LIBCPP_HIDE_FROM_ABI int iswalpha_l(wint_t __c, locale_t) {
75   return ::iswalpha(__c);
76 }
77 
iswblank_l(wint_t __c,locale_t)78 inline _LIBCPP_HIDE_FROM_ABI int iswblank_l(wint_t __c, locale_t) {
79   return ::iswblank(__c);
80 }
81 
iswcntrl_l(wint_t __c,locale_t)82 inline _LIBCPP_HIDE_FROM_ABI int iswcntrl_l(wint_t __c, locale_t) {
83   return ::iswcntrl(__c);
84 }
85 
iswdigit_l(wint_t __c,locale_t)86 inline _LIBCPP_HIDE_FROM_ABI int iswdigit_l(wint_t __c, locale_t) {
87   return ::iswdigit(__c);
88 }
89 
iswgraph_l(wint_t __c,locale_t)90 inline _LIBCPP_HIDE_FROM_ABI int iswgraph_l(wint_t __c, locale_t) {
91   return ::iswgraph(__c);
92 }
93 
iswlower_l(wint_t __c,locale_t)94 inline _LIBCPP_HIDE_FROM_ABI int iswlower_l(wint_t __c, locale_t) {
95   return ::iswlower(__c);
96 }
97 
iswprint_l(wint_t __c,locale_t)98 inline _LIBCPP_HIDE_FROM_ABI int iswprint_l(wint_t __c, locale_t) {
99   return ::iswprint(__c);
100 }
101 
iswpunct_l(wint_t __c,locale_t)102 inline _LIBCPP_HIDE_FROM_ABI int iswpunct_l(wint_t __c, locale_t) {
103   return ::iswpunct(__c);
104 }
105 
iswspace_l(wint_t __c,locale_t)106 inline _LIBCPP_HIDE_FROM_ABI int iswspace_l(wint_t __c, locale_t) {
107   return ::iswspace(__c);
108 }
109 
iswupper_l(wint_t __c,locale_t)110 inline _LIBCPP_HIDE_FROM_ABI int iswupper_l(wint_t __c, locale_t) {
111   return ::iswupper(__c);
112 }
113 
iswxdigit_l(wint_t __c,locale_t)114 inline _LIBCPP_HIDE_FROM_ABI int iswxdigit_l(wint_t __c, locale_t) {
115   return ::iswxdigit(__c);
116 }
117 
toupper_l(int __c,locale_t)118 inline _LIBCPP_HIDE_FROM_ABI int toupper_l(int __c, locale_t) {
119   return ::toupper(__c);
120 }
121 
tolower_l(int __c,locale_t)122 inline _LIBCPP_HIDE_FROM_ABI int tolower_l(int __c, locale_t) {
123   return ::tolower(__c);
124 }
125 
towupper_l(wint_t __c,locale_t)126 inline _LIBCPP_HIDE_FROM_ABI 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_HIDE_FROM_ABI wint_t towlower_l(wint_t __c, locale_t) {
131   return ::towlower(__c);
132 }
133 
134 inline _LIBCPP_HIDE_FROM_ABI int
strcoll_l(const char * __s1,const char * __s2,locale_t)135 strcoll_l(const char *__s1, const char *__s2, locale_t) {
136   return ::strcoll(__s1, __s2);
137 }
138 
139 inline _LIBCPP_HIDE_FROM_ABI size_t
strxfrm_l(char * __dest,const char * __src,size_t __n,locale_t)140 strxfrm_l(char *__dest, const char *__src, size_t __n, locale_t) {
141   return ::strxfrm(__dest, __src, __n);
142 }
143 
144 inline _LIBCPP_HIDE_FROM_ABI size_t
strftime_l(char * __s,size_t __max,const char * __format,const struct tm * __tm,locale_t)145 strftime_l(char *__s, size_t __max, const char *__format, const struct tm *__tm,
146            locale_t) {
147   return ::strftime(__s, __max, __format, __tm);
148 }
149 
150 inline _LIBCPP_HIDE_FROM_ABI int
wcscoll_l(const wchar_t * __ws1,const wchar_t * __ws2,locale_t)151 wcscoll_l(const wchar_t *__ws1, const wchar_t *__ws2, locale_t) {
152   return ::wcscoll(__ws1, __ws2);
153 }
154 
155 inline _LIBCPP_HIDE_FROM_ABI size_t
wcsxfrm_l(wchar_t * __dest,const wchar_t * __src,size_t __n,locale_t)156 wcsxfrm_l(wchar_t *__dest, const wchar_t *__src, 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