libpqxx  7.0.0
pqxx::internal Namespace Reference

Private namespace for libpqxx's internal use; do not access. More...

Namespaces

 gate
 

Classes

class  basic_robusttransaction
 Helper base class for the robusttransaction class template. More...
 
class  basic_transaction
 Helper base class for the transaction class template. More...
 
struct  enum_traits
 Helper class for defining enum conversions. More...
 
class  namedclass
 Helper base class: object descriptions for error messages and such. More...
 
class  transactionfocus
 
struct  TypedCopyEscaper
 
class  unique
 Ensure proper opening/closing of GUEST objects related to a "host" object. More...
 

Functions

void wait_read (internal::pq::PGconn const *)
 
void wait_read (internal::pq::PGconn const *, long seconds, long microseconds)
 
void wait_write (internal::pq::PGconn const *)
 
void clear_result (pq::PGresult const *)
 C++ wrapper for libpq's PQclear. More...
 
std::string demangle_type_name (char const [])
 Attempt to demangle std::type_info::name() to something human-readable. More...
 
std::string copy_string_escape (std::string_view)
 
void check_unique_registration (namedclass const *new_ptr, namedclass const *old_ptr)
 
void check_unique_unregistration (namedclass const *new_ptr, namedclass const *old_ptr)
 
int PQXX_VERSION_CHECK () noexcept
 Library version check stub. More...
 
char const * name_encoding (int encoding_id)
 
encoding_group enc_group (int libpq_enc_id)
 
encoding_group enc_group (std::string_view encoding_name)
 
template<template< encoding_group > class T, typename F >
constexpr F * for_encoding (encoding_group enc)
 Look up instantiation T<enc>::call at runtime. More...
 
glyph_scanner_func * get_glyph_scanner (encoding_group enc)
 
std::string::size_type find_with_encoding (encoding_group enc, std::string_view haystack, char needle, std::string::size_type start)
 
std::string::size_type find_with_encoding (encoding_group enc, std::string_view haystack, std::string_view needle, std::string::size_type start)
 
void throw_null_conversion (std::string const &type)
 
std::string state_buffer_overrun (int have_bytes, int need_bytes)
 
template<typename F >
std::string to_dumb_stringstream (dumb_stringstream< F > &s, F value)
 
template<typename T >
std::string to_string_float (T value)
 Floating-point implementations for pqxx::to_string(). More...
 
template std::string to_string_float (float)
 
template std::string to_string_float (double)
 
template std::string to_string_float (long double)
 

Variables

template<pqxx::isolation_level isolation, pqxx::write_policy rw>
const zview begin_cmd
 The SQL command for starting a given type of transaction. More...
 

Detailed Description

Private namespace for libpqxx's internal use; do not access.

This namespace hides definitions internal to libpqxx. These are not supposed to be used by client programs, and they may change at any time without notice.

Conversely, if you find something in this namespace tremendously useful, by all means do lodge a request for its publication.

Warning
Here be dragons!

Version check.

Copyright (c) 2000-2020, Jeroen T. Vermeulen.

See COPYING for copyright license. If you did not receive a file called COPYING with this source code, please notify the distributor of this mistake, or contact the author.

Function Documentation

◆ check_unique_registration()

void pqxx::internal::check_unique_registration ( namedclass const *  new_ptr,
namedclass const *  old_ptr 
)

◆ check_unique_unregistration()

void pqxx::internal::check_unique_unregistration ( namedclass const *  new_ptr,
namedclass const *  old_ptr 
)

◆ clear_result()

void pqxx::internal::clear_result ( pq::PGresult const *  data)

C++ wrapper for libpq's PQclear.

References pqxx::result::result().

Referenced by pqxx::result::table_column().

◆ copy_string_escape()

std::string pqxx::internal::copy_string_escape ( std::string_view  s)

◆ demangle_type_name()

std::string pqxx::internal::demangle_type_name ( char const  raw[])

