24#ifndef MYSQL_STRCONV_ENCODE_STRING_WRITER_H
25#define MYSQL_STRCONV_ENCODE_STRING_WRITER_H
76 std::memcpy(
m_pos, sv.data(), sv.size());
114 [[nodiscard]]
const char *
pos()
const {
return m_pos; }
117 [[nodiscard]]
unsigned char *
upos() {
118 return reinterpret_cast<unsigned char *
>(
m_pos);
122 [[nodiscard]]
const unsigned char *
upos()
const {
123 return reinterpret_cast<unsigned char *
>(
m_pos);
140 [[nodiscard]]
const char *
end()
const {
return m_end; }
143 [[nodiscard]]
unsigned char *
uend() {
144 return reinterpret_cast<unsigned char *
>(
m_end);
148 [[nodiscard]]
const unsigned char *
uend()
const {
149 return reinterpret_cast<unsigned char *
>(
m_end);
188static_assert(!std::copy_constructible<Constructible_string_writer>);
189static_assert(!std::copy_constructible<String_writer>);
190static_assert(std::movable<Constructible_string_writer>);
191static_assert(std::movable<String_writer>);
Class that serves as the target for encode(..., Is_string_target), which writes to a char * buffer wi...
Definition: string_writer.h:43
const char * end() const
Return the buffer end as a const char *.
Definition: string_writer.h:140
void advance(std::size_t size)
Move the position size bytes forward without writing anything.
Definition: string_writer.h:105
void write_raw(const std::string_view &sv)
Append a string_view to the buffer, unformatted.
Definition: string_writer.h:74
unsigned char * uend()
Return the buffer end as an unsigned char *.
Definition: string_writer.h:143
const std::byte * bend() const
Return the buffer end as a const std::byte *.
Definition: string_writer.h:158
std::byte * bend()
Return the buffer end as a std::byte *.
Definition: string_writer.h:153
char * m_pos
The current write position.
Definition: string_writer.h:169
void write_char(int ch)
Append a single character to the buffer.
Definition: string_writer.h:83
char * m_end
End of buffer.
Definition: string_writer.h:171
void write(const Is_format auto &format, const std::string_view &sv)
Write the given string_view to this String_writer.
Definition: string_writer.h:96
const std::byte * bpos() const
Return the current write position as a const std::byte *.
Definition: string_writer.h:132
String_writer(const String_writer &)=delete
static constexpr Target_type target_type
Definition: string_writer.h:57
String_writer(String_writer &&) noexcept=default
String_writer(char *first, char *last)
Construct a new object backed by the given buffer.
Definition: string_writer.h:54
char * pos()
Return the current write position as a char *.
Definition: string_writer.h:111
unsigned char * upos()
Return the current write position as an unsigned char *.
Definition: string_writer.h:117
std::size_t remaining_size() const
Definition: string_writer.h:163
char * end()
Return the buffer end as a char *.
Definition: string_writer.h:137
void write(const Is_format auto &format, const auto &object)
Write the given object to this String_writer.
Definition: string_writer.h:90
const char * pos() const
Return the current write position as a const char *.
Definition: string_writer.h:114
const unsigned char * uend() const
Return the buffer end as a const unsigned char *.
Definition: string_writer.h:148
const unsigned char * upos() const
Return the current write position as a const unsigned char *.
Definition: string_writer.h:122
std::byte * bpos()
Return the current write position as a std::byte *.
Definition: string_writer.h:127
String_writer subclass that can be instantiated.
Definition: string_writer.h:182
Constructible_string_writer(const Is_out_str auto &out_str)
Definition: string_writer.h:184
CRTP base class providing common helpers needed by String_writer and String_counter,...
Definition: string_target.h:61
void resolve_format_and_write(const Is_format auto &format, const Object_t &object)
Resolve the format, using the rules to deduce format based on default format and parent format,...
Definition: string_target.h:90
True if Test is an Output String Wrapper, i.e., derived from Out_str_base.
Definition: out_str.h:219
unsigned char byte
Blob class.
Definition: common.h:151
Definition: gtid_binary_format_conv.h:252
Definition: gtid_binary_format.h:41
Target_type
Definition: string_target.h:107
std::size_t compute_encoded_length(const Is_format auto &format, const auto &object)
Return the string length of the object.
Definition: encode.h:57
noexcept
The return type for any call_and_catch(f, args...) call where f(args...) returns Type.
Definition: call_and_catch.h:76
size_t size(const char *const c)
Definition: base64.h:46
Define std::hash<Gtid>.
Definition: gtid.h:355