summaryrefslogtreecommitdiff
path: root/include/support/xlocale/__posix_l_fallback.h
blob: c893a67313cc8f0dad6a431ef4e9531520f5e1dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
// -*- C++ -*-
//===--------------- support/xlocale/__posix_l_fallback.h -----------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// 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_ALWAYS_INLINE int isalnum_l(int c, locale_t) {
  return ::isalnum(c);
}

inline _LIBCPP_ALWAYS_INLINE int isalpha_l(int c, locale_t) {
  return ::isalpha(c);
}

inline _LIBCPP_ALWAYS_INLINE int isblank_l(int c, locale_t) {
  return ::isblank(c);
}

inline _LIBCPP_ALWAYS_INLINE int iscntrl_l(int c, locale_t) {
  return ::iscntrl(c);
}

inline _LIBCPP_ALWAYS_INLINE int isdigit_l(int c, locale_t) {
  return ::isdigit(c);
}

inline _LIBCPP_ALWAYS_INLINE int isgraph_l(int c, locale_t) {
  return ::isgraph(c);
}

inline _LIBCPP_ALWAYS_INLINE int islower_l(int c, locale_t) {
  return ::islower(c);
}

inline _LIBCPP_ALWAYS_INLINE int isprint_l(int c, locale_t) {
  return ::isprint(c);
}

inline _LIBCPP_ALWAYS_INLINE int ispunct_l(int c, locale_t) {
  return ::ispunct(c);
}

inline _LIBCPP_ALWAYS_INLINE int isspace_l(int c, locale_t) {
  return ::isspace(c);
}

inline _LIBCPP_ALWAYS_INLINE int isupper_l(int c, locale_t) {
  return ::isupper(c);
}

inline _LIBCPP_ALWAYS_INLINE int isxdigit_l(int c, locale_t) {
  return ::isxdigit(c);
}

inline _LIBCPP_ALWAYS_INLINE int iswalnum_l(wint_t c, locale_t) {
  return ::iswalnum(c);
}

inline _LIBCPP_ALWAYS_INLINE int iswalpha_l(wint_t c, locale_t) {
  return ::iswalpha(c);
}

inline _LIBCPP_ALWAYS_INLINE int iswblank_l(wint_t c, locale_t) {
  return ::iswblank(c);
}

inline _LIBCPP_ALWAYS_INLINE int iswcntrl_l(wint_t c, locale_t) {
  return ::iswcntrl(c);
}

inline _LIBCPP_ALWAYS_INLINE int iswdigit_l(wint_t c, locale_t) {
  return ::iswdigit(c);
}

inline _LIBCPP_ALWAYS_INLINE int iswgraph_l(wint_t c, locale_t) {
  return ::iswgraph(c);
}

inline _LIBCPP_ALWAYS_INLINE int iswlower_l(wint_t c, locale_t) {
  return ::iswlower(c);
}

inline _LIBCPP_ALWAYS_INLINE int iswprint_l(wint_t c, locale_t) {
  return ::iswprint(c);
}

inline _LIBCPP_ALWAYS_INLINE int iswpunct_l(wint_t c, locale_t) {
  return ::iswpunct(c);
}

inline _LIBCPP_ALWAYS_INLINE int iswspace_l(wint_t c, locale_t) {
  return ::iswspace(c);
}

inline _LIBCPP_ALWAYS_INLINE int iswupper_l(wint_t c, locale_t) {
  return ::iswupper(c);
}

inline _LIBCPP_ALWAYS_INLINE int iswxdigit_l(wint_t c, locale_t) {
  return ::iswxdigit(c);
}

inline _LIBCPP_ALWAYS_INLINE int toupper_l(int c, locale_t) {
  return ::toupper(c);
}

inline _LIBCPP_ALWAYS_INLINE int tolower_l(int c, locale_t) {
  return ::tolower(c);
}

inline _LIBCPP_ALWAYS_INLINE wint_t towupper_l(wint_t c, locale_t) {
  return ::towupper(c);
}

inline _LIBCPP_ALWAYS_INLINE wint_t towlower_l(wint_t c, locale_t) {
  return ::towlower(c);
}

inline _LIBCPP_ALWAYS_INLINE int strcoll_l(const char *s1, const char *s2,
                                           locale_t) {
  return ::strcoll(s1, s2);
}

inline _LIBCPP_ALWAYS_INLINE size_t strxfrm_l(char *dest, const char *src,
                                              size_t n, locale_t) {
  return ::strxfrm(dest, src, n);
}

inline _LIBCPP_ALWAYS_INLINE 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_ALWAYS_INLINE int wcscoll_l(const wchar_t *ws1,
                                           const wchar_t *ws2, locale_t) {
  return ::wcscoll(ws1, ws2);
}

inline _LIBCPP_ALWAYS_INLINE 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