libpqxx  7.0.7
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. More...
 
static char * into_buf (char *begin, char *end, TYPE const &value)
 Write value's string representation into buffer at begin. More...
 
static TYPE from_string (std::string_view text)
 Parse a string representation of a TYPE value. More...
 
static size_t size_buffer (TYPE const &value)
 Estimate how much buffer space is needed to represent value. More...
 

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.

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.

Referenced by pqxx::internal::enum_traits< ENUM >::from_string(), and pqxx::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.

Assumes that value is non-null.

Writes value's string representation into the buffer, starting exactly at begin, and ensuring a trailing zero. Returns the address just beyond the trailing zero, so the caller could use it as the begin for another call to into_buf writing a next value.

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

◆ size_buffer()

template<typename TYPE >
static size_t pqxx::string_traits< TYPE >::size_buffer ( TYPE const &  value)
static

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::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.

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_overrunif 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().


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