Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
emscripten-core
GitHub Repository: emscripten-core/emscripten
Path: blob/main/system/lib/libcxx/src/charconv.cpp
6175 views
1
//===----------------------------------------------------------------------===//
2
//
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
6
//
7
//===----------------------------------------------------------------------===//
8
9
#include <charconv>
10
#include <string.h>
11
12
#include "include/from_chars_floating_point.h"
13
#include "include/to_chars_floating_point.h"
14
15
_LIBCPP_BEGIN_NAMESPACE_STD
16
17
#ifndef _LIBCPP_ABI_DO_NOT_EXPORT_TO_CHARS_BASE_10
18
19
namespace __itoa {
20
21
_LIBCPP_EXPORTED_FROM_ABI char* __u32toa(uint32_t value, char* buffer) noexcept { return __base_10_u32(buffer, value); }
22
23
_LIBCPP_EXPORTED_FROM_ABI char* __u64toa(uint64_t value, char* buffer) noexcept { return __base_10_u64(buffer, value); }
24
25
} // namespace __itoa
26
27
#endif // _LIBCPP_ABI_DO_NOT_EXPORT_TO_CHARS_BASE_10
28
29
// The original version of floating-point to_chars was written by Microsoft and
30
// contributed with the following license.
31
32
// Copyright (c) Microsoft Corporation.
33
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
34
35
// This implementation is dedicated to the memory of Mary and Thavatchai.
36
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);
39
}
40
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);
43
}
44
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);
48
}
49
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);
52
}
53
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);
56
}
57
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);
61
}
62
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);
66
}
67
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);
71
}
72
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);
76
}
77
78
template <class _Fp>
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);
82
}
83
84
template __from_chars_result<float> __from_chars_floating_point(
85
_LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt);
86
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
90
91