finish representer protocol
This commit is contained in:
@@ -44,14 +44,30 @@ namespace basalt::shared::pipe_operator {
|
||||
write(&buffer, sizeof(TPod));
|
||||
}
|
||||
void read_string(std::string& buffer) {
|
||||
size_t length = 0;
|
||||
read_pod(length);
|
||||
std::uint32_t raw_length = 0;
|
||||
read_pod(raw_length);
|
||||
auto length = static_cast<std::size_t>(raw_length);
|
||||
buffer.resize(length);
|
||||
read(buffer.data(), length);
|
||||
read(buffer.data(), length * sizeof(std::string::value_type));
|
||||
}
|
||||
void write_string(std::string_view& buffer) {
|
||||
write_pod(buffer.size());
|
||||
write(buffer.data(), buffer.size());
|
||||
void write_string(const std::string_view& buffer) {
|
||||
auto length = buffer.size();
|
||||
auto raw_length = static_cast<std::uint32_t>(length);
|
||||
write_pod(raw_length);
|
||||
write(buffer.data(),length * sizeof(std::string_view::value_type));
|
||||
}
|
||||
void read_bsstring(char_types::BSString& buffer) {
|
||||
std::uint32_t raw_length = 0;
|
||||
read_pod(raw_length);
|
||||
auto length = static_cast<std::size_t>(raw_length);
|
||||
buffer.resize(length);
|
||||
read(buffer.data(), length * sizeof(char_types::BSString::value_type));
|
||||
}
|
||||
void write_bsstring(const char_types::BSStringView& buffer) {
|
||||
auto length = buffer.size();
|
||||
auto raw_length = static_cast<std::uint32_t>(length);
|
||||
write_pod(raw_length);
|
||||
write(buffer.data(), length * sizeof(char_types::BSStringView::value_type));
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user