176d0caaeSpatrick //===----------------------------------------------------------------------===//
276d0caaeSpatrick //
376d0caaeSpatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
476d0caaeSpatrick // See https://llvm.org/LICENSE.txt for license information.
576d0caaeSpatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
676d0caaeSpatrick //
776d0caaeSpatrick //===----------------------------------------------------------------------===//
876d0caaeSpatrick
976d0caaeSpatrick ////////////////////////////////////////////////////////////////////////////////
1076d0caaeSpatrick // Minimal xlocale implementation for Solaris. This implements the subset of
1176d0caaeSpatrick // the xlocale APIs that libc++ depends on.
1276d0caaeSpatrick ////////////////////////////////////////////////////////////////////////////////
1376d0caaeSpatrick #ifndef __XLOCALE_H_INCLUDED
1476d0caaeSpatrick #define __XLOCALE_H_INCLUDED
1576d0caaeSpatrick
1676d0caaeSpatrick #include <stdlib.h>
1776d0caaeSpatrick
1876d0caaeSpatrick #ifdef __cplusplus
1976d0caaeSpatrick extern "C" {
2076d0caaeSpatrick #endif
2176d0caaeSpatrick
2276d0caaeSpatrick
2376d0caaeSpatrick int snprintf_l(char *__s, size_t __n, locale_t __l, const char *__format, ...);
2476d0caaeSpatrick int asprintf_l(char **__s, locale_t __l, const char *__format, ...);
2576d0caaeSpatrick
2676d0caaeSpatrick int sscanf_l(const char *__s, locale_t __l, const char *__format, ...);
2776d0caaeSpatrick
2876d0caaeSpatrick int toupper_l(int __c, locale_t __l);
2976d0caaeSpatrick int tolower_l(int __c, locale_t __l);
3076d0caaeSpatrick
3176d0caaeSpatrick struct lconv *localeconv(void);
3276d0caaeSpatrick struct lconv *localeconv_l(locale_t __l);
3376d0caaeSpatrick
3476d0caaeSpatrick // FIXME: These are quick-and-dirty hacks to make things pretend to work
35*4bdff4beSrobert inline _LIBCPP_HIDE_FROM_ABI long long
strtoll_l(const char * __nptr,char ** __endptr,int __base,locale_t __loc)36*4bdff4beSrobert strtoll_l(const char *__nptr, char **__endptr, int __base, locale_t __loc) {
37*4bdff4beSrobert return ::strtoll(__nptr, __endptr, __base);
3876d0caaeSpatrick }
39*4bdff4beSrobert
40*4bdff4beSrobert inline _LIBCPP_HIDE_FROM_ABI long
strtol_l(const char * __nptr,char ** __endptr,int __base,locale_t __loc)41*4bdff4beSrobert strtol_l(const char *__nptr, char **__endptr, int __base, locale_t __loc) {
42*4bdff4beSrobert return ::strtol(__nptr, __endptr, __base);
4376d0caaeSpatrick }
44*4bdff4beSrobert
45*4bdff4beSrobert inline _LIBCPP_HIDE_FROM_ABI unsigned long long
46*4bdff4beSrobert strtoull_l(const char *__nptr, char **__endptr, int __base, locale_t __loc)
47*4bdff4beSrobert return ::strtoull(__nptr, __endptr, __base);
4876d0caaeSpatrick }
49*4bdff4beSrobert
50*4bdff4beSrobert inline _LIBCPP_HIDE_FROM_ABI unsigned long
strtoul_l(const char * __nptr,char ** __endptr,int __base,locale_t __loc)51*4bdff4beSrobert strtoul_l(const char *__nptr, char **__endptr, int __base, locale_t __loc) {
52*4bdff4beSrobert return ::strtoul(__nptr, __endptr, __base);
5376d0caaeSpatrick }
54*4bdff4beSrobert
55*4bdff4beSrobert inline _LIBCPP_HIDE_FROM_ABI float
strtof_l(const char * __nptr,char ** __endptr,locale_t __loc)56*4bdff4beSrobert strtof_l(const char *__nptr, char **__endptr, locale_t __loc) {
57*4bdff4beSrobert return ::strtof(__nptr, __endptr);
5876d0caaeSpatrick }
59*4bdff4beSrobert
60*4bdff4beSrobert inline _LIBCPP_HIDE_FROM_ABI double
strtod_l(const char * __nptr,char ** __endptr,locale_t __loc)61*4bdff4beSrobert strtod_l(const char *__nptr, char **__endptr, locale_t __loc) {
62*4bdff4beSrobert return ::strtod(__nptr, __endptr);
6376d0caaeSpatrick }
64*4bdff4beSrobert
65*4bdff4beSrobert inline _LIBCPP_HIDE_FROM_ABI long double
strtold_l(const char * __nptr,char ** __endptr,locale_t __loc)66*4bdff4beSrobert strtold_l(const char *__nptr, char **__endptr, locale_t __loc) {
67*4bdff4beSrobert return ::strtold(__nptr, __endptr);
6876d0caaeSpatrick }
6976d0caaeSpatrick
7076d0caaeSpatrick
7176d0caaeSpatrick #ifdef __cplusplus
7276d0caaeSpatrick }
7376d0caaeSpatrick #endif
7476d0caaeSpatrick
7576d0caaeSpatrick #endif
76