14 #include "pqxx/compiler-public.hxx"
17 #include <string_view>
18 #include <type_traits>
37 class zview :
public std::string_view
40 constexpr
zview() noexcept = default;
43 constexpr
zview(
char const text[], std::ptrdiff_t len) :
44 std::string_view{text,
static_cast<std::size_t
>(len)}
48 constexpr
zview(
char text[], std::ptrdiff_t len) :
49 std::string_view{text,
static_cast<std::size_t
>(len)}
55 template<
typename... Args>
56 explicit constexpr
zview(Args &&...args) :
57 std::string_view(std::forward<Args>(args)...)
61 zview(std::string
const &str) : std::string_view{str.c_str(), std::size(str)}
69 constexpr
zview(
char const str[]) : std::string_view{str} {}
72 constexpr
zview(
char const (&literal)[size]) :
zview(literal, size - 1)
76 [[nodiscard]] constexpr
char const *
c_str() const noexcept {
return data(); }
86 constexpr
zview operator"" _zv(
char const str[], std::size_t len) noexcept
88 return zview{str, len};
93 #if defined(PQXX_HAVE_CONCEPTS)
103 std::is_convertible_v<T, char const *> or std::is_convertible_v<T, zview> or
104 std::is_convertible_v<T, std::string const &>;
106 #endif // PQXX_HAVE_CONCEPTS
112 inline constexpr
char const *
as_c_string(
char const str[]) noexcept
117 template<std::
size_t N>
constexpr zview(char text[], std::ptrdiff_t len)
Convenience overload: construct using pointer and signed length.
Definition: zview.hxx:48
The home of all libpqxx classes, functions, templates, etc.
Definition: array.hxx:26
constexpr zview(Args &&...args)
Construct from any initialiser you might use for std::string_view.
Definition: zview.hxx:56
Internal items for libpqxx' own use. Do not use these yourself.
Definition: composite.hxx:74
zview(std::string const &str)
Definition: zview.hxx:61
constexpr char const * as_c_string(char const str[]) noexcept
Get a raw C string pointer.
Definition: zview.hxx:112
constexpr zview() noexcept=default
constexpr zview(char const str[])
Construct a zview from a C-style string.
Definition: zview.hxx:69
Marker-type wrapper: zero-terminated std::string_view.
Definition: zview.hxx:38
constexpr char const * c_str() const noexcept
Either a null pointer, or a zero-terminated text buffer.
Definition: zview.hxx:76
constexpr zview(char const (&literal)[size])
Definition: zview.hxx:72