gir_ffi 0.7.10 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Changelog.md +6 -0
- data/Gemfile +3 -1
- data/README.md +5 -2
- data/lib/ffi-glib.rb +1 -0
- data/lib/ffi-glib/array.rb +6 -6
- data/lib/ffi-glib/array_methods.rb +1 -1
- data/lib/ffi-glib/byte_array.rb +1 -1
- data/lib/ffi-glib/bytes.rb +3 -3
- data/lib/ffi-glib/container_class_methods.rb +2 -2
- data/lib/ffi-glib/error.rb +2 -2
- data/lib/ffi-glib/hash_table.rb +9 -9
- data/lib/ffi-glib/iconv.rb +1 -1
- data/lib/ffi-glib/list.rb +2 -2
- data/lib/ffi-glib/list_methods.rb +8 -7
- data/lib/ffi-glib/main_loop.rb +1 -1
- data/lib/ffi-glib/ptr_array.rb +7 -7
- data/lib/ffi-glib/s_list.rb +2 -2
- data/lib/ffi-glib/strv.rb +3 -3
- data/lib/ffi-glib/variant.rb +9 -2
- data/lib/ffi-gobject.rb +10 -10
- data/lib/ffi-gobject/closure.rb +1 -1
- data/lib/ffi-gobject/initially_unowned.rb +4 -3
- data/lib/ffi-gobject/object.rb +19 -19
- data/lib/ffi-gobject/object_class.rb +2 -2
- data/lib/ffi-gobject/ruby_closure.rb +5 -4
- data/lib/ffi-gobject/value.rb +15 -20
- data/lib/ffi-gobject_introspection/g_error.rb +1 -1
- data/lib/ffi-gobject_introspection/i_base_info.rb +6 -6
- data/lib/ffi-gobject_introspection/i_callable_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_enum_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_interface_info.rb +8 -8
- data/lib/ffi-gobject_introspection/i_object_info.rb +9 -9
- data/lib/ffi-gobject_introspection/i_repository.rb +13 -13
- data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_type_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_union_info.rb +3 -3
- data/lib/ffi-gobject_introspection/lib.rb +4 -4
- data/lib/gir_ffi-base/glib/boolean.rb +4 -4
- data/lib/gir_ffi-base/glib/strv.rb +2 -2
- data/lib/gir_ffi/allocation_helper.rb +1 -1
- data/lib/gir_ffi/arg_helper.rb +8 -8
- data/lib/gir_ffi/boxed_base.rb +5 -9
- data/lib/gir_ffi/builder.rb +4 -4
- data/lib/gir_ffi/builder_helper.rb +3 -3
- data/lib/gir_ffi/builders/argument_builder_collection.rb +1 -1
- data/lib/gir_ffi/builders/base_argument_builder.rb +3 -3
- data/lib/gir_ffi/builders/base_method_builder.rb +71 -0
- data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
- data/lib/gir_ffi/builders/boxed_builder.rb +3 -2
- data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +1 -1
- data/lib/gir_ffi/builders/closure_convertor.rb +1 -1
- data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +1 -1
- data/lib/gir_ffi/builders/constructor_builder.rb +52 -0
- data/lib/gir_ffi/builders/enum_builder.rb +3 -3
- data/lib/gir_ffi/builders/field_builder.rb +3 -2
- data/lib/gir_ffi/builders/function_builder.rb +9 -50
- data/lib/gir_ffi/builders/initializer_builder.rb +32 -0
- data/lib/gir_ffi/builders/initializer_return_value_builder.rb +16 -0
- data/lib/gir_ffi/builders/mapping_method_builder.rb +7 -5
- data/lib/gir_ffi/builders/marshalling_method_builder.rb +5 -3
- data/lib/gir_ffi/builders/method_template.rb +1 -1
- data/lib/gir_ffi/builders/module_builder.rb +8 -7
- data/lib/gir_ffi/builders/null_convertor.rb +1 -1
- data/lib/gir_ffi/builders/null_return_value_builder.rb +21 -0
- data/lib/gir_ffi/builders/object_builder.rb +3 -3
- data/lib/gir_ffi/builders/property_builder.rb +1 -1
- data/lib/gir_ffi/builders/registered_type_builder.rb +31 -15
- data/lib/gir_ffi/builders/return_value_builder.rb +1 -14
- data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +2 -2
- data/lib/gir_ffi/builders/signal_closure_builder.rb +1 -1
- data/lib/gir_ffi/builders/type_builder.rb +2 -2
- data/lib/gir_ffi/builders/unintrospectable_builder.rb +1 -1
- data/lib/gir_ffi/builders/user_defined_builder.rb +11 -11
- data/lib/gir_ffi/builders/vfunc_builder.rb +1 -1
- data/lib/gir_ffi/callback_base.rb +8 -13
- data/lib/gir_ffi/class_base.rb +41 -45
- data/lib/gir_ffi/core.rb +2 -2
- data/lib/gir_ffi/enum_base.rb +9 -14
- data/lib/gir_ffi/field_argument_info.rb +1 -1
- data/lib/gir_ffi/g_type.rb +1 -1
- data/lib/gir_ffi/glib_error.rb +1 -1
- data/lib/gir_ffi/in_out_pointer.rb +4 -4
- data/lib/gir_ffi/in_pointer.rb +12 -12
- data/lib/gir_ffi/info_ext/i_arg_info.rb +0 -10
- data/lib/gir_ffi/info_ext/i_callback_info.rb +0 -5
- data/lib/gir_ffi/info_ext/i_property_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_registered_type_info.rb +1 -6
- data/lib/gir_ffi/info_ext/i_signal_info.rb +2 -2
- data/lib/gir_ffi/info_ext/i_type_info.rb +2 -17
- data/lib/gir_ffi/info_ext/i_unresolved_info.rb +0 -5
- data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
- data/lib/gir_ffi/interface_base.rb +2 -7
- data/lib/gir_ffi/method_stubber.rb +1 -1
- data/lib/gir_ffi/module_base.rb +4 -7
- data/lib/gir_ffi/object_base.rb +4 -9
- data/lib/gir_ffi/receiver_argument_info.rb +1 -1
- data/lib/gir_ffi/receiver_type_info.rb +1 -1
- data/lib/gir_ffi/registered_type_base.rb +0 -5
- data/lib/gir_ffi/return_value_info.rb +1 -1
- data/lib/gir_ffi/sized_array.rb +10 -10
- data/lib/gir_ffi/type_map.rb +3 -3
- data/lib/gir_ffi/unintrospectable_type_info.rb +3 -1
- data/lib/gir_ffi/user_data_argument_info.rb +1 -1
- data/lib/gir_ffi/user_defined_property_info.rb +1 -1
- data/lib/gir_ffi/user_defined_type_info.rb +4 -4
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi/vfunc_implementation.rb +1 -1
- data/lib/gir_ffi/zero_terminated.rb +6 -6
- data/test/base_test_helper.rb +13 -13
- data/test/ffi-gobject/object_test.rb +22 -1
- data/test/ffi-gobject/value_test.rb +24 -24
- data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +4 -4
- data/test/ffi-gobject_introspection/i_type_info_test.rb +2 -2
- data/test/ffi-gobject_test.rb +2 -2
- data/test/gir_ffi/builders/argument_builder_test.rb +60 -60
- data/test/gir_ffi/builders/callback_argument_builder_test.rb +8 -8
- data/test/gir_ffi/builders/callback_builder_test.rb +4 -4
- data/test/gir_ffi/builders/callback_return_value_builder_test.rb +8 -8
- data/test/gir_ffi/builders/constructor_builder_test.rb +34 -0
- data/test/gir_ffi/builders/function_builder_test.rb +8 -24
- data/test/gir_ffi/builders/initializer_builder_test.rb +36 -0
- data/test/gir_ffi/builders/interface_builder_test.rb +2 -2
- data/test/gir_ffi/builders/object_builder_test.rb +6 -18
- data/test/gir_ffi/builders/property_builder_test.rb +2 -2
- data/test/gir_ffi/builders/return_value_builder_test.rb +54 -79
- data/test/gir_ffi/builders/signal_closure_builder_test.rb +14 -14
- data/test/gir_ffi/builders/user_defined_builder_test.rb +8 -8
- data/test/gir_ffi/builders/vfunc_builder_test.rb +22 -22
- data/test/gir_ffi/class_base_test.rb +9 -7
- data/test/gir_ffi/in_pointer_test.rb +1 -1
- data/test/gir_ffi/info_ext/i_callable_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_callback_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_field_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_function_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_signal_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/i_type_info_test.rb +18 -18
- data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +2 -2
- data/test/gir_ffi/info_ext/safe_constant_name_test.rb +2 -2
- data/test/gir_ffi/info_ext/safe_function_name_test.rb +2 -2
- data/test/gir_ffi/method_stubber_test.rb +6 -6
- data/test/gir_ffi/user_defined_type_info_test.rb +3 -3
- data/test/gir_ffi_test_helper.rb +12 -12
- data/test/integration/derived_classes_test.rb +7 -3
- data/test/integration/generated_gimarshallingtests_test.rb +10 -10
- data/test/integration/generated_regress_test.rb +11 -20
- data/test/introspection_test_helper.rb +1 -1
- data/test/minitest/stats_plugin.rb +3 -3
- metadata +9 -3
- data/lib/gir_ffi/builders/constructor_result_convertor.rb +0 -14
data/lib/gir_ffi/core.rb
CHANGED
@@ -20,12 +20,12 @@ require 'gir_ffi/version'
|
|
20
20
|
# Main module containing classes and modules needed for generating GLib and
|
21
21
|
# GObject bindings.
|
22
22
|
module GirFFI
|
23
|
-
def self.setup
|
23
|
+
def self.setup(module_name, version = nil)
|
24
24
|
module_name = module_name.to_s
|
25
25
|
GirFFI::Builder.build_module module_name, version
|
26
26
|
end
|
27
27
|
|
28
|
-
def self.define_type
|
28
|
+
def self.define_type(klass, &block)
|
29
29
|
info = UserDefinedTypeInfo.new(klass, &block)
|
30
30
|
Builders::UserDefinedBuilder.new(info).build_class
|
31
31
|
|
data/lib/gir_ffi/enum_base.rb
CHANGED
@@ -10,35 +10,35 @@ module GirFFI
|
|
10
10
|
self::Enum.native_type
|
11
11
|
end
|
12
12
|
|
13
|
-
def to_native
|
13
|
+
def to_native(*args)
|
14
14
|
self::Enum.to_native(*args)
|
15
15
|
end
|
16
16
|
|
17
|
-
def from_native
|
17
|
+
def from_native(*args)
|
18
18
|
self::Enum.from_native(*args)
|
19
19
|
end
|
20
20
|
|
21
|
-
def []
|
21
|
+
def [](arg)
|
22
22
|
self::Enum[arg]
|
23
23
|
end
|
24
24
|
|
25
|
-
def wrap
|
25
|
+
def wrap(arg)
|
26
26
|
self[arg]
|
27
27
|
end
|
28
28
|
|
29
|
-
def from
|
29
|
+
def from(arg)
|
30
30
|
self[arg]
|
31
31
|
end
|
32
32
|
|
33
|
-
def copy_value_to_pointer
|
33
|
+
def copy_value_to_pointer(value, pointer)
|
34
34
|
pointer.put_int32 0, to_native(value, nil)
|
35
35
|
end
|
36
36
|
|
37
|
-
def get_value_from_pointer
|
37
|
+
def get_value_from_pointer(pointer)
|
38
38
|
from_native pointer.get_int32(0), nil
|
39
39
|
end
|
40
40
|
|
41
|
-
def setup_and_call
|
41
|
+
def setup_and_call(method, arguments, &block)
|
42
42
|
result = setup_method method.to_s
|
43
43
|
|
44
44
|
unless result
|
@@ -48,16 +48,11 @@ module GirFFI
|
|
48
48
|
send method, *arguments, &block
|
49
49
|
end
|
50
50
|
|
51
|
-
# @deprecated Use #to_ffi_type instead. Will be removed in 0.8.0.
|
52
|
-
def to_ffitype
|
53
|
-
to_ffi_type
|
54
|
-
end
|
55
|
-
|
56
51
|
def to_ffi_type
|
57
52
|
self
|
58
53
|
end
|
59
54
|
|
60
|
-
def setup_method
|
55
|
+
def setup_method(name)
|
61
56
|
gir_ffi_builder.setup_method name
|
62
57
|
end
|
63
58
|
end
|
data/lib/gir_ffi/g_type.rb
CHANGED
data/lib/gir_ffi/glib_error.rb
CHANGED
@@ -6,7 +6,7 @@ module GirFFI
|
|
6
6
|
class InOutPointer < FFI::Pointer
|
7
7
|
attr_reader :value_type
|
8
8
|
|
9
|
-
def initialize
|
9
|
+
def initialize(type, ptr = nil)
|
10
10
|
@value_type = type
|
11
11
|
|
12
12
|
ptr ||= AllocationHelper.safe_malloc(value_type_size)
|
@@ -40,7 +40,7 @@ module GirFFI
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
def set_value
|
43
|
+
def set_value(value)
|
44
44
|
case value_ffi_type
|
45
45
|
when Module
|
46
46
|
value_ffi_type.copy_value_to_pointer(value, self)
|
@@ -55,11 +55,11 @@ module GirFFI
|
|
55
55
|
set_value nil_value
|
56
56
|
end
|
57
57
|
|
58
|
-
def self.for
|
58
|
+
def self.for(type)
|
59
59
|
new(type).tap(&:clear)
|
60
60
|
end
|
61
61
|
|
62
|
-
def self.from
|
62
|
+
def self.from(type, value)
|
63
63
|
new(type).tap { |ptr| ptr.set_value value }
|
64
64
|
end
|
65
65
|
|
data/lib/gir_ffi/in_pointer.rb
CHANGED
@@ -3,7 +3,7 @@ module GirFFI
|
|
3
3
|
# arguments with direction :in. This is used for arguments that are
|
4
4
|
# arrays, strings, or interfaces.
|
5
5
|
class InPointer < FFI::Pointer
|
6
|
-
def self.from_array
|
6
|
+
def self.from_array(type, ary)
|
7
7
|
return unless ary
|
8
8
|
case type
|
9
9
|
when :utf8, :filename
|
@@ -29,7 +29,7 @@ module GirFFI
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
def self.from
|
32
|
+
def self.from(type, val)
|
33
33
|
return unless val
|
34
34
|
case type
|
35
35
|
when :utf8, :filename
|
@@ -46,7 +46,7 @@ module GirFFI
|
|
46
46
|
end
|
47
47
|
|
48
48
|
class << self
|
49
|
-
def from_closure_data
|
49
|
+
def from_closure_data(obj)
|
50
50
|
FFI::Pointer.new(obj.object_id).tap do |ptr|
|
51
51
|
ArgHelper::OBJECT_STORE.store(ptr, obj)
|
52
52
|
end
|
@@ -54,19 +54,19 @@ module GirFFI
|
|
54
54
|
|
55
55
|
private
|
56
56
|
|
57
|
-
def from_utf8_array
|
57
|
+
def from_utf8_array(ary)
|
58
58
|
from_basic_type_array :pointer, ary.map { |str| from_utf8 str }
|
59
59
|
end
|
60
60
|
|
61
|
-
def from_boolean_array
|
61
|
+
def from_boolean_array(ary)
|
62
62
|
from_basic_type_array :int, ary.map { |val| val ? 1 : 0 }
|
63
63
|
end
|
64
64
|
|
65
|
-
def from_pointer_array
|
65
|
+
def from_pointer_array(type, ary)
|
66
66
|
from_basic_type_array :pointer, ary.map { |elem| from type, elem }
|
67
67
|
end
|
68
68
|
|
69
|
-
def from_gvalue_array
|
69
|
+
def from_gvalue_array(type, ary)
|
70
70
|
ary = ary.map do |it|
|
71
71
|
if it.is_a? GObject::Value
|
72
72
|
it
|
@@ -77,7 +77,7 @@ module GirFFI
|
|
77
77
|
from_struct_array type, ary
|
78
78
|
end
|
79
79
|
|
80
|
-
def from_struct_array
|
80
|
+
def from_struct_array(type, ary)
|
81
81
|
ffi_type = TypeMap.type_specification_to_ffi_type type
|
82
82
|
type_size = FFI.type_size(ffi_type)
|
83
83
|
length = ary.length
|
@@ -90,17 +90,17 @@ module GirFFI
|
|
90
90
|
new ptr
|
91
91
|
end
|
92
92
|
|
93
|
-
def from_enum_array
|
93
|
+
def from_enum_array(type, ary)
|
94
94
|
from_basic_type_array :int32, ary.map { |sym| type.to_native sym, nil }
|
95
95
|
end
|
96
96
|
|
97
|
-
def from_utf8
|
97
|
+
def from_utf8(str)
|
98
98
|
len = str.bytesize
|
99
99
|
ptr = AllocationHelper.safe_malloc(len + 1).write_string(str).put_char(len, 0)
|
100
100
|
new ptr
|
101
101
|
end
|
102
102
|
|
103
|
-
def from_basic_type_array
|
103
|
+
def from_basic_type_array(type, ary)
|
104
104
|
ffi_type = TypeMap.type_specification_to_ffi_type type
|
105
105
|
ary = ary.dup << null_value(ffi_type)
|
106
106
|
type_size = FFI.type_size(ffi_type)
|
@@ -109,7 +109,7 @@ module GirFFI
|
|
109
109
|
new block
|
110
110
|
end
|
111
111
|
|
112
|
-
def null_value
|
112
|
+
def null_value(ffi_type)
|
113
113
|
ffi_type == :pointer ? nil : 0
|
114
114
|
end
|
115
115
|
end
|
@@ -2,21 +2,11 @@ module GirFFI
|
|
2
2
|
module InfoExt
|
3
3
|
# Extensions for GObjectIntrospection::IArgInfo needed by GirFFI
|
4
4
|
module IArgInfo
|
5
|
-
# @deprecated Use #to_ffi_type instead. Will be removed in 0.8.0.
|
6
|
-
def to_ffitype
|
7
|
-
to_ffi_type
|
8
|
-
end
|
9
|
-
|
10
5
|
def to_ffi_type
|
11
6
|
return :pointer if direction != :in
|
12
7
|
argument_type.to_ffi_type
|
13
8
|
end
|
14
9
|
|
15
|
-
# @deprecated Use #to_callback_ffi_type instead. Will be removed in 0.8.0.
|
16
|
-
def to_callback_ffitype
|
17
|
-
to_callback_ffi_type
|
18
|
-
end
|
19
|
-
|
20
10
|
def to_callback_ffi_type
|
21
11
|
return :pointer if direction != :in
|
22
12
|
argument_type.to_callback_ffi_type
|
@@ -2,11 +2,6 @@ module GirFFI
|
|
2
2
|
module InfoExt
|
3
3
|
# Extensions for GObjectIntrospection::ICallbackInfo needed by GirFFI
|
4
4
|
module ICallbackInfo
|
5
|
-
# @deprecated Use #to_ffi_type instead. Will be removed in 0.8.0.
|
6
|
-
def to_ffitype
|
7
|
-
to_ffi_type
|
8
|
-
end
|
9
|
-
|
10
5
|
def to_ffi_type
|
11
6
|
Builder.build_class(self)
|
12
7
|
end
|
@@ -4,11 +4,6 @@ module GirFFI
|
|
4
4
|
module InfoExt
|
5
5
|
# Extensions for GObjectIntrospection::IRegisteredTypeInfo needed by GirFFI
|
6
6
|
module IRegisteredTypeInfo
|
7
|
-
# @deprecated Use #to_ffi_type instead. Will be removed in 0.8.0.
|
8
|
-
def to_ffitype
|
9
|
-
to_ffi_type
|
10
|
-
end
|
11
|
-
|
12
7
|
def to_ffi_type
|
13
8
|
to_type.to_ffi_type
|
14
9
|
end
|
@@ -17,7 +12,7 @@ module GirFFI
|
|
17
12
|
Builder.build_class self
|
18
13
|
end
|
19
14
|
|
20
|
-
def find_instance_method
|
15
|
+
def find_instance_method(method)
|
21
16
|
info = find_method method
|
22
17
|
return info if info && info.method?
|
23
18
|
end
|
@@ -9,12 +9,12 @@ module GirFFI
|
|
9
9
|
#
|
10
10
|
# @return [GObject::RubyClosure] The signal handler closure, ready to be
|
11
11
|
# passed as a GClosure to C.
|
12
|
-
def wrap_in_closure
|
12
|
+
def wrap_in_closure(&block)
|
13
13
|
bldr = Builders::SignalClosureBuilder.new(self)
|
14
14
|
bldr.build_class.new(&block)
|
15
15
|
end
|
16
16
|
|
17
|
-
def arguments_to_gvalues
|
17
|
+
def arguments_to_gvalues(instance, arguments)
|
18
18
|
arg_g_values = args.map { |info| info.argument_type.make_g_value }
|
19
19
|
arg_g_values.zip(arguments).each do |g_value, arg|
|
20
20
|
g_value.set_value arg
|
@@ -19,11 +19,6 @@ module GirFFI
|
|
19
19
|
}
|
20
20
|
end
|
21
21
|
|
22
|
-
# @deprecated Use #gtype instead. Will be removed in 0.8.0.
|
23
|
-
def g_type
|
24
|
-
gtype
|
25
|
-
end
|
26
|
-
|
27
22
|
def gtype
|
28
23
|
if tag == :interface
|
29
24
|
return interface.gtype
|
@@ -102,11 +97,6 @@ module GirFFI
|
|
102
97
|
end
|
103
98
|
end
|
104
99
|
|
105
|
-
# @deprecated Use #to_ffi_type instead. Will be removed in 0.8.0.
|
106
|
-
def to_ffitype
|
107
|
-
to_ffi_type
|
108
|
-
end
|
109
|
-
|
110
100
|
def to_ffi_type
|
111
101
|
return :pointer if pointer?
|
112
102
|
|
@@ -120,11 +110,6 @@ module GirFFI
|
|
120
110
|
end
|
121
111
|
end
|
122
112
|
|
123
|
-
# @deprecated Use #to_callback_ffi_type instead. Will be removed in 0.8.0.
|
124
|
-
def to_callback_ffitype
|
125
|
-
to_callback_ffi_type
|
126
|
-
end
|
127
|
-
|
128
113
|
def to_callback_ffi_type
|
129
114
|
return :pointer if pointer?
|
130
115
|
|
@@ -193,7 +178,7 @@ module GirFFI
|
|
193
178
|
|
194
179
|
private
|
195
180
|
|
196
|
-
def subtype_tag_or_class
|
181
|
+
def subtype_tag_or_class(index)
|
197
182
|
param_type(index).tag_or_class
|
198
183
|
end
|
199
184
|
|
@@ -205,7 +190,7 @@ module GirFFI
|
|
205
190
|
subtype_tag_or_class 0
|
206
191
|
end
|
207
192
|
|
208
|
-
def subtype_ffi_type
|
193
|
+
def subtype_ffi_type(index)
|
209
194
|
subtype = param_type(index).to_ffi_type
|
210
195
|
if subtype == :pointer
|
211
196
|
# NOTE: Don't use pointer directly to appease JRuby.
|
@@ -2,11 +2,6 @@ module GirFFI
|
|
2
2
|
module InfoExt
|
3
3
|
# Extensions for GObjectIntrospection::IUnresolvedInfo needed by GirFFI
|
4
4
|
module IUnresolvedInfo
|
5
|
-
# @deprecated Use #to_ffi_type instead. Will be removed in 0.8.0.
|
6
|
-
def to_ffitype
|
7
|
-
to_ffi_type
|
8
|
-
end
|
9
|
-
|
10
5
|
def to_ffi_type
|
11
6
|
:pointer
|
12
7
|
end
|
@@ -4,13 +4,13 @@ module GirFFI
|
|
4
4
|
# TODO: Merge implementation with ICallbackInfo and ISignalInfo extensions.
|
5
5
|
module IVFuncInfo
|
6
6
|
def argument_ffi_types
|
7
|
-
args.map(&:
|
7
|
+
args.map(&:to_callback_ffi_type).tap do |types|
|
8
8
|
types << :pointer if throws?
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
12
|
def return_ffi_type
|
13
|
-
return_type.
|
13
|
+
return_type.to_callback_ffi_type
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
@@ -5,19 +5,14 @@ module GirFFI
|
|
5
5
|
module InterfaceBase
|
6
6
|
include RegisteredTypeBase
|
7
7
|
|
8
|
-
def setup_instance_method
|
8
|
+
def setup_instance_method(name)
|
9
9
|
gir_ffi_builder.setup_instance_method name
|
10
10
|
end
|
11
11
|
|
12
|
-
def wrap
|
12
|
+
def wrap(ptr)
|
13
13
|
ptr.to_object
|
14
14
|
end
|
15
15
|
|
16
|
-
# @deprecated Use #to_ffi_type instead. Will be removed in 0.8.0.
|
17
|
-
def to_ffitype
|
18
|
-
to_ffi_type
|
19
|
-
end
|
20
|
-
|
21
16
|
def to_ffi_type
|
22
17
|
:pointer
|
23
18
|
end
|
data/lib/gir_ffi/module_base.rb
CHANGED
@@ -1,28 +1,25 @@
|
|
1
1
|
module GirFFI
|
2
2
|
# Base module for modules representing GLib namespaces.
|
3
3
|
module ModuleBase
|
4
|
-
def method_missing
|
4
|
+
def method_missing(method, *arguments, &block)
|
5
5
|
result = setup_method method.to_s
|
6
6
|
return super unless result
|
7
7
|
send method, *arguments, &block
|
8
8
|
end
|
9
9
|
|
10
|
-
def const_missing
|
10
|
+
def const_missing(classname)
|
11
11
|
load_class(classname)
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
def setup_class classname
|
14
|
+
def load_class(classname)
|
16
15
|
gir_ffi_builder.build_namespaced_class classname.to_s
|
17
16
|
end
|
18
17
|
|
19
|
-
alias_method :load_class, :setup_class
|
20
|
-
|
21
18
|
def gir_ffi_builder
|
22
19
|
self::GIR_FFI_BUILDER
|
23
20
|
end
|
24
21
|
|
25
|
-
def setup_method
|
22
|
+
def setup_method(name)
|
26
23
|
gir_ffi_builder.setup_method name
|
27
24
|
end
|
28
25
|
end
|