30#ifndef _GLIBCXX_CHARCONV_H
31#define _GLIBCXX_CHARCONV_H 1
34#pragma GCC system_header
37#if __cplusplus >= 201103L
42namespace std _GLIBCXX_VISIBILITY(default)
44_GLIBCXX_BEGIN_NAMESPACE_VERSION
47#if __cpp_variable_templates
49 template<
typename _Tp>
50 constexpr bool __integer_to_chars_is_unsigned
51 = ! __gnu_cxx::__int_traits<_Tp>::__is_signed;
55 template<
typename _Tp>
56 _GLIBCXX14_CONSTEXPR
unsigned
57 __to_chars_len(_Tp __value,
int __base = 10) noexcept
59#if __cpp_variable_templates
60 static_assert(__integer_to_chars_is_unsigned<_Tp>,
"implementation bug");
65 const unsigned __b3 = __b2 *
__base;
66 const unsigned long __b4 = __b3 *
__base;
69 if (__value < (
unsigned)__base)
return __n;
70 if (__value < __b2)
return __n + 1;
71 if (__value < __b3)
return __n + 2;
72 if (__value < __b4)
return __n + 3;
81 template<
typename _Tp>
82 _GLIBCXX23_CONSTEXPR
void
83 __to_chars_10_impl(
char* __first,
unsigned __len, _Tp __val)
noexcept
85#if __cpp_variable_templates
86 static_assert(__integer_to_chars_is_unsigned<_Tp>,
"implementation bug");
89 constexpr char __digits[201] =
90 "0001020304050607080910111213141516171819"
91 "2021222324252627282930313233343536373839"
92 "4041424344454647484950515253545556575859"
93 "6061626364656667686970717273747576777879"
94 "8081828384858687888990919293949596979899";
95 unsigned __pos = __len - 1;
98 auto const __num = (__val % 100) * 2;
100 __first[__pos] = __digits[__num + 1];
101 __first[__pos - 1] = __digits[__num];
106 auto const __num = __val * 2;
107 __first[1] = __digits[__num + 1];
108 __first[0] = __digits[__num];
111 __first[0] =
'0' + __val;
115_GLIBCXX_END_NAMESPACE_VERSION
ISO C++ entities toplevel namespace is std.
Implementation details not part of the namespace std interface.
constexpr _Iterator __base(_Iterator __it)