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)
|
void BaseStringBuilder::PutUtf8(char32_t c)
|
||||||
{
|
{
|
||||||
auto [buf, len] = EncodeUtf8(c);
|
auto [buf, len] = EncodeUtf8(c);
|
||||||
this->PutBuffer(buf, len);
|
this->PutBuffer({buf, len});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Append buffer.
|
* 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.
|
* Append buffer.
|
||||||
*/
|
*/
|
||||||
virtual void PutBuffer(const char *str, size_type len) = 0;
|
virtual void PutBuffer(std::span<const char> str) = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* Append span.
|
|
||||||
*/
|
|
||||||
void PutBuffer(std::span<const char> str) { this->PutBuffer(str.data(), str.size()); }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Append string.
|
* 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 PutUint8(uint8_t value);
|
||||||
void PutSint8(int8_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);
|
auto result = std::to_chars(buf.data(), buf.data() + buf.size(), value, base);
|
||||||
if (result.ec != std::errc{}) return;
|
if (result.ec != std::errc{}) return;
|
||||||
size_type len = result.ptr - buf.data();
|
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; }
|
[[nodiscard]] std::string &GetString() noexcept { return *dest; }
|
||||||
|
|
||||||
using BaseStringBuilder::PutBuffer;
|
void PutBuffer(std::span<const char> str) override;
|
||||||
void PutBuffer(const char *str, size_type len) override;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Append string.
|
* Append string.
|
||||||
|
|
|
@ -32,12 +32,12 @@
|
||||||
/**
|
/**
|
||||||
* Append buffer.
|
* Append buffer.
|
||||||
*/
|
*/
|
||||||
void InPlaceBuilder::PutBuffer(const char *str, size_type len)
|
void InPlaceBuilder::PutBuffer(std::span<const char> str)
|
||||||
{
|
{
|
||||||
auto unused = this->GetBytesUnused();
|
auto unused = this->GetBytesUnused();
|
||||||
if (len > unused) NOT_REACHED();
|
if (str.size() > unused) NOT_REACHED();
|
||||||
std::copy(str, str + len, this->dest.data() + this->position);
|
std::ranges::copy(str, this->dest.data() + this->position);
|
||||||
this->position += len;
|
this->position += str.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -47,8 +47,7 @@ public:
|
||||||
[[nodiscard]] bool AnyBytesUnused() const noexcept;
|
[[nodiscard]] bool AnyBytesUnused() const noexcept;
|
||||||
[[nodiscard]] size_type GetBytesUnused() const noexcept;
|
[[nodiscard]] size_type GetBytesUnused() const noexcept;
|
||||||
|
|
||||||
using BaseStringBuilder::PutBuffer;
|
void PutBuffer(std::span<const char> str) override;
|
||||||
void PutBuffer(const char *str, size_type len) override;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of std::back_insert_iterator for non-growing destination buffer.
|
* Implementation of std::back_insert_iterator for non-growing destination buffer.
|
||||||
|
|
Loading…
Reference in New Issue