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