mirror of https://github.com/OpenTTD/OpenTTD
Codechange: use std::span over char* for writing the buffers
parent
6817f52d9b
commit
4255a94779
|
@ -113,13 +113,13 @@ void BaseStringBuilder::PutChar(char c)
|
|||
void BaseStringBuilder::PutUtf8(char32_t c)
|
||||
{
|
||||
auto [buf, len] = EncodeUtf8(c);
|
||||
this->PutBuffer(buf, len);
|
||||
this->PutBuffer({buf, len});
|
||||
}
|
||||
|
||||
/**
|
||||
* Append buffer.
|
||||
*/
|
||||
void StringBuilder::PutBuffer(const char *str, size_type len)
|
||||
void StringBuilder::PutBuffer(std::span<const char> str)
|
||||
{
|
||||
this->dest->append(str, len);
|
||||
this->dest->append(str.data(), str.size());
|
||||
}
|
||||
|
|
|
@ -26,17 +26,12 @@ public:
|
|||
/**
|
||||
* Append buffer.
|
||||
*/
|
||||
virtual void PutBuffer(const char *str, size_type len) = 0;
|
||||
|
||||
/**
|
||||
* Append span.
|
||||
*/
|
||||
void PutBuffer(std::span<const char> str) { this->PutBuffer(str.data(), str.size()); }
|
||||
virtual void PutBuffer(std::span<const char> str) = 0;
|
||||
|
||||
/**
|
||||
* Append string.
|
||||
*/
|
||||
void Put(std::string_view str) { this->PutBuffer(str.data(), str.size()); }
|
||||
void Put(std::string_view str) { this->PutBuffer(str); }
|
||||
|
||||
void PutUint8(uint8_t value);
|
||||
void PutSint8(int8_t value);
|
||||
|
@ -60,7 +55,7 @@ public:
|
|||
auto result = std::to_chars(buf.data(), buf.data() + buf.size(), value, base);
|
||||
if (result.ec != std::errc{}) return;
|
||||
size_type len = result.ptr - buf.data();
|
||||
this->PutBuffer(buf.data(), len);
|
||||
this->PutBuffer({buf.data(), len});
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -93,8 +88,7 @@ public:
|
|||
*/
|
||||
[[nodiscard]] std::string &GetString() noexcept { return *dest; }
|
||||
|
||||
using BaseStringBuilder::PutBuffer;
|
||||
void PutBuffer(const char *str, size_type len) override;
|
||||
void PutBuffer(std::span<const char> str) override;
|
||||
|
||||
/**
|
||||
* Append string.
|
||||
|
|
|
@ -32,12 +32,12 @@
|
|||
/**
|
||||
* Append buffer.
|
||||
*/
|
||||
void InPlaceBuilder::PutBuffer(const char *str, size_type len)
|
||||
void InPlaceBuilder::PutBuffer(std::span<const char> str)
|
||||
{
|
||||
auto unused = this->GetBytesUnused();
|
||||
if (len > unused) NOT_REACHED();
|
||||
std::copy(str, str + len, this->dest.data() + this->position);
|
||||
this->position += len;
|
||||
if (str.size() > unused) NOT_REACHED();
|
||||
std::ranges::copy(str, this->dest.data() + this->position);
|
||||
this->position += str.size();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -47,8 +47,7 @@ public:
|
|||
[[nodiscard]] bool AnyBytesUnused() const noexcept;
|
||||
[[nodiscard]] size_type GetBytesUnused() const noexcept;
|
||||
|
||||
using BaseStringBuilder::PutBuffer;
|
||||
void PutBuffer(const char *str, size_type len) override;
|
||||
void PutBuffer(std::span<const char> str) override;
|
||||
|
||||
/**
|
||||
* Implementation of std::back_insert_iterator for non-growing destination buffer.
|
||||
|
|
Loading…
Reference in New Issue