libcxx

libcxx mirror with random patches
git clone https://git.neptards.moe/neptards/libcxx.git
Log | Files | Refs

locale_bionic.h (1799B)


      1 // -*- C++ -*-
      2 //===------------------- support/android/locale_bionic.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 
     11 #ifndef _LIBCPP_SUPPORT_ANDROID_LOCALE_BIONIC_H
     12 #define _LIBCPP_SUPPORT_ANDROID_LOCALE_BIONIC_H
     13 
     14 #if defined(__BIONIC__)
     15 
     16 #ifdef __cplusplus
     17 extern "C" {
     18 #endif
     19 
     20 #include <stdlib.h>
     21 #include <xlocale.h>
     22 
     23 #ifdef __cplusplus
     24 }
     25 #endif
     26 
     27 #if defined(__ANDROID__)
     28 
     29 #include <android/api-level.h>
     30 #include <android/ndk-version.h>
     31 #include <support/xlocale/__posix_l_fallback.h>
     32 // In NDK versions later than 16, locale-aware functions are provided by
     33 // legacy_stdlib_inlines.h
     34 #if __NDK_MAJOR__ <= 16
     35 #if __ANDROID_API__ < 21
     36 #include <support/xlocale/__strtonum_fallback.h>
     37 #elif __ANDROID_API__ < 26
     38 
     39 #if defined(__cplusplus)
     40 extern "C" {
     41 #endif
     42 
     43 inline _LIBCPP_INLINE_VISIBILITY float strtof_l(const char* __nptr, char** __endptr,
     44                                                 locale_t) {
     45   return ::strtof(__nptr, __endptr);
     46 }
     47 
     48 inline _LIBCPP_INLINE_VISIBILITY double strtod_l(const char* __nptr,
     49                                                  char** __endptr, locale_t) {
     50   return ::strtod(__nptr, __endptr);
     51 }
     52 
     53 inline _LIBCPP_INLINE_VISIBILITY long strtol_l(const char* __nptr, char** __endptr,
     54                                                int __base, locale_t) {
     55   return ::strtol(__nptr, __endptr, __base);
     56 }
     57 
     58 #if defined(__cplusplus)
     59 }
     60 #endif
     61 
     62 #endif // __ANDROID_API__ < 26
     63 
     64 #endif // __NDK_MAJOR__ <= 16
     65 #endif // defined(__ANDROID__)
     66 
     67 #endif // defined(__BIONIC__)
     68 #endif // _LIBCPP_SUPPORT_ANDROID_LOCALE_BIONIC_H