gir_ffi 0.14.0 → 0.15.3
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 +45 -0
- data/Gemfile +6 -4
- data/README.md +11 -10
- data/Rakefile +5 -5
- data/lib/ffi-glib.rb +16 -16
- data/lib/ffi-glib/array.rb +14 -4
- data/lib/ffi-glib/byte_array.rb +7 -2
- data/lib/ffi-glib/container_class_methods.rb +1 -1
- data/lib/ffi-glib/error.rb +1 -1
- data/lib/ffi-glib/hash_table.rb +3 -3
- data/lib/ffi-glib/list.rb +1 -1
- data/lib/ffi-glib/list_methods.rb +1 -1
- data/lib/ffi-glib/main_loop.rb +3 -3
- data/lib/ffi-glib/ptr_array.rb +30 -8
- data/lib/ffi-glib/s_list.rb +1 -1
- data/lib/ffi-glib/variant.rb +1 -1
- data/lib/ffi-gobject.rb +13 -13
- data/lib/ffi-gobject/object.rb +23 -32
- data/lib/ffi-gobject/param_spec.rb +1 -1
- data/lib/ffi-gobject/ruby_closure.rb +2 -2
- data/lib/ffi-gobject/value.rb +40 -29
- data/lib/ffi-gobject_introspection.rb +20 -20
- data/lib/ffi-gobject_introspection/gobject_type_init.rb +2 -2
- data/lib/ffi-gobject_introspection/i_arg_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_base_info.rb +27 -17
- data/lib/ffi-gobject_introspection/i_callable_info.rb +4 -4
- data/lib/ffi-gobject_introspection/i_constant_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_enum_info.rb +1 -0
- data/lib/ffi-gobject_introspection/i_field_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_function_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_interface_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_object_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_property_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_repository.rb +9 -6
- data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -1
- data/lib/ffi-gobject_introspection/i_type_info.rb +13 -7
- data/lib/ffi-gobject_introspection/i_unresolved_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_vfunc_info.rb +1 -1
- data/lib/ffi-gobject_introspection/lib.rb +30 -19
- data/lib/ffi-gobject_introspection/strv.rb +1 -1
- data/lib/gir_ffi-base.rb +1 -1
- data/lib/gir_ffi-base/gobject.rb +26 -25
- data/lib/gir_ffi-base/gobject/lib.rb +3 -2
- data/lib/gir_ffi.rb +3 -3
- data/lib/gir_ffi/allocation_helper.rb +1 -1
- data/lib/gir_ffi/arg_helper.rb +4 -4
- data/lib/gir_ffi/{in_out_pointer.rb → array_element_convertor.rb} +16 -23
- data/lib/gir_ffi/boolean.rb +1 -1
- data/lib/gir_ffi/boxed_base.rb +1 -1
- data/lib/gir_ffi/builder.rb +18 -10
- data/lib/gir_ffi/builder_helper.rb +6 -1
- data/lib/gir_ffi/builders/argument_builder.rb +19 -19
- data/lib/gir_ffi/builders/argument_builder_collection.rb +2 -2
- data/lib/gir_ffi/builders/base_argument_builder.rb +1 -0
- data/lib/gir_ffi/builders/base_method_builder.rb +7 -7
- data/lib/gir_ffi/builders/base_return_value_builder.rb +1 -1
- data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
- data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +5 -5
- data/lib/gir_ffi/builders/callback_argument_builder.rb +8 -8
- data/lib/gir_ffi/builders/callback_builder.rb +16 -4
- data/lib/gir_ffi/builders/callback_return_value_builder.rb +2 -2
- data/lib/gir_ffi/builders/closure_argument_builder.rb +1 -1
- data/lib/gir_ffi/builders/closure_return_value_builder.rb +1 -1
- data/lib/gir_ffi/builders/constant_builder.rb +1 -1
- data/lib/gir_ffi/builders/constructor_builder.rb +9 -9
- data/lib/gir_ffi/builders/enum_builder.rb +16 -3
- data/lib/gir_ffi/builders/field_builder.rb +20 -18
- data/lib/gir_ffi/builders/flags_builder.rb +2 -2
- data/lib/gir_ffi/builders/full_c_to_ruby_convertor.rb +1 -1
- data/lib/gir_ffi/builders/function_builder.rb +11 -5
- data/lib/gir_ffi/builders/initializer_builder.rb +3 -3
- data/lib/gir_ffi/builders/initializer_return_value_builder.rb +2 -2
- data/lib/gir_ffi/builders/interface_builder.rb +2 -2
- data/lib/gir_ffi/builders/mapping_method_builder.rb +9 -9
- data/lib/gir_ffi/builders/marshalling_method_builder.rb +7 -7
- data/lib/gir_ffi/builders/method_template.rb +1 -1
- data/lib/gir_ffi/builders/module_builder.rb +7 -7
- data/lib/gir_ffi/builders/object_builder.rb +6 -6
- data/lib/gir_ffi/builders/property_argument_builder.rb +1 -1
- data/lib/gir_ffi/builders/property_builder.rb +13 -12
- data/lib/gir_ffi/builders/property_return_value_builder.rb +1 -1
- data/lib/gir_ffi/builders/registered_type_builder.rb +14 -5
- data/lib/gir_ffi/builders/return_value_builder.rb +4 -4
- data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +6 -6
- data/lib/gir_ffi/builders/signal_closure_builder.rb +2 -2
- data/lib/gir_ffi/builders/struct_builder.rb +6 -4
- data/lib/gir_ffi/builders/struct_like.rb +1 -1
- data/lib/gir_ffi/builders/type_builder.rb +12 -12
- data/lib/gir_ffi/builders/unintrospectable_boxed_builder.rb +2 -2
- data/lib/gir_ffi/builders/unintrospectable_builder.rb +2 -2
- data/lib/gir_ffi/builders/union_builder.rb +4 -4
- data/lib/gir_ffi/builders/user_defined_builder.rb +2 -2
- data/lib/gir_ffi/builders/vfunc_argument_builder.rb +1 -1
- data/lib/gir_ffi/builders/vfunc_builder.rb +8 -8
- data/lib/gir_ffi/builders/with_layout.rb +2 -2
- data/lib/gir_ffi/callback_base.rb +4 -6
- data/lib/gir_ffi/class_base.rb +6 -5
- data/lib/gir_ffi/core.rb +19 -20
- data/lib/gir_ffi/enum_base.rb +1 -1
- data/lib/gir_ffi/enum_like_base.rb +2 -2
- data/lib/gir_ffi/error_argument_info.rb +2 -2
- data/lib/gir_ffi/error_type_info.rb +1 -1
- data/lib/gir_ffi/ffi_ext.rb +1 -1
- data/lib/gir_ffi/ffi_ext/pointer.rb +1 -1
- data/lib/gir_ffi/flags_base.rb +1 -1
- data/lib/gir_ffi/in_pointer.rb +10 -0
- data/lib/gir_ffi/info_ext.rb +15 -14
- data/lib/gir_ffi/info_ext/full_type_name.rb +3 -3
- data/lib/gir_ffi/info_ext/i_arg_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_callable_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_callback_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_field_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_function_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_property_info.rb +2 -2
- data/lib/gir_ffi/info_ext/i_registered_type_info.rb +4 -5
- data/lib/gir_ffi/info_ext/i_signal_info.rb +7 -3
- data/lib/gir_ffi/info_ext/i_type_info.rb +48 -26
- data/lib/gir_ffi/info_ext/i_unresolved_info.rb +1 -1
- data/lib/gir_ffi/info_ext/i_value_info.rb +25 -0
- data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
- data/lib/gir_ffi/info_ext/safe_constant_name.rb +8 -8
- data/lib/gir_ffi/info_ext/safe_function_name.rb +2 -2
- data/lib/gir_ffi/interface_base.rb +3 -3
- data/lib/gir_ffi/lib_c.rb +1 -1
- data/lib/gir_ffi/method_stubber.rb +1 -1
- data/lib/gir_ffi/module_base.rb +1 -1
- data/lib/gir_ffi/object_base.rb +3 -4
- data/lib/gir_ffi/receiver_argument_info.rb +1 -1
- data/lib/gir_ffi/receiver_type_info.rb +2 -2
- data/lib/gir_ffi/registered_type_base.rb +1 -1
- data/lib/gir_ffi/sized_array.rb +4 -2
- data/lib/gir_ffi/struct.rb +1 -1
- data/lib/gir_ffi/struct_base.rb +1 -1
- data/lib/gir_ffi/type_map.rb +2 -23
- data/lib/gir_ffi/unintrospectable_boxed_info.rb +2 -2
- data/lib/gir_ffi/unintrospectable_type_info.rb +5 -1
- data/lib/gir_ffi/union.rb +1 -1
- data/lib/gir_ffi/union_base.rb +1 -1
- data/lib/gir_ffi/user_defined_object_info.rb +6 -2
- data/lib/gir_ffi/user_defined_property_info.rb +33 -33
- data/lib/gir_ffi/version.rb +1 -1
- data/tasks/test.rake +3 -2
- data/test/base_test_helper.rb +16 -9
- data/test/ffi-glib/array_test.rb +71 -56
- data/test/ffi-glib/byte_array_test.rb +13 -7
- data/test/ffi-glib/bytes_test.rb +24 -19
- data/test/ffi-glib/closure_test.rb +11 -11
- data/test/ffi-glib/destroy_notify_test.rb +6 -6
- data/test/ffi-glib/hash_table_test.rb +27 -27
- data/test/ffi-glib/list_test.rb +22 -22
- data/test/ffi-glib/main_loop_test.rb +12 -12
- data/test/ffi-glib/ptr_array_test.rb +39 -39
- data/test/ffi-glib/ruby_closure_test.rb +10 -10
- data/test/ffi-glib/s_list_test.rb +20 -20
- data/test/ffi-glib/strv_test.rb +19 -19
- data/test/ffi-glib/variant_test.rb +5 -5
- data/test/ffi-gobject/gobject_test.rb +48 -44
- data/test/ffi-gobject/object_class_test.rb +8 -8
- data/test/ffi-gobject/object_test.rb +51 -68
- data/test/ffi-gobject/param_spec_test.rb +12 -12
- data/test/ffi-gobject/value_test.rb +145 -125
- data/test/ffi-gobject_introspection/gobject_type_init_test.rb +9 -9
- data/test/ffi-gobject_introspection/i_base_info_test.rb +15 -16
- data/test/ffi-gobject_introspection/i_constant_info_test.rb +9 -13
- data/test/ffi-gobject_introspection/i_enum_info_test.rb +7 -7
- data/test/ffi-gobject_introspection/i_function_info_test.rb +1 -1
- data/test/ffi-gobject_introspection/i_interface_info_test.rb +10 -10
- data/test/ffi-gobject_introspection/i_object_info_test.rb +23 -23
- data/test/ffi-gobject_introspection/i_property_info_test.rb +19 -19
- data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +10 -10
- data/test/ffi-gobject_introspection/i_repository_test.rb +34 -34
- data/test/ffi-gobject_introspection/i_struct_info_test.rb +10 -10
- data/test/ffi-gobject_introspection/i_type_info_test.rb +12 -15
- data/test/ffi-gobject_introspection/i_union_info_test.rb +7 -7
- data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +16 -16
- data/test/ffi-gobject_introspection/lib_test.rb +3 -3
- data/test/ffi-gobject_introspection/strv_test.rb +9 -9
- data/test/ffi-gobject_test.rb +47 -45
- data/test/gir_ffi/allocation_helper_test.rb +13 -13
- data/test/gir_ffi/arg_helper_test.rb +71 -65
- data/test/gir_ffi/boolean_test.rb +20 -20
- data/test/gir_ffi/boxed_base_test.rb +18 -18
- data/test/gir_ffi/builder_test.rb +81 -213
- data/test/gir_ffi/builders/argument_builder_test.rb +321 -287
- data/test/gir_ffi/builders/base_argument_builder_test.rb +1 -1
- data/test/gir_ffi/builders/callback_argument_builder_test.rb +57 -56
- data/test/gir_ffi/builders/callback_builder_test.rb +71 -72
- data/test/gir_ffi/builders/callback_return_value_builder_test.rb +40 -41
- data/test/gir_ffi/builders/constant_builder_test.rb +1 -1
- data/test/gir_ffi/builders/constructor_builder_test.rb +12 -10
- data/test/gir_ffi/builders/enum_builder_test.rb +12 -11
- data/test/gir_ffi/builders/field_builder_test.rb +48 -42
- data/test/gir_ffi/builders/function_builder_test.rb +256 -224
- data/test/gir_ffi/builders/initializer_builder_test.rb +16 -14
- data/test/gir_ffi/builders/interface_builder_test.rb +9 -9
- data/test/gir_ffi/builders/module_builder_test.rb +18 -18
- data/test/gir_ffi/builders/object_builder_test.rb +41 -41
- data/test/gir_ffi/builders/property_builder_test.rb +94 -94
- data/test/gir_ffi/builders/registered_type_builder_test.rb +35 -11
- data/test/gir_ffi/builders/return_value_builder_test.rb +227 -223
- data/test/gir_ffi/builders/signal_closure_builder_test.rb +124 -113
- data/test/gir_ffi/builders/struct_builder_test.rb +38 -35
- data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +8 -14
- data/test/gir_ffi/builders/unintrospectable_builder_test.rb +34 -23
- data/test/gir_ffi/builders/union_builder_test.rb +12 -15
- data/test/gir_ffi/builders/user_defined_builder_test.rb +152 -148
- data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +46 -40
- data/test/gir_ffi/builders/vfunc_builder_test.rb +149 -157
- data/test/gir_ffi/callback_base_test.rb +9 -9
- data/test/gir_ffi/class_base_test.rb +56 -53
- data/test/gir_ffi/core_test.rb +36 -35
- data/test/gir_ffi/enum_base_test.rb +19 -19
- data/test/gir_ffi/error_type_info_test.rb +23 -23
- data/test/gir_ffi/ffi_ext/pointer_test.rb +9 -7
- data/test/gir_ffi/g_type_test.rb +11 -11
- data/test/gir_ffi/in_pointer_test.rb +70 -50
- data/test/gir_ffi/info_ext/i_callable_info_test.rb +5 -5
- data/test/gir_ffi/info_ext/i_callback_info_test.rb +6 -5
- data/test/gir_ffi/info_ext/i_field_info_test.rb +6 -6
- data/test/gir_ffi/info_ext/i_function_info_test.rb +17 -17
- data/test/gir_ffi/info_ext/i_signal_info_test.rb +8 -8
- data/test/gir_ffi/info_ext/i_type_info_test.rb +231 -216
- data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +4 -4
- data/test/gir_ffi/info_ext/safe_constant_name_test.rb +8 -8
- data/test/gir_ffi/info_ext/safe_function_name_test.rb +8 -8
- data/test/gir_ffi/interface_base_test.rb +8 -8
- data/test/gir_ffi/method_stubber_test.rb +21 -19
- data/test/gir_ffi/object_base_test.rb +23 -23
- data/test/gir_ffi/object_store_test.rb +13 -13
- data/test/gir_ffi/receiver_argument_info_test.rb +15 -15
- data/test/gir_ffi/sized_array_test.rb +68 -68
- data/test/gir_ffi/struct_base_test.rb +8 -8
- data/test/gir_ffi/struct_like_base_test.rb +64 -64
- data/test/gir_ffi/type_map_test.rb +8 -8
- data/test/gir_ffi/unintrospectable_type_info_test.rb +33 -33
- data/test/gir_ffi/union_base_test.rb +8 -8
- data/test/gir_ffi/user_defined_object_info_test.rb +34 -34
- data/test/gir_ffi/user_defined_property_info_test.rb +16 -16
- data/test/gir_ffi/variable_name_generator_test.rb +8 -8
- data/test/gir_ffi/version_test.rb +4 -4
- data/test/gir_ffi/zero_terminated_test.rb +34 -34
- data/test/gir_ffi_test_helper.rb +3 -3
- data/test/integration/callback_exceptions_test.rb +17 -21
- data/test/integration/derived_classes_test.rb +14 -13
- data/test/integration/generated_everything_test.rb +225 -224
- data/test/integration/generated_gimarshallingtests_test.rb +1174 -1060
- data/test/integration/generated_gio_test.rb +36 -36
- data/test/integration/generated_glib_test.rb +4 -6
- data/test/integration/generated_gobject_test.rb +43 -35
- data/test/integration/generated_gst_test.rb +20 -16
- data/test/integration/generated_gtk_source_test.rb +9 -15
- data/test/integration/generated_gtop_test.rb +8 -15
- data/test/integration/generated_pango_ft2_test.rb +2 -2
- data/test/integration/generated_pango_test.rb +4 -4
- data/test/integration/generated_regress_test.rb +1858 -1632
- data/test/integration/generated_secret_test.rb +8 -11
- data/test/integration/generated_utility_test.rb +81 -81
- data/test/integration/generated_warnlib_test.rb +17 -21
- data/test/integration/method_lookup_test.rb +6 -6
- data/test/introspection_test_helper.rb +49 -7
- data/test/minitest/stats_plugin.rb +1 -1
- metadata +21 -23
- data/lib/ffi-glib/array_methods.rb +0 -16
- data/test/gir_ffi/in_out_pointer_test.rb +0 -56
data/lib/gir_ffi/boolean.rb
CHANGED
data/lib/gir_ffi/boxed_base.rb
CHANGED
data/lib/gir_ffi/builder.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
3
|
+
require "gir_ffi/builders/type_builder"
|
4
|
+
require "gir_ffi/builders/module_builder"
|
5
|
+
require "gir_ffi/builder_helper"
|
6
|
+
require "gir_ffi/unintrospectable_type_info"
|
7
|
+
require "gir_ffi/unintrospectable_boxed_info"
|
8
8
|
|
9
9
|
module GirFFI
|
10
10
|
# Builds modules and classes based on information found in the
|
@@ -19,11 +19,17 @@ module GirFFI
|
|
19
19
|
|
20
20
|
def self.build_by_gtype(gtype)
|
21
21
|
info = GObjectIntrospection::IRepository.default.find_by_gtype gtype
|
22
|
-
info ||=
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
22
|
+
info ||= begin
|
23
|
+
fund = GObject.type_fundamental gtype
|
24
|
+
if fund == GObject::TYPE_BOXED
|
25
|
+
UnintrospectableBoxedInfo.new gtype
|
26
|
+
elsif fund == GObject::TYPE_OBJECT
|
27
|
+
UnintrospectableTypeInfo.new gtype
|
28
|
+
elsif fund >= GObject::TYPE_RESERVED_USER_FIRST
|
29
|
+
UnintrospectableTypeInfo.new gtype
|
30
|
+
else
|
31
|
+
raise "Unable to handle type #{GObject.type_name gtype}"
|
32
|
+
end
|
27
33
|
end
|
28
34
|
|
29
35
|
build_class info
|
@@ -36,6 +42,8 @@ module GirFFI
|
|
36
42
|
unless modul.const_defined? :GIR_FFI_BUILDER
|
37
43
|
raise "The module #{module_name} was already defined elsewhere"
|
38
44
|
end
|
45
|
+
|
46
|
+
return modul
|
39
47
|
end
|
40
48
|
Builders::ModuleBuilder.new(module_name,
|
41
49
|
namespace: namespace,
|
@@ -12,7 +12,12 @@ module GirFFI
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def get_or_define_class(namespace, name, parent)
|
15
|
-
optionally_define_constant(namespace, name) { Class.new parent }
|
15
|
+
klass = optionally_define_constant(namespace, name) { Class.new parent }
|
16
|
+
unless klass.superclass == parent
|
17
|
+
raise "Expected superclass #{parent}, found #{klass.superclass}"
|
18
|
+
end
|
19
|
+
|
20
|
+
klass
|
16
21
|
end
|
17
22
|
|
18
23
|
def get_or_define_module(parent, name)
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
3
|
+
require "gir_ffi/builders/base_argument_builder"
|
4
|
+
require "gir_ffi/builders/closure_to_pointer_convertor"
|
5
|
+
require "gir_ffi/builders/full_c_to_ruby_convertor"
|
6
|
+
require "gir_ffi/builders/ruby_to_c_convertor"
|
7
|
+
require "gir_ffi/builders/pointer_value_convertor"
|
8
|
+
require "gir_ffi/builders/null_convertor"
|
9
9
|
|
10
10
|
module GirFFI
|
11
11
|
module Builders
|
@@ -91,8 +91,8 @@ module GirFFI
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def ingoing_value_storage
|
94
|
-
PointerValueConvertor.new(type_spec)
|
95
|
-
value_to_pointer(call_argument_name, ingoing_convertor.conversion)
|
94
|
+
PointerValueConvertor.new(type_spec)
|
95
|
+
.value_to_pointer(call_argument_name, ingoing_convertor.conversion)
|
96
96
|
end
|
97
97
|
|
98
98
|
def has_post_conversion?
|
@@ -114,7 +114,7 @@ module GirFFI
|
|
114
114
|
|
115
115
|
def outgoing_convertor(base)
|
116
116
|
FullCToRubyConvertor.new(type_info, base, length_argument_name,
|
117
|
-
ownership_transfer:
|
117
|
+
ownership_transfer: arginfo.ownership_transfer)
|
118
118
|
end
|
119
119
|
|
120
120
|
def sub_type_spec
|
@@ -138,11 +138,11 @@ module GirFFI
|
|
138
138
|
# is a pointer. For example, an out parameter of type gint8* will always
|
139
139
|
# be allocated by the caller (that's us).
|
140
140
|
def allocated_by_them?
|
141
|
-
|
141
|
+
!arginfo.caller_allocates? && type_info.pointer?
|
142
142
|
end
|
143
143
|
|
144
144
|
def length_argument_name
|
145
|
-
length_arg
|
145
|
+
length_arg&.post_converted_name
|
146
146
|
end
|
147
147
|
|
148
148
|
def needs_size_check?
|
@@ -155,12 +155,12 @@ module GirFFI
|
|
155
155
|
end
|
156
156
|
|
157
157
|
def skipped_in?
|
158
|
-
|
158
|
+
arginfo.skip?
|
159
159
|
end
|
160
160
|
|
161
161
|
def skipped_out?
|
162
|
-
|
163
|
-
|
162
|
+
arginfo.skip? ||
|
163
|
+
array_arg && array_arg.specialized_type_tag == :strv
|
164
164
|
end
|
165
165
|
|
166
166
|
def has_output_value?
|
@@ -176,7 +176,7 @@ module GirFFI
|
|
176
176
|
end
|
177
177
|
|
178
178
|
def array_length_assignment
|
179
|
-
arrname =
|
179
|
+
arrname = array_arg.name
|
180
180
|
"#{name} = #{arrname}.nil? ? 0 : #{arrname}.length"
|
181
181
|
end
|
182
182
|
|
@@ -200,14 +200,14 @@ module GirFFI
|
|
200
200
|
|
201
201
|
def caller_allocated_object?
|
202
202
|
[:struct, :array].include?(specialized_type_tag) &&
|
203
|
-
|
203
|
+
arginfo.caller_allocates?
|
204
204
|
end
|
205
205
|
|
206
|
-
DESTROY_NOTIFIER =
|
206
|
+
DESTROY_NOTIFIER = "GLib::DestroyNotify.default"
|
207
207
|
|
208
208
|
def ingoing_convertor
|
209
209
|
if skipped_in?
|
210
|
-
NullConvertor.new(
|
210
|
+
NullConvertor.new("0")
|
211
211
|
elsif destroy_notifier?
|
212
212
|
NullConvertor.new(DESTROY_NOTIFIER)
|
213
213
|
elsif user_data?
|
@@ -233,7 +233,7 @@ module GirFFI
|
|
233
233
|
end
|
234
234
|
|
235
235
|
def callback_argument_name
|
236
|
-
|
236
|
+
related_callback_builder.call_argument_name
|
237
237
|
end
|
238
238
|
end
|
239
239
|
end
|
@@ -121,8 +121,8 @@ module GirFFI
|
|
121
121
|
end
|
122
122
|
|
123
123
|
def sorted_base_argument_builders
|
124
|
-
@sorted_base_argument_builders ||= @base_argument_builders
|
125
|
-
sort_by.with_index { |arg, i| [arg.array_length_idx, i] }
|
124
|
+
@sorted_base_argument_builders ||= @base_argument_builders
|
125
|
+
.sort_by.with_index { |arg, i| [arg.array_length_idx, i] }
|
126
126
|
end
|
127
127
|
|
128
128
|
def split_off_block_argument
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
3
|
+
require "gir_ffi/builders/argument_builder"
|
4
|
+
require "gir_ffi/builders/argument_builder_collection"
|
5
|
+
require "gir_ffi/builders/method_template"
|
6
|
+
require "gir_ffi/builders/null_argument_builder"
|
7
|
+
require "gir_ffi/error_argument_info"
|
8
|
+
require "gir_ffi/return_value_info"
|
9
|
+
require "gir_ffi/variable_name_generator"
|
10
10
|
|
11
11
|
module GirFFI
|
12
12
|
module Builders
|
@@ -35,19 +35,19 @@ module GirFFI
|
|
35
35
|
when :struct, :union
|
36
36
|
case @ownership_transfer
|
37
37
|
when :everything
|
38
|
-
|
38
|
+
"wrap_own"
|
39
39
|
when :nothing
|
40
|
-
|
40
|
+
"wrap_copy"
|
41
41
|
else
|
42
|
-
|
42
|
+
"wrap"
|
43
43
|
end
|
44
44
|
else
|
45
|
-
|
45
|
+
"wrap"
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
49
|
def conversion_argument_list
|
50
|
-
conversion_arguments.join(
|
50
|
+
conversion_arguments.join(", ")
|
51
51
|
end
|
52
52
|
|
53
53
|
def conversion_arguments
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
3
|
+
require "gir_ffi/builders/base_argument_builder"
|
4
|
+
require "gir_ffi/builders/c_to_ruby_convertor"
|
5
|
+
require "gir_ffi/builders/closure_convertor"
|
6
|
+
require "gir_ffi/builders/null_convertor"
|
7
|
+
require "gir_ffi/builders/pointer_value_convertor"
|
8
8
|
|
9
9
|
module GirFFI
|
10
10
|
module Builders
|
@@ -53,7 +53,7 @@ module GirFFI
|
|
53
53
|
when :inout
|
54
54
|
[out_parameter_preparation, ingoing_pre_conversion]
|
55
55
|
when :error
|
56
|
-
[out_parameter_preparation,
|
56
|
+
[out_parameter_preparation, "begin"]
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -65,7 +65,7 @@ module GirFFI
|
|
65
65
|
[
|
66
66
|
"rescue => #{result_name}",
|
67
67
|
value_to_pointer_conversion,
|
68
|
-
|
68
|
+
"end"
|
69
69
|
]
|
70
70
|
else
|
71
71
|
[]
|
@@ -166,7 +166,7 @@ module GirFFI
|
|
166
166
|
end
|
167
167
|
|
168
168
|
def length_argument_name
|
169
|
-
length_arg
|
169
|
+
length_arg&.pre_converted_name
|
170
170
|
end
|
171
171
|
end
|
172
172
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "gir_ffi/builders/base_type_builder"
|
4
|
+
require "gir_ffi/builders/mapping_method_builder"
|
5
|
+
require "gir_ffi/callback_base"
|
6
6
|
|
7
7
|
module GirFFI
|
8
8
|
module Builders
|
@@ -23,7 +23,19 @@ module GirFFI
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def klass
|
26
|
-
@klass ||= get_or_define_class
|
26
|
+
@klass ||= get_or_define_class container_module, @classname, CallbackBase
|
27
|
+
end
|
28
|
+
|
29
|
+
def container_module
|
30
|
+
@container_module ||=
|
31
|
+
if @info.container
|
32
|
+
type_info = @info.container
|
33
|
+
field_info = type_info.container
|
34
|
+
container_class_info = field_info.container
|
35
|
+
namespace_module.const_get container_class_info.safe_name
|
36
|
+
else
|
37
|
+
namespace_module
|
38
|
+
end
|
27
39
|
end
|
28
40
|
|
29
41
|
def mapping_method_definition
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "gir_ffi/builders/base_return_value_builder"
|
4
|
+
require "gir_ffi/builders/ruby_to_c_convertor"
|
5
5
|
|
6
6
|
module GirFFI
|
7
7
|
module Builders
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "gir_ffi/builders/argument_builder_collection"
|
4
|
+
require "gir_ffi/builders/method_template"
|
5
|
+
require "gir_ffi/builders/null_return_value_builder"
|
6
6
|
|
7
7
|
module GirFFI
|
8
8
|
module Builders
|
@@ -30,16 +30,16 @@ module GirFFI
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def method_arguments
|
33
|
-
[
|
33
|
+
["*args", "&block"]
|
34
34
|
end
|
35
35
|
|
36
36
|
def preparation
|
37
|
-
if @info.safe_name ==
|
38
|
-
[
|
37
|
+
if @info.safe_name == "new"
|
38
|
+
["obj = allocate"]
|
39
39
|
else
|
40
40
|
[
|
41
41
|
"raise NoMethodError unless self == #{@info.container.full_type_name}",
|
42
|
-
|
42
|
+
"obj = allocate"
|
43
43
|
]
|
44
44
|
end
|
45
45
|
end
|
@@ -49,13 +49,13 @@ module GirFFI
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def result
|
52
|
-
[
|
52
|
+
["obj"]
|
53
53
|
end
|
54
54
|
|
55
55
|
private
|
56
56
|
|
57
57
|
def initializer_name
|
58
|
-
@info.safe_name.sub(/^new/,
|
58
|
+
@info.safe_name.sub(/^new/, "initialize")
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "gir_ffi/builders/registered_type_builder"
|
4
|
+
require "gir_ffi/enum_base"
|
5
5
|
|
6
6
|
module GirFFI
|
7
7
|
module Builders
|
@@ -16,7 +16,7 @@ module GirFFI
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def value_spec
|
19
|
-
|
19
|
+
value_infos.map do |vinfo|
|
20
20
|
val = GirFFI::ArgHelper.cast_uint32_to_int32(vinfo.value)
|
21
21
|
[vinfo.name.to_sym, val]
|
22
22
|
end.flatten
|
@@ -26,6 +26,7 @@ module GirFFI
|
|
26
26
|
setup_ffi_type
|
27
27
|
klass.extend superclass
|
28
28
|
setup_constants
|
29
|
+
setup_value_constants
|
29
30
|
stub_methods
|
30
31
|
setup_inspect
|
31
32
|
end
|
@@ -40,6 +41,14 @@ module GirFFI
|
|
40
41
|
end
|
41
42
|
end
|
42
43
|
|
44
|
+
def setup_value_constants
|
45
|
+
value_infos.each do |vinfo|
|
46
|
+
optionally_define_constant klass, vinfo.constant_name do
|
47
|
+
vinfo.value
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
43
52
|
def setup_inspect
|
44
53
|
klass.instance_eval <<-RUBY, __FILE__, __LINE__ + 1
|
45
54
|
def self.inspect
|
@@ -55,6 +64,10 @@ module GirFFI
|
|
55
64
|
def superclass
|
56
65
|
EnumBase
|
57
66
|
end
|
67
|
+
|
68
|
+
def value_infos
|
69
|
+
@value_infos ||= info.values
|
70
|
+
end
|
58
71
|
end
|
59
72
|
end
|
60
73
|
end
|