util/*FifoBuffer: migrate from WritableBuffer to std::span

This commit is contained in:
Max Kellermann
2022-05-10 17:26:41 +02:00
committed by Max Kellermann
parent 570755f05a
commit bb7be9a4cd
23 changed files with 114 additions and 129 deletions

View File

@@ -44,10 +44,10 @@ bool
BufferedOutputStream::AppendToBuffer(const void *data, std::size_t size) noexcept
{
auto r = buffer.Write();
if (r.size < size)
if (r.size() < size)
return false;
memcpy(r.data, data, size);
memcpy(r.data(), data, size);
buffer.Append(size);
return true;
}
@@ -88,10 +88,10 @@ BufferedOutputStream::Format(const char *fmt, ...)
/* format into the buffer */
std::va_list ap;
va_start(ap, fmt);
std::size_t size = vsnprintf((char *)r.data, r.size, fmt, ap);
std::size_t size = vsnprintf((char *)r.data(), r.size(), fmt, ap);
va_end(ap);
if (gcc_unlikely(size >= r.size)) {
if (gcc_unlikely(size >= r.size())) {
/* buffer was not large enough; flush it and try
again */
@@ -99,20 +99,20 @@ BufferedOutputStream::Format(const char *fmt, ...)
r = buffer.Write();
if (gcc_unlikely(size >= r.size)) {
if (gcc_unlikely(size >= r.size())) {
/* still not enough space: grow the buffer and
try again */
r.size = size + 1;
r.data = buffer.Write(r.size);
++size;
r = {buffer.Write(size), size};
}
/* format into the new buffer */
va_start(ap, fmt);
size = vsnprintf((char *)r.data, r.size, fmt, ap);
size = vsnprintf((char *)r.data(), r.size(), fmt, ap);
va_end(ap);
/* this time, it must fit */
assert(size < r.size);
assert(size < r.size());
}
buffer.Append(size);
@@ -140,7 +140,7 @@ BufferedOutputStream::WriteWideToUTF8(const wchar_t *src,
}
int length = WideCharToMultiByte(CP_UTF8, 0, src, src_length,
(char *)r.data, r.size,
(char *)r.data(), r.size(),
nullptr, nullptr);
if (length <= 0) {
const auto error = GetLastError();
@@ -173,6 +173,6 @@ BufferedOutputStream::Flush()
if (r.empty())
return;
os.Write(r.data, r.size);
buffer.Consume(r.size);
os.Write(r.data(), r.size());
buffer.Consume(r.size());
}

View File

@@ -51,7 +51,7 @@ BufferedReader::Fill(bool need_more)
assert(!w.empty());
}
std::size_t nbytes = reader.Read(w.data, w.size);
std::size_t nbytes = reader.Read(w.data(), w.size());
if (nbytes == 0) {
eof = true;
return !need_more;
@@ -122,7 +122,7 @@ BufferedReader::ReadLine()
/* terminate the last line */
w[0] = 0;
char *line = buffer.Read().data;
char *line = buffer.Read().data();
buffer.Clear();
++line_number;
return line;

View File

@@ -65,7 +65,7 @@ public:
[[gnu::pure]]
std::span<std::byte> Read() const noexcept {
return buffer.Read().ToVoid();
return std::as_writable_bytes(buffer.Read());
}
/**