inline void PagedVector::set(const size_t& i, const uint64_t& value) { assert(i < filled); uint64_t anchor = anchors.get(i / page_size); if (anchor == 0) { // this page does not have a non-zero anchor yet, use this one anchors.set(i / page_size, value); anchor = value; } pages[i / page_size].set(i % page_size, to_diff(value, anchor)); }
inline uint64_t PagedVector::get(const size_t& i) const { assert(i < filled); return from_diff(pages[i / page_size].get(i % page_size), anchors.get(i / page_size)); }
inline uint64_t PackedDeque::get(const size_t& i) const { return vec.get(internal_index(i)); }
inline size_t PackedSplayTree::get_right(size_t x) const { return tree.get((x - 1) * NODE_SIZE + RIGHT_CHILD_OFFSET); }
inline size_t PackedSplayTree::get_left(size_t x) const { return tree.get((x - 1) * NODE_SIZE + LEFT_CHILD_OFFSET); }
inline size_t PackedSplayTree::get_parent(size_t x) const { return tree.get((x - 1) * NODE_SIZE + PARENT_OFFSET); }
inline size_t PackedSplayTree::get_value(const size_t& x) const { return tree.get((x - 1) * NODE_SIZE + VALUE_OFFSET); }
inline size_t PackedSplayTree::get_key(const size_t& x) const { return tree.get((x - 1) * NODE_SIZE + KEY_OFFSET); }