Sha256: b494eac5282a20f04bd237d076602af1b2096a306969ee260b66f611df5405ae

Contents?: true

Size: 561 Bytes

Versions: 17

Compression:

Stored size: 561 Bytes

Contents

# frozen_string_literal: true

module GirFFI
  # Helper class for storing objects for later retrieval. Used to store user
  # data arguments.
  class ObjectStore
    def initialize
      @store = {}
    end

    def store(obj)
      return FFI::Pointer::NULL if obj.nil?

      # FIXME: Don't use object_id!
      key = obj.object_id
      @store[key] = obj
      FFI::Pointer.new(key)
    end

    def fetch(ptr)
      return if ptr.null?

      key = ptr.address
      if @store.key? key
        @store[key]
      else
        ptr
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
gir_ffi-0.18.0 lib/gir_ffi/object_store.rb
gir_ffi-0.17.0 lib/gir_ffi/object_store.rb
gir_ffi-0.16.1 lib/gir_ffi/object_store.rb
gir_ffi-0.16.0 lib/gir_ffi/object_store.rb
gir_ffi-0.15.9 lib/gir_ffi/object_store.rb
gir_ffi-0.15.8 lib/gir_ffi/object_store.rb
gir_ffi-0.15.7 lib/gir_ffi/object_store.rb
gir_ffi-0.15.6 lib/gir_ffi/object_store.rb
gir_ffi-0.15.5 lib/gir_ffi/object_store.rb
gir_ffi-0.15.4 lib/gir_ffi/object_store.rb
gir_ffi-0.15.3 lib/gir_ffi/object_store.rb
gir_ffi-0.15.2 lib/gir_ffi/object_store.rb
gir_ffi-0.15.1 lib/gir_ffi/object_store.rb
gir_ffi-0.15.0 lib/gir_ffi/object_store.rb
gir_ffi-0.14.1 lib/gir_ffi/object_store.rb
gir_ffi-0.14.0 lib/gir_ffi/object_store.rb
gir_ffi-0.13.1 lib/gir_ffi/object_store.rb