Class: LevelDB::Iterator
- Inherits:
-
Object
- Object
- LevelDB::Iterator
- Defined in:
- lib/leveldb/iterator.rb
Instance Method Summary collapse
- #each(&block) ⇒ Object
-
#initialize(db, read_opts, read_len, reverse = false) ⇒ Iterator
constructor
A new instance of Iterator.
- #inspect ⇒ Object (also: #to_s)
- #next ⇒ Object
- #peek ⇒ Object
- #range(from, to, &block) ⇒ Object
- #range? ⇒ Boolean
- #reverse? ⇒ Boolean
- #reverse_each(&block) ⇒ Object
- #rewind ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(db, read_opts, read_len, reverse = false) ⇒ Iterator
Returns a new instance of Iterator.
3 4 5 6 7 8 9 10 11 12 13 |
# File 'lib/leveldb/iterator.rb', line 3 def initialize(db, read_opts, read_len, reverse=false) @_db = db @_read_opts = read_opts @_read_len = read_len @_reverse = reverse @_err = C::Pointer.malloc(C::SIZEOF_VOIDP) @_err.free = C[:free] @_iterator = C.create_iterator(@_db, @_read_opts) # @_iterator.free = C[:iter_destroy] rewind end |
Instance Method Details
#each(&block) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/leveldb/iterator.rb', line 29 def each(&block) return self unless block_given? if current = self.next block[*current] end while valid? @_range = nil end |
#inspect ⇒ Object Also known as: to_s
75 76 77 |
# File 'lib/leveldb/iterator.rb', line 75 def inspect "#<LevelDB::Iterator:#{'0x%x' % object_id}>" end |
#next ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/leveldb/iterator.rb', line 43 def next while valid? && !in_range? move_next end if range? key, val = current return unless key [key, val] ensure move_next end |
#peek ⇒ Object
57 58 59 60 61 |
# File 'lib/leveldb/iterator.rb', line 57 def peek self.next ensure move_prev end |
#range(from, to, &block) ⇒ Object
37 38 39 40 41 |
# File 'lib/leveldb/iterator.rb', line 37 def range(from, to, &block) @_range = [from.to_s, to.to_s].sort @_range = @_range.reverse if reverse? each(&block) end |
#range? ⇒ Boolean
71 72 73 |
# File 'lib/leveldb/iterator.rb', line 71 def range? !!@_range end |
#reverse? ⇒ Boolean
67 68 69 |
# File 'lib/leveldb/iterator.rb', line 67 def reverse? @_reverse end |
#reverse_each(&block) ⇒ Object
23 24 25 26 27 |
# File 'lib/leveldb/iterator.rb', line 23 def reverse_each(&block) @_reverse = !@_reverse rewind each(&block) end |
#rewind ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/leveldb/iterator.rb', line 15 def rewind if reverse? C.iter_seek_to_last(@_iterator) else C.iter_seek_to_first(@_iterator) end end |
#valid? ⇒ Boolean
63 64 65 |
# File 'lib/leveldb/iterator.rb', line 63 def valid? C.iter_valid(@_iterator) == 1 end |