Class: BlkID::DevIterate

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/rblkid/dev_iterate.rb

Instance Method Summary collapse

Constructor Details

#initialize(cache) ⇒ DevIterate

Returns a new instance of DevIterate.



27
28
29
30
31
# File 'lib/rblkid/dev_iterate.rb', line 27

def initialize (cache)
  @struct = BlkID::C.blkid_dev_iterate_begin(cache.to_ffi)

  ObjectSpace.define_finalizer(self, method(:finalize))
end

Instance Method Details

#eachObject



44
45
46
47
48
49
50
51
# File 'lib/rblkid/dev_iterate.rb', line 44

def each
  [].tap {|a|
    while (dev = self.next)
      a << dev
      yield dev if block_given?
    end
  }
end

#finalizeObject



53
54
55
# File 'lib/rblkid/dev_iterate.rb', line 53

def finalize
  BlkID::C.blkid_dev_iterate_end(@struct)
end

#nextObject



38
39
40
41
42
# File 'lib/rblkid/dev_iterate.rb', line 38

def next
  Dev.new(BlkID::C::BlkIDDev.new.tap {|res|
    break nil unless BlkID::C.blkid_dev_next(@struct, res.pointer)
  })
end

#search(type, value) ⇒ Object



33
34
35
36
# File 'lib/rblkid/dev_iterate.rb', line 33

def search (type, value)
  BlkID::C.blkid_dev_set_search(@struct, type, value)
  self
end

#to_ffiObject



57
58
59
# File 'lib/rblkid/dev_iterate.rb', line 57

def to_ffi
  @struct
end