Sha256: e4a0eefff531d418ad6caccbbff5d10a20ac48ffe0405ae26ba7b5edd080f8e3
Contents?: true
Size: 1010 Bytes
Versions: 1
Compression:
Stored size: 1010 Bytes
Contents
module GirFFI # The InOutPointer class handles conversion between ruby types and # pointers for arguments with direction :inout and :out. class InOutPointer < FFI::Pointer attr_reader :value_type def initialize value, type @ffi_type = TypeMap.type_specification_to_ffitype type @value_type = type value = adjust_value_in value ptr = AllocationHelper.safe_malloc(FFI.type_size @ffi_type) ptr.send "put_#{@ffi_type}", 0, value super ptr end private :initialize def to_value self.send "get_#{@ffi_type}", 0 end def self.for type if Array === type return self.new nil, *type end self.new nil, type end def self.from type, value self.new value, type end private def adjust_value_in value case @value_type when :gboolean value else value || nil_value end end def nil_value @ffi_type == :pointer ? nil : 0 end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gir_ffi-0.6.5 | lib/gir_ffi/in_out_pointer.rb |