1// -*- C++ -*- 2//===--------------- support/xlocale/__posix_l_fallback.h -----------------===// 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 19extern "C" { 20#endif 21 22inline _LIBCPP_INLINE_VISIBILITY int isalnum_l(int c, locale_t) { 23 return ::isalnum(c); 24} 25 26inline _LIBCPP_INLINE_VISIBILITY int isalpha_l(int c, locale_t) { 27 return ::isalpha(c); 28} 29 30inline _LIBCPP_INLINE_VISIBILITY int isblank_l(int c, locale_t) { 31 return ::isblank(c); 32} 33 34inline _LIBCPP_INLINE_VISIBILITY int iscntrl_l(int c, locale_t) { 35 return ::iscntrl(c); 36} 37 38inline _LIBCPP_INLINE_VISIBILITY int isdigit_l(int c, locale_t) { 39 return ::isdigit(c); 40} 41 42inline _LIBCPP_INLINE_VISIBILITY int isgraph_l(int c, locale_t) { 43 return ::isgraph(c); 44} 45 46inline _LIBCPP_INLINE_VISIBILITY int islower_l(int c, locale_t) { 47 return ::islower(c); 48} 49 50inline _LIBCPP_INLINE_VISIBILITY int isprint_l(int c, locale_t) { 51 return ::isprint(c); 52} 53 54inline _LIBCPP_INLINE_VISIBILITY int ispunct_l(int c, locale_t) { 55 return ::ispunct(c); 56} 57 58inline _LIBCPP_INLINE_VISIBILITY int isspace_l(int c, locale_t) { 59 return ::isspace(c); 60} 61 62inline _LIBCPP_INLINE_VISIBILITY int isupper_l(int c, locale_t) { 63 return ::isupper(c); 64} 65 66inline _LIBCPP_INLINE_VISIBILITY int isxdigit_l(int c, locale_t) { 67 return ::isxdigit(c); 68} 69 70inline _LIBCPP_INLINE_VISIBILITY int iswalnum_l(wint_t c, locale_t) { 71 return ::iswalnum(c); 72} 73 74inline _LIBCPP_INLINE_VISIBILITY int iswalpha_l(wint_t c, locale_t) { 75 return ::iswalpha(c); 76} 77 78inline _LIBCPP_INLINE_VISIBILITY int iswblank_l(wint_t c, locale_t) { 79 return ::iswblank(c); 80} 81 82inline _LIBCPP_INLINE_VISIBILITY int iswcntrl_l(wint_t c, locale_t) { 83 return ::iswcntrl(c); 84} 85 86inline _LIBCPP_INLINE_VISIBILITY int iswdigit_l(wint_t c, locale_t) { 87 return ::iswdigit(c); 88} 89 90inline _LIBCPP_INLINE_VISIBILITY int iswgraph_l(wint_t c, locale_t) { 91 return ::iswgraph(c); 92} 93 94inline _LIBCPP_INLINE_VISIBILITY int iswlower_l(wint_t c, locale_t) { 95 return ::iswlower(c); 96} 97 98inline _LIBCPP_INLINE_VISIBILITY int iswprint_l(wint_t c, locale_t) { 99 return ::iswprint(c); 100} 101 102inline _LIBCPP_INLINE_VISIBILITY int iswpunct_l(wint_t c, locale_t) { 103 return ::iswpunct(c); 104} 105 106inline _LIBCPP_INLINE_VISIBILITY int iswspace_l(wint_t c, locale_t) { 107 return ::iswspace(c); 108} 109 110inline _LIBCPP_INLINE_VISIBILITY int iswupper_l(wint_t c, locale_t) { 111 return ::iswupper(c); 112} 113 114inline _LIBCPP_INLINE_VISIBILITY int iswxdigit_l(wint_t c, locale_t) { 115 return ::iswxdigit(c); 116} 117 118inline _LIBCPP_INLINE_VISIBILITY int toupper_l(int c, locale_t) { 119 return ::toupper(c); 120} 121 122inline _LIBCPP_INLINE_VISIBILITY int tolower_l(int c, locale_t) { 123 return ::tolower(c); 124} 125 126inline _LIBCPP_INLINE_VISIBILITY wint_t towupper_l(wint_t c, locale_t) { 127 return ::towupper(c); 128} 129 130inline _LIBCPP_INLINE_VISIBILITY wint_t towlower_l(wint_t c, locale_t) { 131 return ::towlower(c); 132} 133 134inline _LIBCPP_INLINE_VISIBILITY int strcoll_l(const char *s1, const char *s2, 135 locale_t) { 136 return ::strcoll(s1, s2); 137} 138 139inline _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 144inline _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 150inline _LIBCPP_INLINE_VISIBILITY int wcscoll_l(const wchar_t *ws1, 151 const wchar_t *ws2, locale_t) { 152 return ::wcscoll(ws1, ws2); 153} 154 155inline _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