| 102 | } |
| 103 | |
| 104 | inline Status ParseStringView(const std::byte* data, uint64_t maxSize, std::string_view* output) { |
| 105 | uint32_t size = 0; |
| 106 | if (auto status = ParseUint32(data, maxSize, &size); !status.ok()) { |
| 107 | const auto msg = StrCat("cannot read string size: ", status.message); |
| 108 | return Status{StatusCode::InvalidRecord, msg}; |
| 109 | } |
| 110 | if (uint64_t(size) > (maxSize - 4)) { |
| 111 | const auto msg = StrCat("string size ", size, " exceeds remaining bytes ", (maxSize - 4)); |
| 112 | return Status(StatusCode::InvalidRecord, msg); |
| 113 | } |
| 114 | *output = std::string_view(reinterpret_cast<const char*>(data + 4), size); |
| 115 | return StatusCode::Success; |
| 116 | } |
| 117 | |
| 118 | inline Status ParseString(const std::byte* data, uint64_t maxSize, std::string* output) { |
| 119 | uint32_t size = 0; |
no test coverage detected