Module: GirFFI::ArgHelper
- Defined in:
- lib/gir_ffi/arg_helper.rb
Overview
Helper module containing methods used during argument conversion in generated methods.
Constant Summary collapse
- OBJECT_STORE =
ObjectStore.new
Class Method Summary collapse
-
.cast_from_pointer(type, ptr) ⇒ Object
NOTE: Only used in List, SList and HashTable classes.
- .cast_pointer_to_int32(ptr) ⇒ Object
- .cast_uint32_to_int32(val) ⇒ Object
- .check_error(errpp) ⇒ Object
- .check_fixed_array_size(size, arr, name) ⇒ Object
- .store(obj) ⇒ Object
Class Method Details
.cast_from_pointer(type, ptr) ⇒ Object
NOTE: Only used in List, SList and HashTable classes. TODO: Stop using basic types and instead cast type to an ITypeInfo look-alike.
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/gir_ffi/arg_helper.rb', line 26 def self.cast_from_pointer(type, ptr) case type when Symbol cast_from_simple_type_pointer(type, ptr) when Class type.wrap ptr when Array cast_from_complex_type_pointer(type, ptr) end end |
.cast_pointer_to_int32(ptr) ⇒ Object
45 46 47 |
# File 'lib/gir_ffi/arg_helper.rb', line 45 def self.cast_pointer_to_int32(ptr) cast_uint32_to_int32(ptr.address & 0xffffffff) end |
.cast_uint32_to_int32(val) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/gir_ffi/arg_helper.rb', line 37 def self.cast_uint32_to_int32(val) if val >= 0x80000000 -(0x100000000 - val) else val end end |
.check_error(errpp) ⇒ Object
14 15 16 17 |
# File 'lib/gir_ffi/arg_helper.rb', line 14 def self.check_error(errpp) err = GLib::Error.wrap(errpp.read_pointer) raise GLibError, err if err end |
.check_fixed_array_size(size, arr, name) ⇒ Object
19 20 21 |
# File 'lib/gir_ffi/arg_helper.rb', line 19 def self.check_fixed_array_size(size, arr, name) raise ArgumentError, "#{name} should have size #{size}" unless arr.size.equal? size end |
.store(obj) ⇒ Object
49 50 51 |
# File 'lib/gir_ffi/arg_helper.rb', line 49 def self.store(obj) OBJECT_STORE.store(obj) end |