25 for (
unsigned i = 0; i != 8; ++i) bytes[i] = std::byte(
value >> (8 * i));
28 std::uint64_t
value = 0;
29 for (
unsigned i = 0; i != 8; ++i)
30 value |= std::uint64_t(std::to_integer<unsigned char>(bytes[i])) << (8 * i);
40 std::uint64_t offset,
std::uint64_t
size) noexcept
41 : store_(&store), handle_(handle), offset_(offset), size_(
size) {}
42 std::uint64_t
size() const noexcept
override {
return size_; }
44 if (!store_ || offset > size_ || destination.size > size_ - offset
45 || (destination.size && !destination.data))
52 std::uint64_t offset_ = 0;
53 std::uint64_t size_ = 0;
72 : store_(&store), version_(
version), schema_(schema) {}
81 ScratchStatus root(std::array<std::uint64_t, 3>&)
const noexcept;
85 std::uint64_t first_ = 0;
86 std::uint64_t limit_ = std::numeric_limits<std::uint64_t>::max();
95 : reader_(reader), first_(first), size_(
size) {}
96 std::uint64_t
size() const noexcept
override {
return size_; }
98 if (offset > size_ || out.size > size_ - offset || (out.size && !out.data))
102 auto status = reader_.field(first_ + offset / 128, field);
104 const auto base = offset / 128 * 128;
105 const auto expected = std::min<std::uint64_t>(128, size_ - base);
108 const auto n =
static_cast<std::size_t
>(std::min<std::uint64_t>(
109 out.size, expected - offset % 128));
110 status = field.
bytes.
read(offset % 128, {out.data, n});
120 std::uint64_t first_ = 0;
121 std::uint64_t size_ = 0;
A logical slice, stable across cache eviction and nested reads.
PayloadBytes() noexcept=default
std::uint64_t size() const noexcept override
ScratchStatus read(std::uint64_t offset, ScratchBuffer destination) const noexcept override
ScratchStatus read(std::uint64_t offset, ScratchBuffer out) const noexcept override
std::uint64_t size() const noexcept override
PayloadChunkBytes() noexcept=default
All reads borrow store/version; no owning row or text reconstruction.
ScratchStatus visit(void *, bool(*)(void *, const PayloadField &)) const
ScratchHandle version() const noexcept
PayloadReadback() noexcept=default
ScratchStatus field(std::uint64_t index, PayloadField &out) const noexcept
ScratchStatus field_count(std::uint64_t &out) const noexcept
ScratchStatus subobject(std::string_view name, PayloadReadback &out) const noexcept
ScratchStatus find(std::string_view name, PayloadField &out) const noexcept
void payload_encode(std::uint64_t value, std::byte *bytes) noexcept
std::uint64_t ScratchHandle
constexpr std::uint64_t payload_field_kind
std::uint64_t payload_decode(const std::byte *bytes) noexcept
constexpr std::uint64_t payload_root_kind
ScratchStatus real_value(double &out) const noexcept
ScratchStatus unsigned_value(std::uint64_t &out) const noexcept
ScratchStatus boolean_value(bool &out) const noexcept
ScratchStatus signed_value(std::int64_t &out) const noexcept