4040// __lconv_t* __localeconv(__locale_t&);
4141// }
4242//
43+ // // required by the headers
4344// #define _LIBCPP_COLLATE_MASK /* implementation-defined */
4445// #define _LIBCPP_CTYPE_MASK /* implementation-defined */
4546// #define _LIBCPP_MONETARY_MASK /* implementation-defined */
5253// Strtonum functions
5354// ------------------
5455// namespace __locale {
56+ // // required by the headers
5557// float __strtof(const char*, char**, __locale_t);
5658// double __strtod(const char*, char**, __locale_t);
5759// long double __strtold(const char*, char**, __locale_t);
@@ -148,8 +150,19 @@ namespace __locale {
148150//
149151// Locale management
150152//
153+ # define _LIBCPP_COLLATE_MASK LC_COLLATE_MASK
154+ # define _LIBCPP_CTYPE_MASK LC_CTYPE_MASK
155+ # define _LIBCPP_MONETARY_MASK LC_MONETARY_MASK
156+ # define _LIBCPP_NUMERIC_MASK LC_NUMERIC_MASK
157+ # define _LIBCPP_TIME_MASK LC_TIME_MASK
158+ # define _LIBCPP_MESSAGES_MASK LC_MESSAGES_MASK
159+ # define _LIBCPP_ALL_MASK LC_ALL_MASK
160+ # define _LIBCPP_LC_ALL LC_ALL
161+
151162using __locale_t _LIBCPP_NODEBUG = locale_t ;
152- using __lconv_t _LIBCPP_NODEBUG = lconv;
163+
164+ # if defined(_LIBCPP_BUILDING_LIBRARY)
165+ using __lconv_t _LIBCPP_NODEBUG = lconv;
153166
154167inline _LIBCPP_HIDE_FROM_ABI __locale_t __newlocale (int __category_mask, const char * __name, __locale_t __loc) {
155168 return newlocale (__category_mask, __name, __loc);
@@ -162,15 +175,7 @@ inline _LIBCPP_HIDE_FROM_ABI char* __setlocale(int __category, char const* __loc
162175inline _LIBCPP_HIDE_FROM_ABI void __freelocale (__locale_t __loc) { freelocale (__loc); }
163176
164177inline _LIBCPP_HIDE_FROM_ABI __lconv_t * __localeconv (__locale_t & __loc) { return __libcpp_localeconv_l (__loc); }
165-
166- # define _LIBCPP_COLLATE_MASK LC_COLLATE_MASK
167- # define _LIBCPP_CTYPE_MASK LC_CTYPE_MASK
168- # define _LIBCPP_MONETARY_MASK LC_MONETARY_MASK
169- # define _LIBCPP_NUMERIC_MASK LC_NUMERIC_MASK
170- # define _LIBCPP_TIME_MASK LC_TIME_MASK
171- # define _LIBCPP_MESSAGES_MASK LC_MESSAGES_MASK
172- # define _LIBCPP_ALL_MASK LC_ALL_MASK
173- # define _LIBCPP_LC_ALL LC_ALL
178+ # endif // _LIBCPP_BUILDING_LIBRARY
174179
175180//
176181// Strtonum functions
@@ -199,10 +204,15 @@ __strtoull(const char* __nptr, char** __endptr, int __base, __locale_t __loc) {
199204//
200205// Character manipulation functions
201206//
207+ # if defined(_LIBCPP_BUILDING_LIBRARY)
202208inline _LIBCPP_HIDE_FROM_ABI int __islower (int __ch, __locale_t __loc) { return islower_l (__ch, __loc); }
203209inline _LIBCPP_HIDE_FROM_ABI int __isupper (int __ch, __locale_t __loc) { return isupper_l (__ch, __loc); }
210+ # endif
211+
204212inline _LIBCPP_HIDE_FROM_ABI int __isdigit (int __ch, __locale_t __loc) { return isdigit_l (__ch, __loc); }
205213inline _LIBCPP_HIDE_FROM_ABI int __isxdigit (int __ch, __locale_t __loc) { return isxdigit_l (__ch, __loc); }
214+
215+ # if defined(_LIBCPP_BUILDING_LIBRARY)
206216inline _LIBCPP_HIDE_FROM_ABI int __strcoll (const char * __s1, const char * __s2, __locale_t __loc) {
207217 return strcoll_l (__s1, __s2, __loc);
208218}
@@ -212,7 +222,7 @@ inline _LIBCPP_HIDE_FROM_ABI size_t __strxfrm(char* __dest, const char* __src, s
212222inline _LIBCPP_HIDE_FROM_ABI int __toupper (int __ch, __locale_t __loc) { return toupper_l (__ch, __loc); }
213223inline _LIBCPP_HIDE_FROM_ABI int __tolower (int __ch, __locale_t __loc) { return tolower_l (__ch, __loc); }
214224
215- # if _LIBCPP_HAS_WIDE_CHARACTERS
225+ # if _LIBCPP_HAS_WIDE_CHARACTERS
216226inline _LIBCPP_HIDE_FROM_ABI int __wcscoll (const wchar_t * __s1, const wchar_t * __s2, __locale_t __loc) {
217227 return wcscoll_l (__s1, __s2, __loc);
218228}
@@ -234,7 +244,7 @@ inline _LIBCPP_HIDE_FROM_ABI int __iswpunct(wint_t __ch, __locale_t __loc) { ret
234244inline _LIBCPP_HIDE_FROM_ABI int __iswxdigit (wint_t __ch, __locale_t __loc) { return iswxdigit_l (__ch, __loc); }
235245inline _LIBCPP_HIDE_FROM_ABI wint_t __towupper (wint_t __ch, __locale_t __loc) { return towupper_l (__ch, __loc); }
236246inline _LIBCPP_HIDE_FROM_ABI wint_t __towlower (wint_t __ch, __locale_t __loc) { return towlower_l (__ch, __loc); }
237- # endif
247+ # endif
238248
239249inline _LIBCPP_HIDE_FROM_ABI size_t
240250__strftime (char * __s, size_t __max, const char * __format, const tm* __tm, __locale_t __loc) {
@@ -247,7 +257,7 @@ __strftime(char* __s, size_t __max, const char* __format, const tm* __tm, __loca
247257inline _LIBCPP_HIDE_FROM_ABI decltype (__libcpp_mb_cur_max_l(__locale_t ())) __mb_len_max(__locale_t __loc) {
248258 return __libcpp_mb_cur_max_l (__loc);
249259}
250- # if _LIBCPP_HAS_WIDE_CHARACTERS
260+ # if _LIBCPP_HAS_WIDE_CHARACTERS
251261inline _LIBCPP_HIDE_FROM_ABI wint_t __btowc (int __ch, __locale_t __loc) { return __libcpp_btowc_l (__ch, __loc); }
252262inline _LIBCPP_HIDE_FROM_ABI int __wctob (wint_t __ch, __locale_t __loc) { return __libcpp_wctob_l (__ch, __loc); }
253263inline _LIBCPP_HIDE_FROM_ABI size_t
@@ -275,7 +285,8 @@ inline _LIBCPP_HIDE_FROM_ABI size_t
275285__mbsrtowcs (wchar_t * __dest, const char ** __src, size_t __len, mbstate_t * __ps, __locale_t __loc) {
276286 return __libcpp_mbsrtowcs_l (__dest, __src, __len, __ps, __loc);
277287}
278- # endif
288+ # endif // _LIBCPP_HAS_WIDE_CHARACTERS
289+ # endif // _LIBCPP_BUILDING_LIBRARY
279290
280291_LIBCPP_DIAGNOSTIC_PUSH
281292_LIBCPP_CLANG_DIAGNOSTIC_IGNORED (" -Wgcc-compat" )
0 commit comments