Small overhaul using string_view

This commit is contained in:
2022-03-04 16:45:47 -05:00
parent b17b34924e
commit cfeeb2eaf3
6 changed files with 60 additions and 39 deletions

View File

@@ -59,6 +59,10 @@ const char *StreamBuffer::data() const {
return read_cursor_;
}
std::string_view StreamBuffer::view() const {
return std::string_view(read_cursor_, write_cursor_ - read_cursor_);
}
bool StreamBuffer::layout_is(int64_t a, int64_t b, int64_t c) {
if (read_cursor_ - buf_lo_ != a) return false;
if (write_cursor_ - read_cursor_ != b) return false;
@@ -182,8 +186,10 @@ void StreamBuffer::write_bytes(const char *s, int64_t len) {
write_cursor_ += len;
}
void StreamBuffer::write_bytes(const eng::string &s) {
write_bytes(s.c_str(), s.size());
void StreamBuffer::write_bytes(std::string_view s) {
make_space(s.size());
memcpy(write_cursor_, s.data(), s.size());
write_cursor_ += s.size();
}
const char *StreamBuffer::read_bytes(int64_t bytes) {
@@ -322,14 +328,14 @@ void StreamBuffer::write_hashvalue(const util::HashValue &hv) {
write_uint64(hv.second);
}
void StreamBuffer::write_string(const eng::string &s) {
void StreamBuffer::write_string(std::string_view s) {
if (s.size() >= 255) {
write_uint8(0xFF);
write_uint64(s.size());
write_bytes(s.c_str(), s.size());
write_bytes(s);
} else {
write_uint8(s.size());
write_bytes(s.c_str(), s.size());
write_bytes(s);
}
}