Sha256: 156efd8545bf2427983d199f71f18a09ca0bda2a81cc3c73807826180db684b8

Contents?: true

Size: 797 Bytes

Versions: 3

Compression:

Stored size: 797 Bytes

Contents

require 'ffi-glib/list_methods'

module GLib
  load_class :List

  # Overrides for GList, GLib's doubly linked list implementation.
  class List
    include ListMethods

    # Override default field accessors.
    undef :next
    undef :data

    alias :next :tail
    alias :data :head

    class << self
      undef :new
      def new type
        _real_new(FFI::Pointer.new(0)).tap {|it|
          it.element_type = type}
      end

      def from_array type, arr
        return nil if arr.nil?
        return arr if arr.is_a? self
        arr.inject(self.new type) { |lst, val|
          lst.append val }
      end
    end

    def append data
      data_ptr = GirFFI::InPointer.from(element_type, data)
      self.class.wrap(element_type, Lib.g_list_append(self, data_ptr))
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gir_ffi-0.2.2 lib/ffi-glib/list.rb
gir_ffi-0.2.1 lib/ffi-glib/list.rb
gir_ffi-0.2.0 lib/ffi-glib/list.rb