aboutsummaryrefslogtreecommitdiff
path: root/table/two_level_iterator.h
diff options
context:
space:
mode:
authorKunoiSayami <[email protected]>2021-11-09 22:00:01 +0800
committerKunoiSayami <[email protected]>2021-11-09 22:00:01 +0800
commit9907b61c574baf0747747f1c512f7cdd88ebed25 (patch)
tree358acb09ff8d7b0589a63b8a810e6082046877fe /table/two_level_iterator.h
init
Diffstat (limited to 'table/two_level_iterator.h')
-rw-r--r--table/two_level_iterator.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/table/two_level_iterator.h b/table/two_level_iterator.h
new file mode 100644
index 0000000..81ffe80
--- /dev/null
+++ b/table/two_level_iterator.h
@@ -0,0 +1,31 @@
+// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file. See the AUTHORS file for names of contributors.
+
+#ifndef STORAGE_LEVELDB_TABLE_TWO_LEVEL_ITERATOR_H_
+#define STORAGE_LEVELDB_TABLE_TWO_LEVEL_ITERATOR_H_
+
+#include "leveldb/iterator.h"
+
+namespace leveldb {
+
+struct ReadOptions;
+
+// Return a new two level iterator. A two-level iterator contains an
+// index iterator whose values point to a sequence of blocks where
+// each block is itself a sequence of key,value pairs. The returned
+// two-level iterator yields the concatenation of all key/value pairs
+// in the sequence of blocks. Takes ownership of "index_iter" and
+// will delete it when no longer needed.
+//
+// Uses a supplied function to convert an index_iter value into
+// an iterator over the contents of the corresponding block.
+Iterator* NewTwoLevelIterator(
+ Iterator* index_iter,
+ Iterator* (*block_function)(void* arg, const ReadOptions& options,
+ const Slice& index_value),
+ void* arg, const ReadOptions& options);
+
+} // namespace leveldb
+
+#endif // STORAGE_LEVELDB_TABLE_TWO_LEVEL_ITERATOR_H_