| // -*- C++ -*- |
| //===-----------------------------------------------------------------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| // These are reimplementations of some extended locale functions ( *_l ) that |
| // are normally part of POSIX. This shared implementation provides parts of the |
| // extended locale support for libc's that normally don't have any (like |
| // Android's bionic and Newlib). |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef _LIBCPP_SUPPORT_XLOCALE_POSIX_L_FALLBACK_H |
| #define _LIBCPP_SUPPORT_XLOCALE_POSIX_L_FALLBACK_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| inline _LIBCPP_INLINE_VISIBILITY int isalnum_l(int c, locale_t) { |
| return ::isalnum(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int isalpha_l(int c, locale_t) { |
| return ::isalpha(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int isblank_l(int c, locale_t) { |
| return ::isblank(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int iscntrl_l(int c, locale_t) { |
| return ::iscntrl(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int isdigit_l(int c, locale_t) { |
| return ::isdigit(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int isgraph_l(int c, locale_t) { |
| return ::isgraph(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int islower_l(int c, locale_t) { |
| return ::islower(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int isprint_l(int c, locale_t) { |
| return ::isprint(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int ispunct_l(int c, locale_t) { |
| return ::ispunct(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int isspace_l(int c, locale_t) { |
| return ::isspace(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int isupper_l(int c, locale_t) { |
| return ::isupper(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int isxdigit_l(int c, locale_t) { |
| return ::isxdigit(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int iswalnum_l(wint_t c, locale_t) { |
| return ::iswalnum(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int iswalpha_l(wint_t c, locale_t) { |
| return ::iswalpha(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int iswblank_l(wint_t c, locale_t) { |
| return ::iswblank(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int iswcntrl_l(wint_t c, locale_t) { |
| return ::iswcntrl(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int iswdigit_l(wint_t c, locale_t) { |
| return ::iswdigit(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int iswgraph_l(wint_t c, locale_t) { |
| return ::iswgraph(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int iswlower_l(wint_t c, locale_t) { |
| return ::iswlower(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int iswprint_l(wint_t c, locale_t) { |
| return ::iswprint(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int iswpunct_l(wint_t c, locale_t) { |
| return ::iswpunct(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int iswspace_l(wint_t c, locale_t) { |
| return ::iswspace(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int iswupper_l(wint_t c, locale_t) { |
| return ::iswupper(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int iswxdigit_l(wint_t c, locale_t) { |
| return ::iswxdigit(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int toupper_l(int c, locale_t) { |
| return ::toupper(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int tolower_l(int c, locale_t) { |
| return ::tolower(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY wint_t towupper_l(wint_t c, locale_t) { |
| return ::towupper(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY wint_t towlower_l(wint_t c, locale_t) { |
| return ::towlower(c); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int strcoll_l(const char *s1, const char *s2, |
| locale_t) { |
| return ::strcoll(s1, s2); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY size_t strxfrm_l(char *dest, const char *src, |
| size_t n, locale_t) { |
| return ::strxfrm(dest, src, n); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY size_t strftime_l(char *s, size_t max, |
| const char *format, |
| const struct tm *tm, locale_t) { |
| return ::strftime(s, max, format, tm); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY int wcscoll_l(const wchar_t *ws1, |
| const wchar_t *ws2, locale_t) { |
| return ::wcscoll(ws1, ws2); |
| } |
| |
| inline _LIBCPP_INLINE_VISIBILITY size_t wcsxfrm_l(wchar_t *dest, const wchar_t *src, |
| size_t n, locale_t) { |
| return ::wcsxfrm(dest, src, n); |
| } |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif // _LIBCPP_SUPPORT_XLOCALE_POSIX_L_FALLBACK_H |