bool increment(llong* id, valvec<byte>* key) override { auto owner = static_cast<const SeqNumIndex*>(m_index.get()); if (nark_likely(m_curr < owner->m_cnt)) { getIndexKey(id, key, owner, --m_curr); return true; } return false; }
bool increment(llong* id, valvec<byte>* key) override { auto owner = static_cast<const MockReadonlyIndex*>(m_index.get()); assert(nullptr != id); if (nark_likely(m_pos > 0)) { owner->getIndexKey(id, key, --m_pos); return true; } return false; }
bool increment(llong* id, valvec<byte>* key) override { auto owner = static_cast<const MockWritableIndex*>(m_index.get()); if (nark_likely(owner->m_kv.begin() != m_iter)) { --m_iter; *id = m_iter->second; copyKey(m_iter->first, key); return true; } return false; }
void kmapdset_iterator_impl_base::bulk_load(DBT* tk1) { NARK_RT_assert(0 == m_ret, std::logic_error); load_key1(tk1->data, tk1->size); clear_vec(); int ret; do { void *bptr, *data; DB_MULTIPLE_INIT(bptr, &m_bulk); assert(NULL != bptr); for (;;) { size_t size = 0; DB_MULTIPLE_NEXT(bptr, &m_bulk, data, size); if (nark_likely(NULL != bptr)) this->push_back(data, size); else break; } ret = m_curp->get(m_curp, tk1, &m_bulk, DB_MULTIPLE|DB_NEXT_DUP); } while (0 == ret); }