Skip to content

Commit d3ee5e9

Browse files
committed
Rename __ prefix to __libcpp_ for locale related functions to eliminate name collition with macors in system locale.h header
1 parent 788d5a5 commit d3ee5e9

File tree

6 files changed

+186
-130
lines changed

6 files changed

+186
-130
lines changed

clang/lib/Headers/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,7 @@ set(llvm_libc_wrapper_files
381381

382382
set(zos_wrapper_files
383383
zos_wrappers/builtins.h
384+
zos_wrappers/locale.h
384385
)
385386

386387
include(GetClangResourceDir)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*===----------------------------- locale.h ----------------------------------===
2+
*
3+
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
* See https://llvm.org/LICENSE.txt for license information.
5+
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
*
7+
*===-------------------------------------------------------------------------===
8+
*/
9+
10+
#ifndef __ZOS_WRAPPERS_LOCALE_H
11+
#define __ZOS_WRAPPERS_LOCALE_H
12+
#if defined(__MVS__)
13+
#include_next <locale.h>
14+
#ifdef __locale
15+
#undef __locale
16+
#define __locale __locale
17+
#endif
18+
#endif /* defined(__MVS__) */
19+
#endif /* __ZOS_WRAPPERS_LOCALE_H */

libcxx/include/__locale_dir/locale_base_api.h

Lines changed: 61 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -39,41 +39,41 @@
3939
// Strtonum functions
4040
// ------------------
4141
// namespace __locale {
42-
// float __strtof(const char*, char**, __locale_t);
43-
// double __strtod(const char*, char**, __locale_t);
44-
// long double __strtold(const char*, char**, __locale_t);
45-
// long long __strtoll(const char*, char**, __locale_t);
46-
// unsigned long long __strtoull(const char*, char**, __locale_t);
42+
// float __libcpp_strtof(const char*, char**, __locale_t);
43+
// double __libcpp_strtod(const char*, char**, __locale_t);
44+
// long double __libcpp_strtold(const char*, char**, __locale_t);
45+
// long long __libcpp_strtoll(const char*, char**, __locale_t);
46+
// unsigned long long __libcpp_strtoull(const char*, char**, __locale_t);
4747
// }
4848
//
4949
// Character manipulation functions
5050
// --------------------------------
5151
// namespace __locale {
52-
// int __islower(int, __locale_t);
53-
// int __isupper(int, __locale_t);
54-
// int __isdigit(int, __locale_t);
55-
// int __isxdigit(int, __locale_t);
56-
// int __toupper(int, __locale_t);
57-
// int __tolower(int, __locale_t);
58-
// int __strcoll(const char*, const char*, __locale_t);
59-
// size_t __strxfrm(char*, const char*, size_t, __locale_t);
52+
// int __libcpp_islower(int, __locale_t);
53+
// int __libcpp_isupper(int, __locale_t);
54+
// int __libcpp_isdigit(int, __locale_t);
55+
// int __libcpp_isxdigit(int, __locale_t);
56+
// int __libcpp_toupper(int, __locale_t);
57+
// int __libcpp_tolower(int, __locale_t);
58+
// int __libcpp_strcoll(const char*, const char*, __locale_t);
59+
// size_t __libcpp_strxfrm(char*, const char*, size_t, __locale_t);
6060
//
61-
// int __iswspace(wint_t, __locale_t);
62-
// int __iswprint(wint_t, __locale_t);
63-
// int __iswcntrl(wint_t, __locale_t);
64-
// int __iswupper(wint_t, __locale_t);
65-
// int __iswlower(wint_t, __locale_t);
66-
// int __iswalpha(wint_t, __locale_t);
67-
// int __iswblank(wint_t, __locale_t);
68-
// int __iswdigit(wint_t, __locale_t);
69-
// int __iswpunct(wint_t, __locale_t);
70-
// int __iswxdigit(wint_t, __locale_t);
71-
// wint_t __towupper(wint_t, __locale_t);
72-
// wint_t __towlower(wint_t, __locale_t);
73-
// int __wcscoll(const wchar_t*, const wchar_t*, __locale_t);
74-
// size_t __wcsxfrm(wchar_t*, const wchar_t*, size_t, __locale_t);
61+
// int __libcpp_iswspace(wint_t, __locale_t);
62+
// int __libcpp_iswprint(wint_t, __locale_t);
63+
// int __libcpp_iswcntrl(wint_t, __locale_t);
64+
// int __libcpp_iswupper(wint_t, __locale_t);
65+
// int __libcpp_iswlower(wint_t, __locale_t);
66+
// int __libcpp_iswalpha(wint_t, __locale_t);
67+
// int __libcpp_iswblank(wint_t, __locale_t);
68+
// int __libcpp_iswdigit(wint_t, __locale_t);
69+
// int __libcpp_iswpunct(wint_t, __locale_t);
70+
// int __libcpp_iswxdigit(wint_t, __locale_t);
71+
// wint_t __libcpp_towupper(wint_t, __locale_t);
72+
// wint_t __libcpp_towlower(wint_t, __locale_t);
73+
// int __libcpp_wcscoll(const wchar_t*, const wchar_t*, __locale_t);
74+
// size_t __libcpp_wcsxfrm(wchar_t*, const wchar_t*, size_t, __locale_t);
7575
//
76-
// size_t __strftime(char*, size_t, const char*, const tm*, __locale_t);
76+
// size_t __libcpp_strftime(char*, size_t, const char*, const tm*, __locale_t);
7777
// }
7878
//
7979
// Other functions
@@ -154,68 +154,71 @@ inline _LIBCPP_HIDE_FROM_ABI lconv* __localeconv(__locale_t& __loc) { return __l
154154
//
155155
// Strtonum functions
156156
//
157-
inline _LIBCPP_HIDE_FROM_ABI float __strtof(const char* __nptr, char** __endptr, __locale_t __loc) {
157+
inline _LIBCPP_HIDE_FROM_ABI float __libcpp_strtof(const char* __nptr, char** __endptr, __locale_t __loc) {
158158
return strtof_l(__nptr, __endptr, __loc);
159159
}
160160

161-
inline _LIBCPP_HIDE_FROM_ABI double __strtod(const char* __nptr, char** __endptr, __locale_t __loc) {
161+
inline _LIBCPP_HIDE_FROM_ABI double __libcpp_strtod(const char* __nptr, char** __endptr, __locale_t __loc) {
162162
return strtod_l(__nptr, __endptr, __loc);
163163
}
164164

165-
inline _LIBCPP_HIDE_FROM_ABI long double __strtold(const char* __nptr, char** __endptr, __locale_t __loc) {
165+
inline _LIBCPP_HIDE_FROM_ABI long double __libcpp_strtold(const char* __nptr, char** __endptr, __locale_t __loc) {
166166
return strtold_l(__nptr, __endptr, __loc);
167167
}
168168

169-
inline _LIBCPP_HIDE_FROM_ABI long long __strtoll(const char* __nptr, char** __endptr, int __base, __locale_t __loc) {
169+
inline _LIBCPP_HIDE_FROM_ABI long long __libcpp_strtoll(const char* __nptr, char** __endptr, int __base, __locale_t __loc) {
170170
return strtoll_l(__nptr, __endptr, __base, __loc);
171171
}
172172

173173
inline _LIBCPP_HIDE_FROM_ABI unsigned long long
174-
__strtoull(const char* __nptr, char** __endptr, int __base, __locale_t __loc) {
174+
__libcpp_strtoull(const char* __nptr, char** __endptr, int __base, __locale_t __loc) {
175175
return strtoull_l(__nptr, __endptr, __base, __loc);
176176
}
177177

178+
# if defined(__MVS__)
179+
using namespace __ibm;
180+
# endif
181+
178182
//
179183
// Character manipulation functions
180184
//
181-
inline _LIBCPP_HIDE_FROM_ABI int __islower(int __ch, __locale_t __loc) { return islower_l(__ch, __loc); }
182-
inline _LIBCPP_HIDE_FROM_ABI int __isupper(int __ch, __locale_t __loc) { return isupper_l(__ch, __loc); }
183-
inline _LIBCPP_HIDE_FROM_ABI int __isdigit(int __ch, __locale_t __loc) { return isdigit_l(__ch, __loc); }
184-
inline _LIBCPP_HIDE_FROM_ABI int __isxdigit(int __ch, __locale_t __loc) { return isxdigit_l(__ch, __loc); }
185-
inline _LIBCPP_HIDE_FROM_ABI int __strcoll(const char* __s1, const char* __s2, __locale_t __loc) {
185+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_islower(int __ch, __locale_t __loc) { return islower_l(__ch, __loc); }
186+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_isupper(int __ch, __locale_t __loc) { return isupper_l(__ch, __loc); }
187+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_isdigit(int __ch, __locale_t __loc) { return isdigit_l(__ch, __loc); }
188+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_isxdigit(int __ch, __locale_t __loc) { return isxdigit_l(__ch, __loc); }
189+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_strcoll(const char* __s1, const char* __s2, __locale_t __loc) {
186190
return strcoll_l(__s1, __s2, __loc);
187191
}
188-
inline _LIBCPP_HIDE_FROM_ABI size_t __strxfrm(char* __dest, const char* __src, size_t __n, __locale_t __loc) {
192+
inline _LIBCPP_HIDE_FROM_ABI size_t __libcpp_strxfrm(char* __dest, const char* __src, size_t __n, __locale_t __loc) {
189193
return strxfrm_l(__dest, __src, __n, __loc);
190194
}
191-
inline _LIBCPP_HIDE_FROM_ABI int __toupper(int __ch, __locale_t __loc) { return toupper_l(__ch, __loc); }
192-
inline _LIBCPP_HIDE_FROM_ABI int __tolower(int __ch, __locale_t __loc) { return tolower_l(__ch, __loc); }
195+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_toupper(int __ch, __locale_t __loc) { return toupper_l(__ch, __loc); }
196+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_tolower(int __ch, __locale_t __loc) { return tolower_l(__ch, __loc); }
193197

194198
# if _LIBCPP_HAS_WIDE_CHARACTERS
195-
inline _LIBCPP_HIDE_FROM_ABI int __wcscoll(const wchar_t* __s1, const wchar_t* __s2, __locale_t __loc) {
199+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_wcscoll(const wchar_t* __s1, const wchar_t* __s2, __locale_t __loc) {
196200
return wcscoll_l(__s1, __s2, __loc);
197201
}
198-
inline _LIBCPP_HIDE_FROM_ABI size_t __wcsxfrm(wchar_t* __dest, const wchar_t* __src, size_t __n, __locale_t __loc) {
202+
inline _LIBCPP_HIDE_FROM_ABI size_t __libcpp_wcsxfrm(wchar_t* __dest, const wchar_t* __src, size_t __n, __locale_t __loc) {
199203
return wcsxfrm_l(__dest, __src, __n, __loc);
200204
}
201-
inline _LIBCPP_HIDE_FROM_ABI int __iswspace(wint_t __ch, __locale_t __loc) { return iswspace_l(__ch, __loc); }
202-
inline _LIBCPP_HIDE_FROM_ABI int __iswprint(wint_t __ch, __locale_t __loc) { return iswprint_l(__ch, __loc); }
203-
inline _LIBCPP_HIDE_FROM_ABI int __iswcntrl(wint_t __ch, __locale_t __loc) { return iswcntrl_l(__ch, __loc); }
204-
inline _LIBCPP_HIDE_FROM_ABI int __iswupper(wint_t __ch, __locale_t __loc) { return iswupper_l(__ch, __loc); }
205-
inline _LIBCPP_HIDE_FROM_ABI int __iswlower(wint_t __ch, __locale_t __loc) { return iswlower_l(__ch, __loc); }
206-
inline _LIBCPP_HIDE_FROM_ABI int __iswalpha(wint_t __ch, __locale_t __loc) { return iswalpha_l(__ch, __loc); }
207-
inline _LIBCPP_HIDE_FROM_ABI int __iswblank(wint_t __ch, __locale_t __loc) { return iswblank_l(__ch, __loc); }
208-
inline _LIBCPP_HIDE_FROM_ABI int __iswdigit(wint_t __ch, __locale_t __loc) { return iswdigit_l(__ch, __loc); }
209-
inline _LIBCPP_HIDE_FROM_ABI int __iswpunct(wint_t __ch, __locale_t __loc) { return iswpunct_l(__ch, __loc); }
210-
inline _LIBCPP_HIDE_FROM_ABI int __iswxdigit(wint_t __ch, __locale_t __loc) { return iswxdigit_l(__ch, __loc); }
211-
inline _LIBCPP_HIDE_FROM_ABI wint_t __towupper(wint_t __ch, __locale_t __loc) { return towupper_l(__ch, __loc); }
212-
inline _LIBCPP_HIDE_FROM_ABI wint_t __towlower(wint_t __ch, __locale_t __loc) { return towlower_l(__ch, __loc); }
213-
# endif
214-
205+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_iswspace(wint_t __ch, __locale_t __loc) { return iswspace_l(__ch, __loc); }
206+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_iswprint(wint_t __ch, __locale_t __loc) { return iswprint_l(__ch, __loc); }
207+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_iswcntrl(wint_t __ch, __locale_t __loc) { return iswcntrl_l(__ch, __loc); }
208+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_iswupper(wint_t __ch, __locale_t __loc) { return iswupper_l(__ch, __loc); }
209+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_iswlower(wint_t __ch, __locale_t __loc) { return iswlower_l(__ch, __loc); }
210+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_iswalpha(wint_t __ch, __locale_t __loc) { return iswalpha_l(__ch, __loc); }
211+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_iswblank(wint_t __ch, __locale_t __loc) { return iswblank_l(__ch, __loc); }
212+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_iswdigit(wint_t __ch, __locale_t __loc) { return iswdigit_l(__ch, __loc); }
213+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_iswpunct(wint_t __ch, __locale_t __loc) { return iswpunct_l(__ch, __loc); }
214+
inline _LIBCPP_HIDE_FROM_ABI int __libcpp_iswxdigit(wint_t __ch, __locale_t __loc) { return iswxdigit_l(__ch, __loc); }
215+
inline _LIBCPP_HIDE_FROM_ABI wint_t __libcpp_towupper(wint_t __ch, __locale_t __loc) { return towupper_l(__ch, __loc); }
216+
inline _LIBCPP_HIDE_FROM_ABI wint_t __libcpp_towlower(wint_t __ch, __locale_t __loc) { return towlower_l(__ch, __loc); }
215217
inline _LIBCPP_HIDE_FROM_ABI size_t
216-
__strftime(char* __s, size_t __max, const char* __format, const tm* __tm, __locale_t __loc) {
218+
__libcpp_strftime(char* __s, size_t __max, const char* __format, const tm* __tm, __locale_t __loc) {
217219
return strftime_l(__s, __max, __format, __tm, __loc);
218220
}
221+
# endif
219222

220223
//
221224
// Other functions

libcxx/include/__locale_dir/locale_base_api/ibm.h

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,37 @@ _LIBCPP_ATTRIBUTE_FORMAT(__printf__, 2, 0) int vasprintf(char** strp, const char
105105
return str_size;
106106
}
107107

108+
namespace __ibm {
109+
_LIBCPP_EXPORTED_FROM_ABI int isalnum_l(int, locale_t);
110+
_LIBCPP_EXPORTED_FROM_ABI int isalpha_l(int, locale_t);
111+
_LIBCPP_EXPORTED_FROM_ABI int isblank_l(int, locale_t);
112+
_LIBCPP_EXPORTED_FROM_ABI int iscntrl_l(int, locale_t);
113+
_LIBCPP_EXPORTED_FROM_ABI int isgraph_l(int, locale_t);
114+
_LIBCPP_EXPORTED_FROM_ABI int islower_l(int, locale_t);
115+
_LIBCPP_EXPORTED_FROM_ABI int isprint_l(int, locale_t);
116+
_LIBCPP_EXPORTED_FROM_ABI int ispunct_l(int, locale_t);
117+
_LIBCPP_EXPORTED_FROM_ABI int isspace_l(int, locale_t);
118+
_LIBCPP_EXPORTED_FROM_ABI int isupper_l(int, locale_t);
119+
_LIBCPP_EXPORTED_FROM_ABI int iswalnum_l(wint_t, locale_t);
120+
_LIBCPP_EXPORTED_FROM_ABI int iswalpha_l(wint_t, locale_t);
121+
_LIBCPP_EXPORTED_FROM_ABI int iswblank_l(wint_t, locale_t);
122+
_LIBCPP_EXPORTED_FROM_ABI int iswcntrl_l(wint_t, locale_t);
123+
_LIBCPP_EXPORTED_FROM_ABI int iswdigit_l(wint_t, locale_t);
124+
_LIBCPP_EXPORTED_FROM_ABI int iswgraph_l(wint_t, locale_t);
125+
_LIBCPP_EXPORTED_FROM_ABI int iswlower_l(wint_t, locale_t);
126+
_LIBCPP_EXPORTED_FROM_ABI int iswprint_l(wint_t, locale_t);
127+
_LIBCPP_EXPORTED_FROM_ABI int iswpunct_l(wint_t, locale_t);
128+
_LIBCPP_EXPORTED_FROM_ABI int iswspace_l(wint_t, locale_t);
129+
_LIBCPP_EXPORTED_FROM_ABI int iswupper_l(wint_t, locale_t);
130+
_LIBCPP_EXPORTED_FROM_ABI int iswxdigit_l(wint_t, locale_t);
131+
_LIBCPP_EXPORTED_FROM_ABI int toupper_l(int, locale_t);
132+
_LIBCPP_EXPORTED_FROM_ABI int tolower_l(int, locale_t);
133+
_LIBCPP_EXPORTED_FROM_ABI wint_t towupper_l(wint_t, locale_t);
134+
_LIBCPP_EXPORTED_FROM_ABI wint_t towlower_l(wint_t, locale_t);
135+
_LIBCPP_EXPORTED_FROM_ABI int strcoll_l(const char *, const char *, locale_t);
136+
_LIBCPP_EXPORTED_FROM_ABI size_t strxfrm_l(char *, const char *, size_t, locale_t);
137+
_LIBCPP_EXPORTED_FROM_ABI size_t strftime_l(char *, size_t , const char *, const struct tm *, locale_t);
138+
_LIBCPP_EXPORTED_FROM_ABI int wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
139+
_LIBCPP_EXPORTED_FROM_ABI size_t wcsxfrm_l(wchar_t *, const wchar_t *, size_t , locale_t);
140+
}
108141
#endif // _LIBCPP___LOCALE_DIR_LOCALE_BASE_API_IBM_H

libcxx/include/locale

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,11 +1126,11 @@ void __num_put<_CharT>::__widen_and_group_float(
11261126
*__oe++ = __ct.widen(*__nf++);
11271127
*__oe++ = __ct.widen(*__nf++);
11281128
for (__ns = __nf; __ns < __ne; ++__ns)
1129-
if (!__locale::__isxdigit(*__ns, _LIBCPP_GET_C_LOCALE))
1129+
if (!__locale::__libcpp_isxdigit(*__ns, _LIBCPP_GET_C_LOCALE))
11301130
break;
11311131
} else {
11321132
for (__ns = __nf; __ns < __ne; ++__ns)
1133-
if (!__locale::__isdigit(*__ns, _LIBCPP_GET_C_LOCALE))
1133+
if (!__locale::__libcpp_isdigit(*__ns, _LIBCPP_GET_C_LOCALE))
11341134
break;
11351135
}
11361136
if (__grouping.empty()) {

0 commit comments

Comments
 (0)