Class: GirFFI::Builders::PointerValueConvertor

Inherits:
Object
  • Object
show all
Defined in:
lib/gir_ffi/builders/pointer_value_convertor.rb

Overview

Encapsulates knowledge about how to store values in pointers, and how to fetch values from pointers.

Instance Method Summary collapse

Constructor Details

#initialize(type_spec) ⇒ PointerValueConvertor

Returns a new instance of PointerValueConvertor.



8
9
10
# File 'lib/gir_ffi/builders/pointer_value_convertor.rb', line 8

def initialize(type_spec)
  @type_spec = type_spec
end

Instance Method Details

#pointer_to_value(ptr_exp) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/gir_ffi/builders/pointer_value_convertor.rb', line 12

def pointer_to_value(ptr_exp)
  case ffi_type_spec
  when Module
    "#{ffi_type_spec}.get_value_from_pointer(#{ptr_exp}, 0)"
  when Symbol
    "#{ptr_exp}.get_#{ffi_type_spec}(0)"
  end
end

#value_to_pointer(ptr_exp, value_exp) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/gir_ffi/builders/pointer_value_convertor.rb', line 21

def value_to_pointer(ptr_exp, value_exp)
  case ffi_type_spec
  when Module
    "#{ffi_type_spec}.copy_value_to_pointer(#{value_exp}, #{ptr_exp})"
  when Symbol
    "#{ptr_exp}.put_#{ffi_type_spec} 0, #{value_exp}"
  end
end