#pragma once
#include <cstring>
#include <folly/ConstexprMath.h>
#include <folly/Likely.h>
#include <folly/Portability.h>
#include <folly/Utility.h>
#include <folly/lang/Align.h>
#include <folly/lang/CArray.h>
#include <folly/portability/Builtins.h>
namespace folly {
template <bool Upper>
struct to_ascii_alphabet { … };
to_ascii_alphabet_lower;
to_ascii_alphabet_upper;
namespace detail {
template <uint64_t Base, typename Alphabet>
struct to_ascii_array { … };
template <uint64_t Base, typename Alphabet>
alignas(kIsMobile ? sizeof(size_t) : hardware_constructive_interference_size)
typename to_ascii_array<Base, Alphabet>::data_type_ const
to_ascii_array<Base, Alphabet>::data = …;
extern template to_ascii_array<8, to_ascii_alphabet_lower>::data_type_ const
to_ascii_array<8, to_ascii_alphabet_lower>::data;
extern template to_ascii_array<10, to_ascii_alphabet_lower>::data_type_ const
to_ascii_array<10, to_ascii_alphabet_lower>::data;
extern template to_ascii_array<16, to_ascii_alphabet_lower>::data_type_ const
to_ascii_array<16, to_ascii_alphabet_lower>::data;
extern template to_ascii_array<8, to_ascii_alphabet_upper>::data_type_ const
to_ascii_array<8, to_ascii_alphabet_upper>::data;
extern template to_ascii_array<10, to_ascii_alphabet_upper>::data_type_ const
to_ascii_array<10, to_ascii_alphabet_upper>::data;
extern template to_ascii_array<16, to_ascii_alphabet_upper>::data_type_ const
to_ascii_array<16, to_ascii_alphabet_upper>::data;
template <uint64_t Base, typename Alphabet>
struct to_ascii_table { … };
template <uint64_t Base, typename Alphabet>
alignas(hardware_constructive_interference_size)
typename to_ascii_table<Base, Alphabet>::data_type_ const
to_ascii_table<Base, Alphabet>::data = …;
extern template to_ascii_table<8, to_ascii_alphabet_lower>::data_type_ const
to_ascii_table<8, to_ascii_alphabet_lower>::data;
extern template to_ascii_table<10, to_ascii_alphabet_lower>::data_type_ const
to_ascii_table<10, to_ascii_alphabet_lower>::data;
extern template to_ascii_table<16, to_ascii_alphabet_lower>::data_type_ const
to_ascii_table<16, to_ascii_alphabet_lower>::data;
extern template to_ascii_table<8, to_ascii_alphabet_upper>::data_type_ const
to_ascii_table<8, to_ascii_alphabet_upper>::data;
extern template to_ascii_table<10, to_ascii_alphabet_upper>::data_type_ const
to_ascii_table<10, to_ascii_alphabet_upper>::data;
extern template to_ascii_table<16, to_ascii_alphabet_upper>::data_type_ const
to_ascii_table<16, to_ascii_alphabet_upper>::data;
template <uint64_t Base, typename Int>
struct to_ascii_powers { … };
template <uint64_t Base, typename Int>
alignas(hardware_constructive_interference_size)
typename to_ascii_powers<Base, Int>::data_type_ const
to_ascii_powers<Base, Int>::data = …;
extern template to_ascii_powers<8, uint64_t>::data_type_ const
to_ascii_powers<8, uint64_t>::data;
extern template to_ascii_powers<10, uint64_t>::data_type_ const
to_ascii_powers<10, uint64_t>::data;
extern template to_ascii_powers<16, uint64_t>::data_type_ const
to_ascii_powers<16, uint64_t>::data;
template <uint64_t Base>
FOLLY_ALWAYS_INLINE size_t to_ascii_size_imuls(uint64_t v) { … }
template <uint64_t Base>
FOLLY_ALWAYS_INLINE size_t to_ascii_size_idivs(uint64_t v) { … }
template <uint64_t Base>
FOLLY_ALWAYS_INLINE size_t to_ascii_size_array(uint64_t v) { … }
template <uint64_t Base>
FOLLY_ALWAYS_INLINE size_t to_ascii_size_clzll(uint64_t v) { … }
template <uint64_t Base>
FOLLY_ALWAYS_INLINE size_t to_ascii_size_route(uint64_t v) { … }
template <uint64_t Base, typename Alphabet>
FOLLY_ALWAYS_INLINE void to_ascii_with_basic(
char* out, size_t size, uint64_t v) { … }
template <uint64_t Base, typename Alphabet>
FOLLY_ALWAYS_INLINE void to_ascii_with_array(
char* out, size_t size, uint64_t v) { … }
template <uint64_t Base, typename Alphabet>
FOLLY_ALWAYS_INLINE void to_ascii_with_table(
char* out, size_t size, uint64_t v) { … }
template <uint64_t Base, typename Alphabet>
FOLLY_ALWAYS_INLINE size_t to_ascii_with_table(char* out, uint64_t v) { … }
template <uint64_t Base, typename Alphabet>
FOLLY_ALWAYS_INLINE void to_ascii_with_route(
char* outb, size_t size, uint64_t v) { … }
template <uint64_t Base, typename Alphabet>
FOLLY_ALWAYS_INLINE size_t
to_ascii_with_route(char* outb, char const* oute, uint64_t v) { … }
template <uint64_t Base, typename Alphabet, size_t N>
FOLLY_ALWAYS_INLINE size_t to_ascii_with_route(char (&out)[N], uint64_t v) { … }
}
to_ascii_size_max;
to_ascii_size_max_decimal;
template <uint64_t Base>
size_t to_ascii_size(uint64_t v) { … }
inline size_t to_ascii_size_decimal(uint64_t v) { … }
template <uint64_t Base, typename Alphabet>
size_t to_ascii_with(char* outb, char const* oute, uint64_t v) { … }
template <uint64_t Base, typename Alphabet, size_t N>
size_t to_ascii_with(char (&out)[N], uint64_t v) { … }
template <uint64_t Base>
size_t to_ascii_lower(char* outb, char const* oute, uint64_t v) { … }
template <uint64_t Base, size_t N>
size_t to_ascii_lower(char (&out)[N], uint64_t v) { … }
template <uint64_t Base>
size_t to_ascii_upper(char* outb, char const* oute, uint64_t v) { … }
template <uint64_t Base, size_t N>
size_t to_ascii_upper(char (&out)[N], uint64_t v) { … }
inline size_t to_ascii_decimal(char* outb, char const* oute, uint64_t v) { … }
template <size_t N>
inline size_t to_ascii_decimal(char (&out)[N], uint64_t v) { … }
}