11 #ifndef PQXX_H_STRINGCONV 12 #define PQXX_H_STRINGCONV 14 #include "pqxx/compiler-public.hxx" 23 #if __has_include(<charconv>) 27 #include "pqxx/except.hxx" 28 #include "pqxx/util.hxx" 29 #include "pqxx/zview.hxx" 75 template<
typename TYPE>
86 template<
typename TYPE,
typename ENABLE =
void>
struct nullness 95 static bool is_null(TYPE
const &value);
103 [[nodiscard]]
static TYPE null();
110 static constexpr
bool has_null =
false;
111 static constexpr
bool always_null =
false;
112 [[nodiscard]]
static constexpr
bool is_null(TYPE
const &) noexcept
146 [[nodiscard]]
static inline zview 147 to_buf(
char *begin,
char *end, TYPE
const &value);
157 static inline char *into_buf(
char *begin,
char *end, TYPE
const &value);
163 [[nodiscard]]
static inline TYPE
from_string(std::string_view text);
170 [[nodiscard]]
static inline std::size_t
176 template<
typename ENUM>
199 [[nodiscard]]
static constexpr
zview 200 to_buf(
char *begin,
char *end, ENUM
const &value)
202 return impl_traits::to_buf(begin, end, static_cast<impl_type>(value));
205 static constexpr
char *
into_buf(
char *begin,
char *end, ENUM
const &value)
207 return impl_traits::into_buf(begin, end, static_cast<impl_type>(value));
215 [[nodiscard]]
static std::size_t
size_buffer(ENUM
const &value) noexcept
235 #define PQXX_DECLARE_ENUM_CONVERSION(ENUM) \ 236 template<> struct string_traits<ENUM> : pqxx::internal::enum_traits<ENUM> \ 238 template<> inline std::string const type_name<ENUM> { #ENUM } 256 template<
typename TYPE>
271 [[nodiscard]]
inline std::string_view
from_string(std::string_view text)
285 template<
typename T>
inline void from_string(std::string_view text, T &value)
287 value = from_string<T>(text);
297 template<
typename TYPE>
inline std::string
to_string(TYPE
const &value);
304 template<
typename TYPE>
305 inline void into_string(TYPE
const &value, std::string &out);
309 template<
typename TYPE>
310 [[nodiscard]]
inline bool is_null(TYPE
const &value) noexcept
320 template<
typename TYPE>
321 [[nodiscard]]
inline std::size_t
size_buffer(TYPE
const &value) noexcept
359 #include "pqxx/internal/conversions.hxx" static TYPE from_string(std::string_view text)
Parse a string representation of a TYPE value.
Definition: strconv.cxx:718
void from_string(std::string_view text, T &value)
Attempt to convert postgres-generated string to given built-in object.
Definition: strconv.hxx:285
Traits class for use in string conversions.
Definition: strconv.hxx:126
Private namespace for libpqxx's internal use; do not access.
Definition: composite.hxx:70
Helper class for defining enum conversions.
Definition: strconv.hxx:194
static constexpr char * into_buf(char *begin, char *end, ENUM const &value)
Definition: strconv.hxx:205
void into_string(TYPE const &value, std::string &out)
Convert a value to a readable string that PostgreSQL will understand.
T from_string(field const &value)
Convert a field's value to type T.
Definition: field.hxx:377
constexpr bool is_sql_array
Does this type translate to an SQL array?
Definition: strconv.hxx:334
static bool is_null(TYPE const &value)
Is value a null?
constexpr bool is_unquoted_safe
Can we use this type in arrays and composite types without quoting them?
Definition: strconv.hxx:350
std::string to_string(field const &value)
Convert a field to a string.
Definition: result.cxx:498
constexpr char array_separator
Element separator between SQL array elements of this type.
Definition: strconv.hxx:354
static bool always_null
Is this type always null?
Definition: strconv.hxx:92
std::underlying_type_t< ENUM > impl_type
Definition: strconv.hxx:196
static std::size_t size_buffer(TYPE const &value) noexcept
Estimate how much buffer space is needed to represent value.
static std::size_t size_buffer(ENUM const &value) noexcept
Definition: strconv.hxx:215
The home of all libpqxx classes, functions, templates, etc.
Definition: array.hxx:25
static constexpr zview to_buf(char *begin, char *end, ENUM const &value)
Definition: strconv.hxx:200
std::string const type_name
A human-readable name for a type, used in error messages and such.
Definition: strconv.hxx:76
static constexpr bool is_null(TYPE const &) noexcept
Definition: strconv.hxx:112
bool is_null(TYPE const &value) noexcept
Is value null?
Definition: strconv.hxx:310
static ENUM from_string(std::string_view text)
Definition: strconv.hxx:210
Marker-type wrapper: zero-terminated std::string_view.
Definition: zview.hxx:36
static bool has_null
Does this type have a null value?
Definition: strconv.hxx:89
std::size_t size_buffer(TYPE const &value) noexcept
Estimate how much buffer space is needed to represent value as a string.
Definition: strconv.hxx:321
Nullness traits describing a type which does not have a null value.
Definition: strconv.hxx:108
std::string demangle_type_name(char const [])
Attempt to demangle std::type_info::name() to something human-readable.
Definition: strconv.cxx:223
Traits describing a type's "null value," if any.
Definition: strconv.hxx:86