1 //===----------------------------------------------------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
12 #include "include/from_chars_floating_point.h"
13 #include "include/to_chars_floating_point.h"
15 _LIBCPP_BEGIN_NAMESPACE_STD
17 #ifndef _LIBCPP_ABI_DO_NOT_EXPORT_TO_CHARS_BASE_10
21 _LIBCPP_EXPORTED_FROM_ABI
char* __u32toa(uint32_t value
, char* buffer
) noexcept
{ return __base_10_u32(buffer
, value
); }
23 _LIBCPP_EXPORTED_FROM_ABI
char* __u64toa(uint64_t value
, char* buffer
) noexcept
{ return __base_10_u64(buffer
, value
); }
27 #endif // _LIBCPP_ABI_DO_NOT_EXPORT_TO_CHARS_BASE_10
29 // The original version of floating-point to_chars was written by Microsoft and
30 // contributed with the following license.
32 // Copyright (c) Microsoft Corporation.
33 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
35 // This implementation is dedicated to the memory of Mary and Thavatchai.
37 to_chars_result
to_chars(char* __first
, char* __last
, float __value
) {
38 return _Floating_to_chars
<_Floating_to_chars_overload::_Plain
>(__first
, __last
, __value
, chars_format
{}, 0);
41 to_chars_result
to_chars(char* __first
, char* __last
, double __value
) {
42 return _Floating_to_chars
<_Floating_to_chars_overload::_Plain
>(__first
, __last
, __value
, chars_format
{}, 0);
45 to_chars_result
to_chars(char* __first
, char* __last
, long double __value
) {
46 return _Floating_to_chars
<_Floating_to_chars_overload::_Plain
>(
47 __first
, __last
, static_cast<double>(__value
), chars_format
{}, 0);
50 to_chars_result
to_chars(char* __first
, char* __last
, float __value
, chars_format __fmt
) {
51 return _Floating_to_chars
<_Floating_to_chars_overload::_Format_only
>(__first
, __last
, __value
, __fmt
, 0);
54 to_chars_result
to_chars(char* __first
, char* __last
, double __value
, chars_format __fmt
) {
55 return _Floating_to_chars
<_Floating_to_chars_overload::_Format_only
>(__first
, __last
, __value
, __fmt
, 0);
58 to_chars_result
to_chars(char* __first
, char* __last
, long double __value
, chars_format __fmt
) {
59 return _Floating_to_chars
<_Floating_to_chars_overload::_Format_only
>(
60 __first
, __last
, static_cast<double>(__value
), __fmt
, 0);
63 to_chars_result
to_chars(char* __first
, char* __last
, float __value
, chars_format __fmt
, int __precision
) {
64 return _Floating_to_chars
<_Floating_to_chars_overload::_Format_precision
>(
65 __first
, __last
, __value
, __fmt
, __precision
);
68 to_chars_result
to_chars(char* __first
, char* __last
, double __value
, chars_format __fmt
, int __precision
) {
69 return _Floating_to_chars
<_Floating_to_chars_overload::_Format_precision
>(
70 __first
, __last
, __value
, __fmt
, __precision
);
73 to_chars_result
to_chars(char* __first
, char* __last
, long double __value
, chars_format __fmt
, int __precision
) {
74 return _Floating_to_chars
<_Floating_to_chars_overload::_Format_precision
>(
75 __first
, __last
, static_cast<double>(__value
), __fmt
, __precision
);
79 __from_chars_result
<_Fp
> __from_chars_floating_point(
80 _LIBCPP_NOESCAPE
const char* __first
, _LIBCPP_NOESCAPE
const char* __last
, chars_format __fmt
) {
81 return std::__from_chars_floating_point_impl
<_Fp
>(__first
, __last
, __fmt
);
84 template __from_chars_result
<float> __from_chars_floating_point(
85 _LIBCPP_NOESCAPE
const char* __first
, _LIBCPP_NOESCAPE
const char* __last
, chars_format __fmt
);
87 template __from_chars_result
<double> __from_chars_floating_point(
88 _LIBCPP_NOESCAPE
const char* __first
, _LIBCPP_NOESCAPE
const char* __last
, chars_format __fmt
);
89 _LIBCPP_END_NAMESPACE_STD