16 #if defined(PQXX_HAVE_CONCEPTS) && __has_include(<ranges>) 86 template<
typename TYPE>
87 using strip_t = std::remove_cv_t<std::remove_reference_t<TYPE>>;
90 #if defined(PQXX_HAVE_CONCEPTS) 95 template<std::ranges::range CONTAINER>
96 using value_type = decltype(*std::begin(std::declval<CONTAINER>()));
97 #else // PQXX_HAVE_CONCEPTS 102 template<
typename CONTAINER>
103 using value_type = decltype(*std::begin(std::declval<CONTAINER>()));
104 #endif // PQXX_HAVE_CONCEPTS 107 #if defined(PQXX_HAVE_CONCEPTS) 108 template<
typename STRING>
110 concept char_string = std::ranges::contiguous_range<STRING> and
111 std::same_as < strip_t<value_type<STRING>>,
115 template<
typename RANGE>
116 concept char_strings =
117 std::ranges::range<RANGE> and char_string<strip_t<value_type<RANGE>>>;
120 template<
typename DATA>
121 concept potential_binary = std::ranges::contiguous_range<DATA> and
123 #endif // PQXX_HAVE_CONCEPTS 127 #if defined(PQXX_HAVE_CONCEPTS) 133 # define PQXX_RANGE_ARG std::ranges::range 139 # define PQXX_CHAR_STRING_ARG pqxx::char_string 145 # define PQXX_CHAR_STRINGS_ARG pqxx::char_strings 147 #else // PQXX_HAVE_CONCEPTS 153 # define PQXX_RANGE_ARG typename 159 # define PQXX_CHAR_STRING_ARG typename 165 # define PQXX_CHAR_STRINGS_ARG typename 167 #endif // PQXX_HAVE_CONCEPTS decltype(*std::begin(std::declval< CONTAINER >())) value_type
The type of a container's elements.
Definition: types.hxx:103
Reverse iterator for result. Use as result::const_reverse_iterator.
Definition: result_iterator.hxx:195
Marker for stream_from constructors: "stream from table.".
Definition: types.hxx:63
std::size_t field_size_type
Number of bytes in a field of database data.
Definition: types.hxx:36
Iterator for rows in a result. Use as result::const_iterator.
Definition: result_iterator.hxx:35
std::remove_cv_t< std::remove_reference_t< TYPE > > strip_t
Remove any constness, volatile, and reference-ness from a type.
Definition: types.hxx:87
The home of all libpqxx classes, functions, templates, etc.
Definition: array.hxx:25
Binary data corresponding to PostgreSQL's "BYTEA" binary-string type.
Definition: binarystring.hxx:57
Something is out of range, similar to std::out_of_range.
Definition: except.hxx:192
int64_t large_object_size_type
Number of bytes in a large object.
Definition: types.hxx:39
int row_size_type
Number of fields in a row of database data.
Definition: types.hxx:30
Reverse iterator for a row. Use as row::const_reverse_iterator.
Definition: row.hxx:358
int result_difference_type
Difference between result sizes.
Definition: types.hxx:27
int result_size_type
Number of rows in a result set.
Definition: types.hxx:24
Reference to a field in a result set.
Definition: field.hxx:33
Connection to a database.
Definition: connection.hxx:180
format
Format code: is data text or binary?
Definition: types.hxx:76
Iterator for fields in a row. Use as row::const_iterator.
Definition: row.hxx:253
Abstract transaction base class: bracket transactions on the database.
Definition: dbtransaction.hxx:52
Reference to one row in a result.
Definition: row.hxx:45
int row_difference_type
Difference between row sizes.
Definition: types.hxx:33
Definition: notification.hxx:55
Accessor for large object's contents.
Definition: largeobject.hxx:152
Stream data from the database.
Definition: stream_from.hxx:72
Result set containing data returned by a query or command.
Definition: result.hxx:70
Marker for stream_from constructors: "stream from query.".
Definition: types.hxx:69
Interface definition (and common code) for "transaction" classes.
Definition: transaction_base.hxx:75