11#ifndef PQXX_H_BINARYSTRING
12#define PQXX_H_BINARYSTRING
14#if !defined(PQXX_HEADER_PRE)
15# error "Include libpqxx headers as <pqxx/header>, not <pqxx/header.hxx>."
22#include "pqxx/result.hxx"
23#include "pqxx/strconv.hxx"
28template<>
struct string_traits<binarystring>;
77 [[deprecated(
"Use std::byte for binary data.")]]
explicit binarystring(
84 [[deprecated(
"Use std::byte for binary data.")]]
explicit binarystring(
88 [[deprecated(
"Use std::byte for binary data.")]]
binarystring(
89 void const *, std::size_t);
93 std::shared_ptr<value_type> ptr,
size_type size) :
94 m_buf{std::move(ptr)}, m_size{size}
111 return *(data() + m_size - 1);
136 return not operator==(
rhs);
153 return reinterpret_cast<char const *
>(m_buf.get());
159 return std::string_view(get(), size());
173 return reinterpret_cast<std::byte
const *
>(get());
183 std::shared_ptr<value_type> m_buf;
217 "Not enough buffer space to escape binary data."};
218 std::string_view
text{value.
view()};
226 std::shared_ptr<unsigned char>
buf{
227 new unsigned char[size], [](
unsigned char const *
x) {
delete[]
x; }};
229#include "pqxx/internal/ignore-deprecated-pre.hxx"
231#include "pqxx/internal/ignore-deprecated-post.hxx"
The home of all libpqxx classes, functions, templates, etc.
Definition array.hxx:33
constexpr char array_separator
Element separator between SQL array elements of this type.
Definition strconv.hxx:557
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:381
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:371
bytes_view binary_cast(TYPE const &data)
Cast binary data to a type that libpqxx will recognise as binary.
Definition util.hxx:407
zview generic_to_buf(char *begin, char *end, TYPE const &value)
Implement string_traits<TYPE>::to_buf by calling into_buf.
Definition strconv.hxx:585
void unesc_bin(std::string_view escaped_data, std::byte buffer[])
Reconstitute binary data from its escaped version.
Definition util.cxx:165
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:514
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:63
void esc_bin(bytes_view binary_data, char buffer[]) noexcept
Hex-escape binary data into a buffer.
Definition util.cxx:133
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:523
Binary data corresponding to PostgreSQL's "BYTEA" binary-string type.
Definition binarystring.hxx:58
char_type value_type
Definition binarystring.hxx:61
const_reverse_iterator crend() const
Definition binarystring.hxx:123
char const * get() const noexcept
Raw character buffer (no terminating zero is added).
Definition binarystring.hxx:151
const_reverse_iterator rbegin() const
Definition binarystring.hxx:114
bool operator!=(binarystring const &rhs) const noexcept
Definition binarystring.hxx:134
const_pointer const_iterator
Definition binarystring.hxx:66
const_iterator end() const noexcept
Definition binarystring.hxx:105
const_iterator begin() const noexcept
Definition binarystring.hxx:103
value_type const & const_reference
Definition binarystring.hxx:64
long difference_type
Definition binarystring.hxx:63
binarystring(std::shared_ptr< value_type > ptr, size_type size)
Efficiently wrap a buffer of binary data in a binarystring.
Definition binarystring.hxx:92
const_reverse_iterator crbegin() const
Definition binarystring.hxx:118
std::size_t size_type
Definition binarystring.hxx:62
const_reference front() const noexcept
Definition binarystring.hxx:108
const_reference back() const noexcept
Definition binarystring.hxx:109
std::string_view view() const noexcept
Read contents as a std::string_view.
Definition binarystring.hxx:157
pqxx::bytes_view bytes_view() const
Read data as a bytes_view.
Definition binarystring.hxx:177
bool empty() const noexcept
Definition binarystring.hxx:101
std::byte const * bytes() const
Access data as a pointer to std::byte.
Definition binarystring.hxx:171
const_reference operator[](size_type i) const noexcept
Definition binarystring.hxx:128
const_iterator cend() const noexcept
Definition binarystring.hxx:106
value_type const * data() const noexcept
Unescaped field contents.
Definition binarystring.hxx:126
const_reverse_iterator rend() const
Definition binarystring.hxx:119
size_type length() const noexcept
Size of converted string in bytes.
Definition binarystring.hxx:100
binarystring & operator=(binarystring const &)
unsigned char char_type
Definition binarystring.hxx:60
std::reverse_iterator< const_iterator > const_reverse_iterator
Definition binarystring.hxx:67
const_iterator cbegin() const noexcept
Definition binarystring.hxx:104
binarystring(binarystring const &)=default
value_type const * const_pointer
Definition binarystring.hxx:65
size_type size() const noexcept
Size of converted string in bytes.
Definition binarystring.hxx:98
static char * into_buf(char *begin, char *end, binarystring const &value)
Definition binarystring.hxx:212
static std::size_t size_buffer(binarystring const &value) noexcept
Definition binarystring.hxx:202
static zview to_buf(char *begin, char *end, binarystring const &value)
Definition binarystring.hxx:207
static binarystring from_string(std::string_view text)
Definition binarystring.hxx:223
Could not convert value to string: not enough buffer space.
Definition except.hxx:313
Reference to a field in a result set.
Definition field.hxx:35
Traits describing a type's "null value," if any.
Definition strconv.hxx:91
Nullness traits describing a type which does not have a null value.
Definition strconv.hxx:113
Traits class for use in string conversions.
Definition strconv.hxx:153
static std::size_t size_buffer(TYPE const &value) noexcept
Estimate how much buffer space is needed to represent value.
Marker-type wrapper: zero-terminated std::string_view.
Definition zview.hxx:38