Attempt to demangle std::type_info::name() to something human-readable.

◆ enc_group() [1/2]

encoding_group pqxx::internal::enc_group ( int  libpq_enc_id)

◆ enc_group() [2/2]

encoding_group pqxx::internal::enc_group ( std::string_view  encoding_name)

◆ find_with_encoding() [1/2]

std::string::size_type pqxx::internal::find_with_encoding ( encoding_group  enc,
std::string_view  haystack,
char  needle,
std::string::size_type  start 
)

◆ find_with_encoding() [2/2]

std::string::size_type pqxx::internal::find_with_encoding ( encoding_group  enc,
std::string_view  haystack,
std::string_view  needle,
std::string::size_type  start 
)

◆ for_encoding()

template<template< encoding_group > class T, typename F >
constexpr F* pqxx::internal::for_encoding ( encoding_group  enc)

Look up instantiation T<enc>::call at runtime.

Here, "T" is a struct template with a static member function "call", whose type is "F".

The return value is a pointer to the "call" member function for the instantiation of T for encoding group enc.

References pqxx::to_string().

◆ get_glyph_scanner()

glyph_scanner_func* pqxx::internal::get_glyph_scanner ( encoding_group  enc)

◆ name_encoding()

char const* pqxx::internal::name_encoding ( int  encoding_id)

◆ PQXX_VERSION_CHECK()

int pqxx::internal::PQXX_VERSION_CHECK ( )
noexcept

Library version check stub.

Helps detect version mismatches between libpqxx headers and the libpqxx library binary.

Sometimes users run into trouble linking their code against libpqxx because they build their own libpqxx, but the system also has a different version installed. The declarations in the headers against which they compile their code will differ from the ones used to build the libpqxx version they're using, leading to confusing link errors. The solution is to generate a link error when the libpqxx binary is not the same version as the libpqxx headers used to compile the code.

This function's definition is in the libpqxx binary, so it's based on the version as found in the binary. The headers contain a call to the function, whose name contains the libpqxx version as found in the headers. (The library build process will use its own local headers even if another version of the headers is installed on the system.)

If the libpqxx binary was compiled for a different version than the user's code, linking will fail with an error: check_library_version will not exist for the given version number.

Referenced by pqxx::check_version().

◆ state_buffer_overrun()

std::string pqxx::internal::state_buffer_overrun ( int  have_bytes,
int  need_bytes 
)

References to_string_float().

◆ throw_null_conversion()

void pqxx::internal::throw_null_conversion ( std::string const &  type)

◆ to_dumb_stringstream()

template<typename F >
std::string pqxx::internal::to_dumb_stringstream ( dumb_stringstream< F > &  s,
value 
)

Referenced by to_string_float().

◆ to_string_float() [1/4]

template<typename T >
std::string pqxx::internal::to_string_float ( value)

Floating-point implementations for pqxx::to_string().

References pqxx::from_string(), and to_dumb_stringstream().

Referenced by state_buffer_overrun().

◆ to_string_float() [2/4]

template std::string pqxx::internal::to_string_float ( float  )

◆ to_string_float() [3/4]

template std::string pqxx::internal::to_string_float ( double  )

◆ to_string_float() [4/4]

template std::string pqxx::internal::to_string_float ( long  double)

◆ wait_read() [1/2]

void pqxx::internal::wait_read ( internal::pq::PGconn const *  c)

◆ wait_read() [2/2]

void pqxx::internal::wait_read ( internal::pq::PGconn const *  c,
long  seconds,
long  microseconds 
)

References pqxx::check_cast().

◆ wait_write()

void pqxx::internal::wait_write ( internal::pq::PGconn const *  c)

References wait_read().

Referenced by pqxx::connection::quote().

Variable Documentation

◆ begin_cmd

template<pqxx::isolation_level isolation, pqxx::write_policy rw>
const zview pqxx::internal::begin_cmd

The SQL command for starting a given type of transaction.