void init(Space mem_,byte fill_) { mem=mem_; fill=fill_; ByteRange(mem_).set(fill_); }
void testVarint(uint64_t val, std::initializer_list<uint8_t> bytes) { size_t n = bytes.size(); ByteRange expected(&*bytes.begin(), n); { uint8_t buf[kMaxVarintLength64]; EXPECT_EQ(expected.size(), encodeVarint(val, buf)); EXPECT_TRUE(ByteRange(buf, expected.size()) == expected); } { ByteRange r = expected; uint64_t decoded = decodeVarint(r); EXPECT_TRUE(r.empty()); EXPECT_EQ(val, decoded); } if (n < kMaxVarintLength64) { // Try from a full buffer too, different code path uint8_t buf[kMaxVarintLength64]; memcpy(buf, &*bytes.begin(), n); uint8_t fills[] = {0, 0x7f, 0x80, 0xff}; for (uint8_t fill : fills) { memset(buf + n, fill, kMaxVarintLength64 - n); ByteRange r(buf, kMaxVarintLength64); uint64_t decoded = decodeVarint(r); EXPECT_EQ(val, decoded); EXPECT_EQ(kMaxVarintLength64 - n, r.size()); } } }
void init(Space space_,byte fill_) { space=space_; fill=fill_; ByteRange(space_).set(fill_); }
bool extend(Heap &heap,ulen len) { DeltaLen result=heap.extend(mem.mem,len); if( result.ok ) { auto r=ByteRange(mem); Range(r.ptr+r.len,result.delta).set(fill); mem.len+=result.delta; return true; } return false; }
void writeFileAtomic( StringPiece filename, StringPiece data, mode_t permissions) { writeFileAtomic(filename, ByteRange(data), permissions); }
void check(Heap &heap) { if( mem.len!=heap.getLen(mem.mem) ) fail(1); for(auto r=ByteRange(mem); +r ;++r) if( *r!=fill ) fail(2); }
ByteRange DataHolder::data(size_t size) const { CHECK_LE(size, size_); return ByteRange(data_.get(), size); }