Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/libcxx/include/__charconv/tables.h
35262 views
1
// -*- C++ -*-
2
//===----------------------------------------------------------------------===//
3
//
4
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5
// See https://llvm.org/LICENSE.txt for license information.
6
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7
//
8
//===----------------------------------------------------------------------===//
9
10
#ifndef _LIBCPP___CHARCONV_TABLES
11
#define _LIBCPP___CHARCONV_TABLES
12
13
#include <__config>
14
#include <cstdint>
15
16
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
17
# pragma GCC system_header
18
#endif
19
20
_LIBCPP_BEGIN_NAMESPACE_STD
21
22
#if _LIBCPP_STD_VER >= 17
23
24
namespace __itoa {
25
26
inline constexpr char __base_2_lut[64] = {
27
'0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '1', '0', '0', '0', '1', '1', '0', '1', '0', '0', '0', '1',
28
'0', '1', '0', '1', '1', '0', '0', '1', '1', '1', '1', '0', '0', '0', '1', '0', '0', '1', '1', '0', '1', '0',
29
'1', '0', '1', '1', '1', '1', '0', '0', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1'};
30
31
inline constexpr char __base_8_lut[128] = {
32
'0', '0', '0', '1', '0', '2', '0', '3', '0', '4', '0', '5', '0', '6', '0', '7', '1', '0', '1', '1', '1', '2',
33
'1', '3', '1', '4', '1', '5', '1', '6', '1', '7', '2', '0', '2', '1', '2', '2', '2', '3', '2', '4', '2', '5',
34
'2', '6', '2', '7', '3', '0', '3', '1', '3', '2', '3', '3', '3', '4', '3', '5', '3', '6', '3', '7', '4', '0',
35
'4', '1', '4', '2', '4', '3', '4', '4', '4', '5', '4', '6', '4', '7', '5', '0', '5', '1', '5', '2', '5', '3',
36
'5', '4', '5', '5', '5', '6', '5', '7', '6', '0', '6', '1', '6', '2', '6', '3', '6', '4', '6', '5', '6', '6',
37
'6', '7', '7', '0', '7', '1', '7', '2', '7', '3', '7', '4', '7', '5', '7', '6', '7', '7'};
38
39
inline constexpr char __base_16_lut[512] = {
40
'0', '0', '0', '1', '0', '2', '0', '3', '0', '4', '0', '5', '0', '6', '0', '7', '0', '8', '0', '9', '0', 'a', '0',
41
'b', '0', 'c', '0', 'd', '0', 'e', '0', 'f', '1', '0', '1', '1', '1', '2', '1', '3', '1', '4', '1', '5', '1', '6',
42
'1', '7', '1', '8', '1', '9', '1', 'a', '1', 'b', '1', 'c', '1', 'd', '1', 'e', '1', 'f', '2', '0', '2', '1', '2',
43
'2', '2', '3', '2', '4', '2', '5', '2', '6', '2', '7', '2', '8', '2', '9', '2', 'a', '2', 'b', '2', 'c', '2', 'd',
44
'2', 'e', '2', 'f', '3', '0', '3', '1', '3', '2', '3', '3', '3', '4', '3', '5', '3', '6', '3', '7', '3', '8', '3',
45
'9', '3', 'a', '3', 'b', '3', 'c', '3', 'd', '3', 'e', '3', 'f', '4', '0', '4', '1', '4', '2', '4', '3', '4', '4',
46
'4', '5', '4', '6', '4', '7', '4', '8', '4', '9', '4', 'a', '4', 'b', '4', 'c', '4', 'd', '4', 'e', '4', 'f', '5',
47
'0', '5', '1', '5', '2', '5', '3', '5', '4', '5', '5', '5', '6', '5', '7', '5', '8', '5', '9', '5', 'a', '5', 'b',
48
'5', 'c', '5', 'd', '5', 'e', '5', 'f', '6', '0', '6', '1', '6', '2', '6', '3', '6', '4', '6', '5', '6', '6', '6',
49
'7', '6', '8', '6', '9', '6', 'a', '6', 'b', '6', 'c', '6', 'd', '6', 'e', '6', 'f', '7', '0', '7', '1', '7', '2',
50
'7', '3', '7', '4', '7', '5', '7', '6', '7', '7', '7', '8', '7', '9', '7', 'a', '7', 'b', '7', 'c', '7', 'd', '7',
51
'e', '7', 'f', '8', '0', '8', '1', '8', '2', '8', '3', '8', '4', '8', '5', '8', '6', '8', '7', '8', '8', '8', '9',
52
'8', 'a', '8', 'b', '8', 'c', '8', 'd', '8', 'e', '8', 'f', '9', '0', '9', '1', '9', '2', '9', '3', '9', '4', '9',
53
'5', '9', '6', '9', '7', '9', '8', '9', '9', '9', 'a', '9', 'b', '9', 'c', '9', 'd', '9', 'e', '9', 'f', 'a', '0',
54
'a', '1', 'a', '2', 'a', '3', 'a', '4', 'a', '5', 'a', '6', 'a', '7', 'a', '8', 'a', '9', 'a', 'a', 'a', 'b', 'a',
55
'c', 'a', 'd', 'a', 'e', 'a', 'f', 'b', '0', 'b', '1', 'b', '2', 'b', '3', 'b', '4', 'b', '5', 'b', '6', 'b', '7',
56
'b', '8', 'b', '9', 'b', 'a', 'b', 'b', 'b', 'c', 'b', 'd', 'b', 'e', 'b', 'f', 'c', '0', 'c', '1', 'c', '2', 'c',
57
'3', 'c', '4', 'c', '5', 'c', '6', 'c', '7', 'c', '8', 'c', '9', 'c', 'a', 'c', 'b', 'c', 'c', 'c', 'd', 'c', 'e',
58
'c', 'f', 'd', '0', 'd', '1', 'd', '2', 'd', '3', 'd', '4', 'd', '5', 'd', '6', 'd', '7', 'd', '8', 'd', '9', 'd',
59
'a', 'd', 'b', 'd', 'c', 'd', 'd', 'd', 'e', 'd', 'f', 'e', '0', 'e', '1', 'e', '2', 'e', '3', 'e', '4', 'e', '5',
60
'e', '6', 'e', '7', 'e', '8', 'e', '9', 'e', 'a', 'e', 'b', 'e', 'c', 'e', 'd', 'e', 'e', 'e', 'f', 'f', '0', 'f',
61
'1', 'f', '2', 'f', '3', 'f', '4', 'f', '5', 'f', '6', 'f', '7', 'f', '8', 'f', '9', 'f', 'a', 'f', 'b', 'f', 'c',
62
'f', 'd', 'f', 'e', 'f', 'f'};
63
64
inline constexpr uint32_t __pow10_32[10] = {
65
UINT32_C(0),
66
UINT32_C(10),
67
UINT32_C(100),
68
UINT32_C(1000),
69
UINT32_C(10000),
70
UINT32_C(100000),
71
UINT32_C(1000000),
72
UINT32_C(10000000),
73
UINT32_C(100000000),
74
UINT32_C(1000000000)};
75
76
inline constexpr uint64_t __pow10_64[20] = {
77
UINT64_C(0),
78
UINT64_C(10),
79
UINT64_C(100),
80
UINT64_C(1000),
81
UINT64_C(10000),
82
UINT64_C(100000),
83
UINT64_C(1000000),
84
UINT64_C(10000000),
85
UINT64_C(100000000),
86
UINT64_C(1000000000),
87
UINT64_C(10000000000),
88
UINT64_C(100000000000),
89
UINT64_C(1000000000000),
90
UINT64_C(10000000000000),
91
UINT64_C(100000000000000),
92
UINT64_C(1000000000000000),
93
UINT64_C(10000000000000000),
94
UINT64_C(100000000000000000),
95
UINT64_C(1000000000000000000),
96
UINT64_C(10000000000000000000)};
97
98
# ifndef _LIBCPP_HAS_NO_INT128
99
inline constexpr int __pow10_128_offset = 0;
100
inline constexpr __uint128_t __pow10_128[40] = {
101
UINT64_C(0),
102
UINT64_C(10),
103
UINT64_C(100),
104
UINT64_C(1000),
105
UINT64_C(10000),
106
UINT64_C(100000),
107
UINT64_C(1000000),
108
UINT64_C(10000000),
109
UINT64_C(100000000),
110
UINT64_C(1000000000),
111
UINT64_C(10000000000),
112
UINT64_C(100000000000),
113
UINT64_C(1000000000000),
114
UINT64_C(10000000000000),
115
UINT64_C(100000000000000),
116
UINT64_C(1000000000000000),
117
UINT64_C(10000000000000000),
118
UINT64_C(100000000000000000),
119
UINT64_C(1000000000000000000),
120
UINT64_C(10000000000000000000),
121
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10),
122
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(100),
123
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(1000),
124
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000),
125
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(100000),
126
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(1000000),
127
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000000),
128
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(100000000),
129
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(1000000000),
130
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000000000),
131
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(100000000000),
132
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(1000000000000),
133
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000000000000),
134
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(100000000000000),
135
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(1000000000000000),
136
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000000000000000),
137
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(100000000000000000),
138
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(1000000000000000000),
139
__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000000000000000000),
140
(__uint128_t(UINT64_C(10000000000000000000)) * UINT64_C(10000000000000000000)) * 10};
141
# endif
142
143
inline constexpr char __digits_base_10[200] = {
144
// clang-format off
145
'0', '0', '0', '1', '0', '2', '0', '3', '0', '4', '0', '5', '0', '6', '0', '7', '0', '8', '0', '9',
146
'1', '0', '1', '1', '1', '2', '1', '3', '1', '4', '1', '5', '1', '6', '1', '7', '1', '8', '1', '9',
147
'2', '0', '2', '1', '2', '2', '2', '3', '2', '4', '2', '5', '2', '6', '2', '7', '2', '8', '2', '9',
148
'3', '0', '3', '1', '3', '2', '3', '3', '3', '4', '3', '5', '3', '6', '3', '7', '3', '8', '3', '9',
149
'4', '0', '4', '1', '4', '2', '4', '3', '4', '4', '4', '5', '4', '6', '4', '7', '4', '8', '4', '9',
150
'5', '0', '5', '1', '5', '2', '5', '3', '5', '4', '5', '5', '5', '6', '5', '7', '5', '8', '5', '9',
151
'6', '0', '6', '1', '6', '2', '6', '3', '6', '4', '6', '5', '6', '6', '6', '7', '6', '8', '6', '9',
152
'7', '0', '7', '1', '7', '2', '7', '3', '7', '4', '7', '5', '7', '6', '7', '7', '7', '8', '7', '9',
153
'8', '0', '8', '1', '8', '2', '8', '3', '8', '4', '8', '5', '8', '6', '8', '7', '8', '8', '8', '9',
154
'9', '0', '9', '1', '9', '2', '9', '3', '9', '4', '9', '5', '9', '6', '9', '7', '9', '8', '9', '9'};
155
// clang-format on
156
157
} // namespace __itoa
158
159
#endif // _LIBCPP_STD_VER >= 17
160
161
_LIBCPP_END_NAMESPACE_STD
162
163
#endif // _LIBCPP___CHARCONV_TABLES
164
165