pqxx::string_traits< TYPE > Struct Template Reference

Traits class for use in string conversions. More...

`#include <strconv.hxx>`

## Static Public Member Functions

static zview | to_buf (char *begin, char *end, TYPE const &value)
| Return a `string_view` representing value, plus terminating zero.
static char * | into_buf (char *begin, char *end, TYPE const &value)
| Write value's string representation into buffer at `begin`.
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 Public Attributes

static constexpr bool | converts_to_string {false}
| Is conversion from `TYPE` to strings supported?
static constexpr bool | converts_from_string {false}
| Is conversion from `string_view` to `TYPE` supported?

## Detailed Description

template<typename TYPE>
struct pqxx::string_traits< TYPE >

Traits class for use in string conversions.

Specialize this template for a type for which you wish to add to_string and from_string support.

String conversions are not meant to work for nulls. Check for null before converting a value of `TYPE` to a string, or vice versa.

## Member Function Documentation

## from_string()

template<typename TYPE >

bool pqxx::string_traits< TYPE >::from_string | ( | std::string_view | text | ) |

static

Parse a string representation of a `TYPE` value.

Throws `conversion_error` if `value` does not meet the expected format for a value of this type.

Warning
  A null value has no string representation. Do not parse a null.

References pqxx::text.

Referenced by pqxx::internal::enum_traits< ENUM >::from_string().

## into_buf()

template<typename TYPE >

static char * pqxx::string_traits< TYPE >::into_buf | ( | char * | begin,
|  | char * | end,
|  | TYPE const & | value
| ) |  |

static

Write value's string representation into buffer at `begin`.

Referenced by pqxx::internal::enum_traits< ENUM >::into_buf(), and pqxx::placeholders< COUNTER >::next().

## size_buffer()

template<typename TYPE >

static std::size_t pqxx::string_traits< TYPE >::size_buffer | ( | TYPE const & | value | ) |

static noexcept

Estimate how much buffer space is needed to represent value.

The estimate may be a little pessimistic, if it saves time.

The estimate includes the terminating zero.

Referenced by pqxx::string_traits< binarystring >::into_buf(), and pqxx::internal::enum_traits< ENUM >::size_buffer().

## to_buf()

template<typename TYPE >

static zview pqxx::string_traits< TYPE >::to_buf | ( | char * | begin,
|  | char * | end,
|  | TYPE const & | value
| ) |  |

static

Return a `string_view` representing value, plus terminating zero.

Produces a `string_view` containing the PostgreSQL string representation for `value`.

Warning
  A null value has no string representation. Do not pass a null.

Uses the space from `begin` to `end` as a buffer, if needed. The returned string may lie somewhere in that buffer, or it may be a compile-time constant, or it may be null if value was a null value. Even if the string is stored in the buffer, its `begin()` may or may not be the same as `begin`.

The `string_view` is guaranteed to be valid as long as the buffer from `begin` to `end` remains accessible and unmodified.

Exceptions

  pqxx::conversion_overrun | if the provided buffer space may not be enough. For maximum performance, this is a conservative estimate. It may complain about a buffer which is actually large enough for your value, if an exact check gets too expensive.

Referenced by pqxx::internal::enum_traits< ENUM >::to_buf().

## Member Data Documentation

## converts_from_string

template<typename TYPE >

constexpr bool pqxx::string_traits< TYPE >::converts_from_string {false}

static constexpr

Is conversion from `string_view` to `TYPE` supported?

When defining your own conversions, specialise this as `true` to indicate that your string traits support `from_string`.

## converts_to_string

template<typename TYPE >

constexpr bool pqxx::string_traits< TYPE >::converts_to_string {false}

static constexpr

Is conversion from `TYPE` to strings supported?

When defining your own conversions, specialise this as `true` to indicate that your string traits support the conversions to strings.

The documentation for this struct was generated from the following files:

- strconv.hxx
- strconv.cxx