8#if defined(PQXX_HAVE_SPAN) && defined(PQXX_HAVE_RANGES)
29 return static_cast<char>(i +
'0');
48template<
typename HAVE,
typename NEED>
52 static_cast<int>(have_bytes),
static_cast<int>(need_bytes));
80 static char *
into_buf(
char *,
char *, CHAR_TYPE) =
delete;
81 static constexpr zview
82 to_buf(
char *,
char *, CHAR_TYPE
const &)
noexcept =
delete;
84 static constexpr std::size_t
98 auto const space{end - begin};
100 auto const len = std::size(
text) + 1;
103 "Not enough buffer space to insert " +
type_name<T> +
". " +
105 std::memmove(begin,
text.data(), len);
126 return std::is_signed_v<T> + std::numeric_limits<T>::digits10 + 1 + 1;
142 static constexpr std::size_t
digits10(std::size_t value)
noexcept
152 using lims = std::numeric_limits<T>;
176 auto const max_pos_exp{
digits10(lims::max_exponent10)};
179 auto const max_neg_exp{
180 digits10(lims::max_digits10 - lims::min_exponent10)};
183 std::numeric_limits<T>::max_digits10 +
188 (std::max)(max_pos_exp, max_neg_exp) +
255 static constexpr zview to_buf(
char *,
char *,
bool const &value)
noexcept
257 return value ?
"true"_zv :
"false"_zv;
260 static char *
into_buf(
char *begin,
char *end,
bool const &value)
265 static constexpr std::size_t
size_buffer(
bool const &)
noexcept {
return 6; }
272template<
typename T>
struct nullness<std::optional<T>>
277 static constexpr bool is_null(std::optional<T>
const &v)
noexcept
281 static constexpr std::optional<T>
null() {
return {}; }
299 static char *
into_buf(
char *begin,
char *end, std::optional<T>
const &value)
304 static zview to_buf(
char *begin,
char *end, std::optional<T>
const &value)
314 return std::optional<T>{
318 static std::size_t
size_buffer(std::optional<T>
const &value)
noexcept
332template<
typename... T>
struct nullness<std::variant<T...>>
336 static constexpr bool is_null(std::variant<T...>
const &value)
noexcept
338 return value.valueless_by_exception() or
340 [](
auto const &i)
noexcept {
350 static constexpr std::variant<T...>
null() =
delete;
360 into_buf(
char *begin,
char *end, std::variant<T...>
const &value)
363 [begin, end](
auto const &i) {
368 static zview to_buf(
char *begin,
char *end, std::variant<T...>
const &value)
371 [begin, end](
auto const &i) {
376 static std::size_t
size_buffer(std::variant<T...>
const &value)
noexcept
393template<
typename... Args>
396 return std::visit([](
auto &v) {
return param_format(v); }, value);
400template<
typename... T>
416 static char *
into_buf(
char *,
char *, std::nullptr_t) =
delete;
418 [[deprecated(
"Do not convert nulls.")]]
static constexpr zview
419 to_buf(
char *,
char *, std::nullptr_t
const &)
noexcept
424 [[deprecated(
"Do not convert nulls.")]]
static constexpr std::size_t
438 static char *
into_buf(
char *,
char *, std::nullopt_t) =
delete;
440 [[deprecated(
"Do not convert nulls.")]]
static constexpr zview
441 to_buf(
char *,
char *, std::nullopt_t
const &)
noexcept
446 [[deprecated(
"Do not convert nulls.")]]
static constexpr std::size_t
460 static char *
into_buf(
char *,
char *, std::monostate) =
delete;
462 [[deprecated(
"Do not convert nulls.")]]
static constexpr zview
463 to_buf(
char *,
char *, std::monostate
const &)
noexcept
468 [[deprecated(
"Do not convert nulls.")]]
static constexpr std::size_t
473 [[deprecated(
"Do not convert nulls.")]]
static std::monostate
485 static constexpr bool is_null(
char const *t)
noexcept
489 static constexpr char const *
null() noexcept {
return nullptr; }
501 static zview to_buf(
char *begin,
char *end,
char const *
const &value)
506 static char *
into_buf(
char *begin,
char *end,
char const *
const &value)
508 auto const space{end - begin};
510 auto const len{std::strlen(value) + 1};
511 if (space < ptrdiff_t(len))
513 "Could not copy string: buffer too small. " +
515 std::memmove(begin, value, len);
524 return std::strlen(value) + 1;
533 static constexpr bool is_null(
char const *t)
noexcept
537 static constexpr char const *
null() {
return nullptr; }
547 static char *
into_buf(
char *begin,
char *end,
char *
const &value)
581 static constexpr zview
582 to_buf(
char *,
char *,
char const (&value)[N])
noexcept
584 return zview{value, N - 1};
587 static char *
into_buf(
char *begin,
char *end,
char const (&value)[N])
591 "Could not convert char[] to string: too long for buffer."};
592 std::memcpy(begin, value, N);
595 static constexpr std::size_t
size_buffer(
char const (&)[N])
noexcept
616 return std::string{
text};
619 static char *
into_buf(
char *begin,
char *end, std::string
const &value)
623 "Could not convert string to string: too long for buffer."};
625 value.copy(begin, std::size(value));
626 begin[std::size(value)] =
'\0';
627 return begin + std::size(value) + 1;
630 static zview to_buf(
char *begin,
char *end, std::string
const &value)
637 return std::size(value) + 1;
656 static constexpr std::size_t
659 return std::size(value) + 1;
662 static char *
into_buf(
char *begin,
char *end, std::string_view
const &value)
666 "Could not store string_view: too long for buffer."};
667 value.copy(begin, std::size(value));
668 begin[std::size(value)] =
'\0';
669 return begin + std::size(value) + 1;
672 static zview to_buf(
char *begin,
char *end, std::string_view
const &value)
694 static constexpr std::size_t
697 return std::size(value) + 1;
702 auto const size{std::size(value)};
705 value.copy(begin, size);
707 return begin + size + 1;
710 static std::string_view
to_buf(
char *begin,
char *end,
zview const &value)
712 char *
const stop{
into_buf(begin, end, value)};
713 return {begin,
static_cast<std::size_t
>(stop - begin - 1)};
730 static std::size_t
size_buffer(std::stringstream
const &) =
delete;
734 std::stringstream stream;
735 stream.write(
text.data(), std::streamsize(std::size(
text)));
739 static char *
into_buf(
char *,
char *, std::stringstream
const &) =
delete;
740 static std::string_view
741 to_buf(
char *,
char *, std::stringstream
const &) =
delete;
749 static constexpr bool is_null(std::nullptr_t
const &)
noexcept
753 static constexpr std::nullptr_t
null() noexcept {
return nullptr; }
761 static constexpr bool is_null(std::nullopt_t
const &)
noexcept
765 static constexpr std::nullopt_t
null() noexcept {
return std::nullopt; }
773 static constexpr bool is_null(std::monostate
const &)
noexcept
777 static constexpr std::monostate
null() noexcept {
return {}; }
781template<
typename T>
struct nullness<std::unique_ptr<T>>
785 static constexpr bool is_null(std::unique_ptr<T>
const &t)
noexcept
789 static constexpr std::unique_ptr<T>
null() {
return {}; }
793template<
typename T,
typename... Args>
807 into_buf(
char *begin,
char *end, std::unique_ptr<T, Args...>
const &value)
813 to_buf(
char *begin,
char *end, std::unique_ptr<T, Args...>
const &value)
832template<
typename T,
typename... Args>
839template<
typename T,
typename... Args>
844template<
typename T>
struct nullness<std::shared_ptr<T>>
848 static constexpr bool is_null(std::shared_ptr<T>
const &t)
noexcept
852 static constexpr std::shared_ptr<T>
null() {
return {}; }
868 static zview to_buf(
char *begin,
char *end, std::shared_ptr<T>
const &value)
873 into_buf(
char *begin,
char *end, std::shared_ptr<T>
const &value)
877 static std::size_t
size_buffer(std::shared_ptr<T>
const &value)
noexcept
902#if defined(PQXX_HAVE_CONCEPTS) && defined(PQXX_HAVE_RANGES)
918 static std::size_t
size_buffer(DATA
const &value)
noexcept
923 static zview
to_buf(
char *begin,
char *end, DATA
const &value)
928 static char *
into_buf(
char *begin,
char *end, DATA
const &value)
932 throw conversion_overrun{
933 "Not enough buffer space to escape binary data."};
935 return begin + budget;
970 "Not enough buffer space to escape binary data."};
972 return begin + budget;
1016 "Not enough buffer space to escape binary data."};
1018 return begin + budget;
1040 static constexpr zview s_null{
"NULL"};
1051 static char *
into_buf(
char *begin,
char *end, Container
const &value)
1053 assert(begin <= end);
1057 "Not enough buffer space to convert array to string."};
1062 bool nonempty{
false};
1063 for (
auto const &elt : value)
1067 s_null.copy(here, std::size(s_null));
1068 here += std::size(s_null);
1088 assert(elt_budget <
static_cast<std::size_t
>(end - here));
1094 if (c ==
'\\' or c ==
'"')
1117 return 3 + std::accumulate(
1118 std::begin(value), std::end(value), std::size_t{},
1119 [](std::size_t acc, elt_type
const &elt) {
1127 (std::size(s_null) + 1) :
1131 return 3 + std::accumulate(
1132 std::begin(value), std::end(value), std::size_t{},
1133 [](std::size_t acc, elt_type
const &elt) {
1139 std::size_t
const elt_size{
1142 return acc + 2 * elt_size + 2;
1154template<
typename T,
typename... Args>
1159template<
typename T,
typename... Args>
1166template<
typename T,
typename... Args>
1174template<
typename... Args>
1184#if defined(PQXX_HAVE_SPAN) && __has_include(<span>)
1185template<
typename T,
size_t Extent>
1186struct nullness<std::span<T, Extent>> : no_null<std::span<T, Extent>>
1190template<
typename T,
size_t Extent>
1196template<
typename T,
size_t Extent>
1203template<
size_t Extent>
1210template<
typename T,
size_t Extent>
1215template<
typename T, std::
size_t N>
1220template<
typename T, std::
size_t N>
1227template<
typename T,
typename... Args, Args... args>
1235template<
typename... Args, Args... args>
1242template<
typename T, std::
size_t N>
1249template<
typename T>
inline std::string
to_string(T
const &value)
1253 "Attempt to convert null " + std::string{
type_name<T>} +
1260 auto const data{buf.data()};
1263 buf.resize(
static_cast<std::size_t
>(end - data - 1));
1276template<>
inline std::string
to_string(
long double const &value)
1280template<>
inline std::string
to_string(std::stringstream
const &value)
1286template<
typename T>
inline void into_string(T
const &value, std::string &out)
1290 "Attempt to convert null " +
type_name<T> +
" to a string."};
1295 auto const data{out.data()};
1298 out.resize(
static_cast<std::size_t
>(end - data - 1));
An SQL array received from the database.
Definition array.hxx:57
Marker-type wrapper: zero-terminated std::string_view.
Definition zview.hxx:38
Value conversion failed, e.g. when converting "Hello" to int.
Definition except.hxx:283
Could not convert value to string: not enough buffer space.
Definition except.hxx:313
Internal items for libpqxx' own use. Do not use these yourself.
Definition encodings.cxx:33
void PQXX_LIBEXPORT unesc_bin(std::string_view escaped_data, std::byte buffer[])
Reconstitute binary data from its escaped version.
Definition util.cxx:165
void throw_null_conversion(std::string const &type)
Throw exception for attempt to convert SQL NULL to given type.
Definition strconv.cxx:257
constexpr std::size_t size_esc_bin(std::size_t binary_bytes) noexcept
Compute buffer size needed to escape binary data for use as a BYTEA.
Definition util.hxx:516
constexpr char number_to_digit(int i) noexcept
Convert a number in [0, 9] to its ASCII digit.
Definition conversions.hxx:27
constexpr bool cmp_less(LEFT lhs, RIGHT rhs) noexcept
Same as std::cmp_less, or a workaround where that's not available.
Definition util.hxx:65
constexpr int digit_to_number(char c) noexcept
Compute numeric value of given textual digit (assuming that it is a digit).
Definition conversions.hxx:34
void PQXX_LIBEXPORT esc_bin(bytes_view binary_data, char buffer[]) noexcept
Hex-escape binary data into a buffer.
Definition util.cxx:133
std::string to_string_float(T value)
Floating-point implementations for pqxx::to_string().
Definition strconv.cxx:671
constexpr bool cmp_greater(LEFT lhs, RIGHT rhs) noexcept
C++20 std::cmp_greater, or workaround if not available.
Definition util.hxx:87
std::string state_buffer_overrun(int have_bytes, int need_bytes)
Summarize buffer overrun.
Definition strconv.cxx:269
char * generic_into_buf(char *begin, char *end, T const &value)
Generic implementation for into_buf, on top of to_buf.
Definition conversions.hxx:95
constexpr bool cmp_greater_equal(LEFT lhs, RIGHT rhs) noexcept
C++20 std::cmp_greater_equal, or workaround if not available.
Definition util.hxx:113
constexpr bool cmp_less_equal(LEFT lhs, RIGHT rhs) noexcept
C++20 std::cmp_less_equal, or workaround if not available.
Definition util.hxx:100
constexpr std::size_t size_unesc_bin(std::size_t escaped_bytes) noexcept
Compute binary size from the size of its escaped version.
Definition util.hxx:525
The home of all libpqxx classes, functions, templates, etc.
Definition array.cxx:27
std::string const type_name
A human-readable name for a type, used in error messages and such.
Definition strconv.hxx:81
constexpr char array_separator
Element separator between SQL array elements of this type.
Definition strconv.hxx:560
std::conditional< has_generic_bytes_char_traits, std::basic_string_view< std::byte >, std::basic_string_view< std::byte, byte_char_traits > >::type bytes_view
Type alias for a view of bytes.
Definition util.hxx:383
constexpr format param_format(std::optional< T > const &value)
Definition conversions.hxx:286
std::string to_string(T const &value)
Definition conversions.hxx:1249
std::conditional< has_generic_bytes_char_traits, std::basic_string< std::byte >, std::basic_string< std::byte, byte_char_traits > >::type bytes
Type alias for a container containing bytes.
Definition util.hxx:373
constexpr bool is_unquoted_safe
Can we use this type in arrays and composite types without quoting them?
Definition strconv.hxx:556
std::size_t size_buffer(TYPE const &...value) noexcept
Estimate how much buffer space is needed to represent values as a string.
Definition strconv.hxx:527
std::remove_cv_t< std::remove_reference_t< TYPE > > strip_t
Remove any constness, volatile, and reference-ness from a type.
Definition types.hxx:80
constexpr bool is_null(TYPE const &value) noexcept
Is value null?
Definition strconv.hxx:516
zview generic_to_buf(char *begin, char *end, TYPE const &value)
Implement string_traits<TYPE>::to_buf by calling into_buf.
Definition strconv.hxx:588
constexpr bool is_sql_array
Does this type translate to an SQL array?
Definition strconv.hxx:540
void into_string(T const &value, std::string &out)
Definition conversions.hxx:1286
T from_string(field const &value)
Convert a field's value to type T.
Definition field.hxx:548
format
Format code: is data text or binary?
Definition types.hxx:70
@ text
Definition types.hxx:71
@ binary
Definition types.hxx:72
String traits for SQL arrays.
Definition conversions.hxx:1036
static zview to_buf(char *begin, char *end, Container const &value)
Definition conversions.hxx:1046
static constexpr bool converts_from_string
Definition conversions.hxx:1044
static char * into_buf(char *begin, char *end, Container const &value)
Definition conversions.hxx:1051
static constexpr bool converts_to_string
Definition conversions.hxx:1043
static std::size_t size_buffer(Container const &value) noexcept
Definition conversions.hxx:1114
Deliberately nonfunctional conversion traits for char types.
Definition conversions.hxx:77
static constexpr bool converts_to_string
Definition conversions.hxx:78
static constexpr std::size_t size_buffer(CHAR_TYPE const &) noexcept=delete
static constexpr zview to_buf(char *, char *, CHAR_TYPE const &) noexcept=delete
static constexpr bool converts_from_string
Definition conversions.hxx:79
static char * into_buf(char *, char *, CHAR_TYPE)=delete
static CHAR_TYPE from_string(std::string_view)=delete
String traits for builtin floating-point types.
Definition conversions.hxx:134
static constexpr std::size_t digits10(std::size_t value) noexcept
Definition conversions.hxx:142
static constexpr bool converts_from_string
Definition conversions.hxx:136
static PQXX_LIBEXPORT char * into_buf(char *begin, char *end, T const &value)
Definition strconv.cxx:642
static constexpr std::size_t size_buffer(T const &) noexcept
Definition conversions.hxx:150
static constexpr bool converts_to_string
Definition conversions.hxx:135
static PQXX_LIBEXPORT T from_string(std::string_view text)
Definition strconv.cxx:728
static PQXX_LIBEXPORT zview to_buf(char *begin, char *end, T const &value)
Floating-point to_buf implemented in terms of to_string.
Definition strconv.cxx:602
String traits for builtin integral types (though not bool).
Definition conversions.hxx:113
static constexpr std::size_t size_buffer(T const &) noexcept
Definition conversions.hxx:120
static PQXX_LIBEXPORT T from_string(std::string_view text)
Definition strconv.cxx:706
static PQXX_LIBEXPORT zview to_buf(char *begin, char *end, T const &value)
Definition strconv.cxx:156
static constexpr bool converts_from_string
Definition conversions.hxx:115
static PQXX_LIBEXPORT char * into_buf(char *begin, char *end, T const &value)
Definition strconv.cxx:198
static constexpr bool converts_to_string
Definition conversions.hxx:114
Nullness traits describing a type which does not have a null value.
Definition strconv.hxx:114
static constexpr bool always_null
Definition conversions.hxx:532
static constexpr bool is_null(char const *t) noexcept
Definition conversions.hxx:533
static constexpr bool has_null
Definition conversions.hxx:531
static constexpr char const * null()
Definition conversions.hxx:537
static constexpr bool has_null
Definition conversions.hxx:483
static constexpr char const * null() noexcept
Definition conversions.hxx:489
static constexpr bool is_null(char const *t) noexcept
Definition conversions.hxx:485
static constexpr bool always_null
Definition conversions.hxx:484
static constexpr bool always_null
Definition conversions.hxx:772
static constexpr std::monostate null() noexcept
Definition conversions.hxx:777
static constexpr bool is_null(std::monostate const &) noexcept
Definition conversions.hxx:773
static constexpr bool has_null
Definition conversions.hxx:771
static constexpr std::nullopt_t null() noexcept
Definition conversions.hxx:765
static constexpr bool has_null
Definition conversions.hxx:759
static constexpr bool is_null(std::nullopt_t const &) noexcept
Definition conversions.hxx:761
static constexpr bool always_null
Definition conversions.hxx:760
static constexpr bool has_null
Definition conversions.hxx:747
static constexpr bool is_null(std::nullptr_t const &) noexcept
Definition conversions.hxx:749
static constexpr bool always_null
Definition conversions.hxx:748
static constexpr std::nullptr_t null() noexcept
Definition conversions.hxx:753
static constexpr bool has_null
Definition conversions.hxx:274
static constexpr bool always_null
Technically, you could have an optional of an always-null type.
Definition conversions.hxx:276
static constexpr std::optional< T > null()
Definition conversions.hxx:281
static constexpr bool is_null(std::optional< T > const &v) noexcept
Definition conversions.hxx:277
static constexpr bool always_null
Definition conversions.hxx:847
static constexpr bool is_null(std::shared_ptr< T > const &t) noexcept
Definition conversions.hxx:848
static constexpr std::shared_ptr< T > null()
Definition conversions.hxx:852
static constexpr bool has_null
Definition conversions.hxx:846
static constexpr bool is_null(std::unique_ptr< T > const &t) noexcept
Definition conversions.hxx:785
static constexpr bool has_null
Definition conversions.hxx:783
static constexpr bool always_null
Definition conversions.hxx:784
static constexpr std::unique_ptr< T > null()
Definition conversions.hxx:789
static constexpr std::variant< T... > null()=delete
static constexpr bool always_null
Definition conversions.hxx:335
static constexpr bool has_null
Definition conversions.hxx:334
static constexpr bool is_null(std::variant< T... > const &value) noexcept
Definition conversions.hxx:336
Traits describing a type's "null value," if any.
Definition strconv.hxx:92
static bool has_null
Does this type have a null value?
Definition strconv.hxx:94
static bool always_null
Is this type always null?
Definition strconv.hxx:97
static char * into_buf(char *begin, char *end, bool const &value)
Definition conversions.hxx:260
static constexpr std::size_t size_buffer(bool const &) noexcept
Definition conversions.hxx:265
static constexpr bool converts_from_string
Definition conversions.hxx:251
static constexpr zview to_buf(char *, char *, bool const &value) noexcept
Definition conversions.hxx:255
static constexpr bool converts_to_string
Definition conversions.hxx:250
static std::size_t size_buffer(bytes const &value) noexcept
Definition conversions.hxx:955
static bytes from_string(std::string_view text)
Definition conversions.hxx:975
static constexpr bool converts_from_string
Definition conversions.hxx:953
static constexpr bool converts_to_string
Definition conversions.hxx:952
static char * into_buf(char *begin, char *end, bytes const &value)
Definition conversions.hxx:965
static zview to_buf(char *begin, char *end, bytes const &value)
Definition conversions.hxx:960
static constexpr bool converts_from_string
Definition conversions.hxx:999
static zview to_buf(char *begin, char *end, bytes_view const &value)
Definition conversions.hxx:1006
static constexpr bool converts_to_string
Definition conversions.hxx:998
static char * into_buf(char *begin, char *end, bytes_view const &value)
Definition conversions.hxx:1011
static std::size_t size_buffer(bytes_view const &value) noexcept
Definition conversions.hxx:1001
static char * into_buf(char *begin, char *end, char *const &value)
Definition conversions.hxx:547
static std::size_t size_buffer(char *const &value) noexcept
Definition conversions.hxx:555
static zview to_buf(char *begin, char *end, char *const &value)
Definition conversions.hxx:551
static constexpr bool converts_to_string
Definition conversions.hxx:544
static constexpr bool converts_from_string
Definition conversions.hxx:545
static char * from_string(std::string_view)=delete
Don't allow conversion to this type since it breaks const-safety.
static constexpr bool converts_to_string
Definition conversions.hxx:496
static char const * from_string(std::string_view text)
Definition conversions.hxx:499
static std::size_t size_buffer(char const *const &value) noexcept
Definition conversions.hxx:519
static char * into_buf(char *begin, char *end, char const *const &value)
Definition conversions.hxx:506
static zview to_buf(char *begin, char *end, char const *const &value)
Definition conversions.hxx:501
static constexpr bool converts_from_string
Definition conversions.hxx:497
static void from_string(std::string_view)=delete
Don't allow conversion to this type.
static constexpr bool converts_to_string
Definition conversions.hxx:578
static constexpr zview to_buf(char *, char *, char const (&value)[N]) noexcept
Definition conversions.hxx:582
static constexpr bool converts_from_string
Definition conversions.hxx:579
static char * into_buf(char *begin, char *end, char const (&value)[N])
Definition conversions.hxx:587
static constexpr std::size_t size_buffer(char const (&)[N]) noexcept
Definition conversions.hxx:595
static char * into_buf(char *, char *, std::monostate)=delete
static constexpr zview to_buf(char *, char *, std::monostate const &) noexcept
Definition conversions.hxx:463
static constexpr std::size_t size_buffer(std::monostate) noexcept
Definition conversions.hxx:469
static std::monostate from_string(std::string_view)=delete
static constexpr bool converts_to_string
Definition conversions.hxx:457
static constexpr bool converts_from_string
Definition conversions.hxx:458
static constexpr zview to_buf(char *, char *, std::nullopt_t const &) noexcept
Definition conversions.hxx:441
static std::nullopt_t from_string(std::string_view)=delete
static char * into_buf(char *, char *, std::nullopt_t)=delete
static constexpr bool converts_from_string
Definition conversions.hxx:436
static constexpr std::size_t size_buffer(std::nullopt_t) noexcept
Definition conversions.hxx:447
static constexpr bool converts_to_string
Definition conversions.hxx:435
static std::nullptr_t from_string(std::string_view)=delete
static constexpr bool converts_from_string
Definition conversions.hxx:414
static constexpr std::size_t size_buffer(std::nullptr_t=nullptr) noexcept
Definition conversions.hxx:425
static char * into_buf(char *, char *, std::nullptr_t)=delete
static constexpr bool converts_to_string
Definition conversions.hxx:413
static constexpr zview to_buf(char *, char *, std::nullptr_t const &) noexcept
Definition conversions.hxx:419
static constexpr bool converts_to_string
Definition conversions.hxx:294
static char * into_buf(char *begin, char *end, std::optional< T > const &value)
Definition conversions.hxx:299
static std::optional< T > from_string(std::string_view text)
Definition conversions.hxx:312
static std::size_t size_buffer(std::optional< T > const &value) noexcept
Definition conversions.hxx:318
static constexpr bool converts_from_string
Definition conversions.hxx:296
static zview to_buf(char *begin, char *end, std::optional< T > const &value)
Definition conversions.hxx:304
static constexpr bool converts_to_string
Definition conversions.hxx:858
static std::size_t size_buffer(std::shared_ptr< T > const &value) noexcept
Definition conversions.hxx:877
static std::shared_ptr< T > from_string(std::string_view text)
Definition conversions.hxx:863
static zview to_buf(char *begin, char *end, std::shared_ptr< T > const &value)
Definition conversions.hxx:868
static char * into_buf(char *begin, char *end, std::shared_ptr< T > const &value)
Definition conversions.hxx:873
static constexpr bool converts_from_string
Definition conversions.hxx:860
static constexpr bool converts_to_string
Definition conversions.hxx:611
static constexpr bool converts_from_string
Definition conversions.hxx:612
static zview to_buf(char *begin, char *end, std::string const &value)
Definition conversions.hxx:630
static std::size_t size_buffer(std::string const &value) noexcept
Definition conversions.hxx:635
static char * into_buf(char *begin, char *end, std::string const &value)
Definition conversions.hxx:619
static std::string from_string(std::string_view text)
Definition conversions.hxx:614
static zview to_buf(char *begin, char *end, std::string_view const &value)
Definition conversions.hxx:672
static char * into_buf(char *begin, char *end, std::string_view const &value)
Definition conversions.hxx:662
static constexpr bool converts_from_string
Definition conversions.hxx:654
static std::string_view from_string(std::string_view)=delete
Don't convert to this type; it has nowhere to store its contents.
static constexpr std::size_t size_buffer(std::string_view const &value) noexcept
Definition conversions.hxx:657
static constexpr bool converts_to_string
Definition conversions.hxx:653
static std::size_t size_buffer(std::stringstream const &)=delete
static constexpr bool converts_to_string
Definition conversions.hxx:727
static std::stringstream from_string(std::string_view text)
Definition conversions.hxx:732
static std::string_view to_buf(char *, char *, std::stringstream const &)=delete
static constexpr bool converts_from_string
Definition conversions.hxx:728
static char * into_buf(char *, char *, std::stringstream const &)=delete
static zview to_buf(char *begin, char *end, std::unique_ptr< T, Args... > const &value)
Definition conversions.hxx:813
static std::unique_ptr< T > from_string(std::string_view text)
Definition conversions.hxx:801
static constexpr bool converts_from_string
Definition conversions.hxx:798
static std::size_t size_buffer(std::unique_ptr< T, Args... > const &value) noexcept
Definition conversions.hxx:822
static char * into_buf(char *begin, char *end, std::unique_ptr< T, Args... > const &value)
Definition conversions.hxx:807
static constexpr bool converts_to_string
Definition conversions.hxx:796
static std::variant< T... > from_string(std::string_view)=delete
static constexpr bool converts_to_string
Definition conversions.hxx:356
static zview to_buf(char *begin, char *end, std::variant< T... > const &value)
Definition conversions.hxx:368
static char * into_buf(char *begin, char *end, std::variant< T... > const &value)
Definition conversions.hxx:360
static std::size_t size_buffer(std::variant< T... > const &value) noexcept
Definition conversions.hxx:376
static constexpr std::size_t size_buffer(std::string_view const &value) noexcept
Definition conversions.hxx:695
static constexpr bool converts_from_string
Definition conversions.hxx:692
static zview from_string(std::string_view)=delete
Don't convert to this type; it has nowhere to store its contents.
static char * into_buf(char *begin, char *end, zview const &value)
Definition conversions.hxx:700
static std::string_view to_buf(char *begin, char *end, zview const &value)
Definition conversions.hxx:710
static constexpr bool converts_to_string
Definition conversions.hxx:691
Traits class for use in string conversions.
Definition strconv.hxx:155
static TYPE from_string(std::string_view text)
Parse a string representation of a TYPE value.
static std::size_t size_buffer(TYPE const &value) noexcept
Estimate how much buffer space is needed to represent value.
static zview to_buf(char *begin, char *end, TYPE const &value)
Return a string_view representing value, plus terminating zero.
static constexpr bool converts_to_string
Is conversion from TYPE to strings supported?
Definition strconv.hxx:160
static char * into_buf(char *begin, char *end, TYPE const &value)
Write value's string representation into buffer at begin.
static constexpr bool converts_from_string
Is conversion from string_view to TYPE supported?
Definition strconv.hxx:166