Sha256: 176c9efd33d4b030c9b7bbf4e49917df67bcc308a1a19638c41051fc7c5461fc

Contents?: true

Size: 823 Bytes

Versions: 2

Compression:

Stored size: 823 Bytes

Contents

module GLib
  load_class :PtrArray

  # Overrides for GPtrArray, GLib's automatically growing array of
  # pointers.
  class PtrArray
    include Enumerable

    attr_accessor :element_type

    class << self
      undef :new
      def new type
        wrap(Lib.g_ptr_array_new).tap {|it|
          it.element_type = type}
      end

      # Remove stub generated by builder.
      undef :add if method_defined? :add

      def add array, data
        array.add data
      end
    end

    def add data
      ptr = GirFFI::InPointer.from element_type, data
      Lib.g_ptr_array_add self, ptr
    end

    def each
      prc = Proc.new {|valptr, userdata|
        val = GirFFI::ArgHelper.cast_from_pointer element_type, valptr
        yield val
      }
      Lib.g_ptr_array_foreach self.to_ptr, prc, nil
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gir_ffi-0.2.3 lib/ffi-glib/ptr_array.rb
gir_ffi-0.2.2 lib/ffi-glib/ptr_array.rb