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/to_chars_floating_point.h"
14 _LIBCPP_BEGIN_NAMESPACE_STD
16 #ifndef _LIBCPP_ABI_DO_NOT_EXPORT_TO_CHARS_BASE_10
20 _LIBCPP_EXPORTED_FROM_ABI
char* __u32toa(uint32_t value
, char* buffer
) noexcept
{ return __base_10_u32(buffer
, value
); }
22 _LIBCPP_EXPORTED_FROM_ABI
char* __u64toa(uint64_t value
, char* buffer
) noexcept
{ return __base_10_u64(buffer
, value
); }
26 #endif // _LIBCPP_ABI_DO_NOT_EXPORT_TO_CHARS_BASE_10
28 // The original version of floating-point to_chars was written by Microsoft and
29 // contributed with the following license.
31 // Copyright (c) Microsoft Corporation.
32 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
34 // This implementation is dedicated to the memory of Mary and Thavatchai.
36 to_chars_result
to_chars(char* __first
, char* __last
, float __value
) {
37 return _Floating_to_chars
<_Floating_to_chars_overload::_Plain
>(__first
, __last
, __value
, chars_format
{}, 0);
40 to_chars_result
to_chars(char* __first
, char* __last
, double __value
) {
41 return _Floating_to_chars
<_Floating_to_chars_overload::_Plain
>(__first
, __last
, __value
, chars_format
{}, 0);
44 to_chars_result
to_chars(char* __first
, char* __last
, long double __value
) {
45 return _Floating_to_chars
<_Floating_to_chars_overload::_Plain
>(
46 __first
, __last
, static_cast<double>(__value
), chars_format
{}, 0);
49 to_chars_result
to_chars(char* __first
, char* __last
, float __value
, chars_format __fmt
) {
50 return _Floating_to_chars
<_Floating_to_chars_overload::_Format_only
>(__first
, __last
, __value
, __fmt
, 0);
53 to_chars_result
to_chars(char* __first
, char* __last
, double __value
, chars_format __fmt
) {
54 return _Floating_to_chars
<_Floating_to_chars_overload::_Format_only
>(__first
, __last
, __value
, __fmt
, 0);
57 to_chars_result
to_chars(char* __first
, char* __last
, long double __value
, chars_format __fmt
) {
58 return _Floating_to_chars
<_Floating_to_chars_overload::_Format_only
>(
59 __first
, __last
, static_cast<double>(__value
), __fmt
, 0);
62 to_chars_result
to_chars(char* __first
, char* __last
, float __value
, chars_format __fmt
, int __precision
) {
63 return _Floating_to_chars
<_Floating_to_chars_overload::_Format_precision
>(
64 __first
, __last
, __value
, __fmt
, __precision
);
67 to_chars_result
to_chars(char* __first
, char* __last
, double __value
, chars_format __fmt
, int __precision
) {
68 return _Floating_to_chars
<_Floating_to_chars_overload::_Format_precision
>(
69 __first
, __last
, __value
, __fmt
, __precision
);
72 to_chars_result
to_chars(char* __first
, char* __last
, long double __value
, chars_format __fmt
, int __precision
) {
73 return _Floating_to_chars
<_Floating_to_chars_overload::_Format_precision
>(
74 __first
, __last
, static_cast<double>(__value
), __fmt
, __precision
);
77 _LIBCPP_END_NAMESPACE_STD