module GLib::ListMethods

Attributes

element_type[RW]

Public Class Methods

included(base) click to toggle source
# File lib/ffi-glib/list_methods.rb, line 8
def self.included base
  base.extend ContainerClassMethods
  # Override default field accessors.
  replace_method base, :next, :tail
  replace_method base, :data, :head
end
replace_method(base, old, new) click to toggle source
# File lib/ffi-glib/list_methods.rb, line 15
def self.replace_method base, old, new
  base.class_eval do
    remove_method old
    alias_method old, new
  end
end

Public Instance Methods

==(other) click to toggle source
# File lib/ffi-glib/list_methods.rb, line 42
def ==(other)
  self.to_a == other.to_a
end
each() { |elem| ... } click to toggle source
# File lib/ffi-glib/list_methods.rb, line 22
def each
  reset_iterator
  while (elem = next_element)
    yield elem
  end
end
head() click to toggle source
# File lib/ffi-glib/list_methods.rb, line 33
def head
  GirFFI::ArgHelper.cast_from_pointer(element_type, @struct[:data])
end
reset_typespec(typespec) click to toggle source
# File lib/ffi-glib/list_methods.rb, line 37
def reset_typespec typespec
  self.element_type = typespec
  self
end
tail() click to toggle source
# File lib/ffi-glib/list_methods.rb, line 29
def tail
  self.class.wrap(element_type, @struct[:next])
end

Private Instance Methods

next_element() click to toggle source
# File lib/ffi-glib/list_methods.rb, line 52
def next_element
  return if !@current
  element = @current.head
  @current = @current.tail
  element
end
reset_iterator() click to toggle source
# File lib/ffi-glib/list_methods.rb, line 48
def reset_iterator
  @current = self
end