• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // -*- C++ -*-
2 //===-------------- support/xlocale/__strtonum_fallback.h -----------------===//
3 //
4 //                     The LLVM Compiler Infrastructure
5 //
6 // This file is dual licensed under the MIT and the University of Illinois Open
7 // Source Licenses. See LICENSE.TXT for details.
8 //
9 //===----------------------------------------------------------------------===//
10 // These are reimplementations of some extended locale functions ( *_l ) that
11 // aren't part of POSIX.  They are widely available though (GLIBC, BSD, maybe
12 // others).  The unifying aspect in this case is that all of these functions
13 // convert strings to some numeric type.
14 //===----------------------------------------------------------------------===//
15 
16 #ifndef _LIBCPP_SUPPORT_XLOCALE_STRTONUM_FALLBACK_H
17 #define _LIBCPP_SUPPORT_XLOCALE_STRTONUM_FALLBACK_H
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
strtof_l(const char * nptr,char ** endptr,locale_t)23 inline _LIBCPP_ALWAYS_INLINE float strtof_l(const char *nptr,
24                                             char **endptr, locale_t) {
25   return ::strtof(nptr, endptr);
26 }
27 
strtod_l(const char * nptr,char ** endptr,locale_t)28 inline _LIBCPP_ALWAYS_INLINE double strtod_l(const char *nptr,
29                                                    char **endptr, locale_t) {
30   return ::strtod(nptr, endptr);
31 }
32 
strtold_l(const char * nptr,char ** endptr,locale_t)33 inline _LIBCPP_ALWAYS_INLINE long double strtold_l(const char *nptr,
34                                                    char **endptr, locale_t) {
35   return ::strtold(nptr, endptr);
36 }
37 
38 inline _LIBCPP_ALWAYS_INLINE long long
strtoll_l(const char * nptr,char ** endptr,int base,locale_t)39 strtoll_l(const char *nptr, char **endptr, int base, locale_t) {
40   return ::strtoll(nptr, endptr, base);
41 }
42 
43 inline _LIBCPP_ALWAYS_INLINE unsigned long long
strtoull_l(const char * nptr,char ** endptr,int base,locale_t)44 strtoull_l(const char *nptr, char **endptr, int base, locale_t) {
45   return ::strtoull(nptr, endptr, base);
46 }
47 
48 inline _LIBCPP_ALWAYS_INLINE long long
wcstoll_l(const wchar_t * nptr,wchar_t ** endptr,int base,locale_t)49 wcstoll_l(const wchar_t *nptr, wchar_t **endptr, int base, locale_t) {
50   return ::wcstoll(nptr, endptr, base);
51 }
52 
53 inline _LIBCPP_ALWAYS_INLINE unsigned long long
wcstoull_l(const wchar_t * nptr,wchar_t ** endptr,int base,locale_t)54 wcstoull_l(const wchar_t *nptr, wchar_t **endptr, int base, locale_t) {
55   return ::wcstoull(nptr, endptr, base);
56 }
57 
wcstold_l(const wchar_t * nptr,wchar_t ** endptr,locale_t)58 inline _LIBCPP_ALWAYS_INLINE long double wcstold_l(const wchar_t *nptr,
59                                                    wchar_t **endptr, locale_t) {
60   return ::wcstold(nptr, endptr);
61 }
62 
63 #ifdef __cplusplus
64 }
65 #endif
66 
67 #endif // _LIBCPP_SUPPORT_XLOCALE_STRTONUM_FALLBACK_H
68