xref: /openbsd-src/gnu/llvm/libcxx/include/__support/musl/xlocale.h (revision 4bdff4bed0e3d54e55670334c7d0077db4170f86)
176d0caaeSpatrick // -*- C++ -*-
276d0caaeSpatrick //===-----------------------------------------------------------------------===//
376d0caaeSpatrick //
476d0caaeSpatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
576d0caaeSpatrick // See https://llvm.org/LICENSE.txt for license information.
676d0caaeSpatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
776d0caaeSpatrick //
876d0caaeSpatrick //===----------------------------------------------------------------------===//
976d0caaeSpatrick // This adds support for the extended locale functions that are currently
1076d0caaeSpatrick // missing from the Musl C library.
1176d0caaeSpatrick //
1276d0caaeSpatrick // This only works when the specified locale is "C" or "POSIX", but that's
1376d0caaeSpatrick // about as good as we can do without implementing full xlocale support
1476d0caaeSpatrick // in Musl.
1576d0caaeSpatrick //===----------------------------------------------------------------------===//
1676d0caaeSpatrick 
17*4bdff4beSrobert #ifndef _LIBCPP___SUPPORT_MUSL_XLOCALE_H
18*4bdff4beSrobert #define _LIBCPP___SUPPORT_MUSL_XLOCALE_H
1976d0caaeSpatrick 
2076d0caaeSpatrick #include <cstdlib>
2176d0caaeSpatrick #include <cwchar>
2276d0caaeSpatrick 
2376d0caaeSpatrick #ifdef __cplusplus
2476d0caaeSpatrick extern "C" {
2576d0caaeSpatrick #endif
2676d0caaeSpatrick 
strtoll_l(const char * __nptr,char ** __endptr,int __base,locale_t)27*4bdff4beSrobert inline _LIBCPP_HIDE_FROM_ABI_C long long strtoll_l(const char* __nptr, char** __endptr, int __base, locale_t) {
28*4bdff4beSrobert   return ::strtoll(__nptr, __endptr, __base);
2976d0caaeSpatrick }
3076d0caaeSpatrick 
31*4bdff4beSrobert inline _LIBCPP_HIDE_FROM_ABI_C unsigned long long
strtoull_l(const char * __nptr,char ** __endptr,int __base,locale_t)32*4bdff4beSrobert strtoull_l(const char* __nptr, char** __endptr, int __base, locale_t) {
33*4bdff4beSrobert   return ::strtoull(__nptr, __endptr, __base);
3476d0caaeSpatrick }
3576d0caaeSpatrick 
wcstoll_l(const wchar_t * __nptr,wchar_t ** __endptr,int __base,locale_t)36*4bdff4beSrobert inline _LIBCPP_HIDE_FROM_ABI_C long long wcstoll_l(const wchar_t* __nptr, wchar_t** __endptr, int __base, locale_t) {
37*4bdff4beSrobert   return ::wcstoll(__nptr, __endptr, __base);
3876d0caaeSpatrick }
3976d0caaeSpatrick 
wcstoull_l(const wchar_t * __nptr,wchar_t ** __endptr,int __base,locale_t)40*4bdff4beSrobert inline _LIBCPP_HIDE_FROM_ABI_C long long wcstoull_l(const wchar_t* __nptr, wchar_t** __endptr, int __base, locale_t) {
41*4bdff4beSrobert   return ::wcstoull(__nptr, __endptr, __base);
4276d0caaeSpatrick }
4376d0caaeSpatrick 
wcstold_l(const wchar_t * __nptr,wchar_t ** __endptr,locale_t)44*4bdff4beSrobert inline _LIBCPP_HIDE_FROM_ABI_C long double wcstold_l(const wchar_t* __nptr, wchar_t** __endptr, locale_t) {
45*4bdff4beSrobert   return ::wcstold(__nptr, __endptr);
4676d0caaeSpatrick }
4776d0caaeSpatrick 
4876d0caaeSpatrick #ifdef __cplusplus
4976d0caaeSpatrick }
5076d0caaeSpatrick #endif
5176d0caaeSpatrick 
52*4bdff4beSrobert #endif // _LIBCPP___SUPPORT_MUSL_XLOCALE_H
53