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
@@ -20,7 +20,7 @@ module GObjectIntrospection
|
|
20
20
|
def value
|
21
21
|
case type_tag
|
22
22
|
when :utf8
|
23
|
-
raw_value.force_encoding(
|
23
|
+
raw_value.force_encoding("utf-8")
|
24
24
|
when :gboolean
|
25
25
|
raw_value.nonzero? ? true : false
|
26
26
|
else
|
@@ -29,7 +29,7 @@ module GObjectIntrospection
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def constant_type
|
32
|
-
ITypeInfo.wrap Lib.g_constant_info_get_type self
|
32
|
+
@constant_type ||= ITypeInfo.wrap Lib.g_constant_info_get_type self
|
33
33
|
end
|
34
34
|
|
35
35
|
private
|
@@ -21,7 +21,7 @@ module GObjectIntrospection
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def parent
|
24
|
-
IObjectInfo.wrap Lib.g_object_info_get_parent(self)
|
24
|
+
@parent ||= IObjectInfo.wrap Lib.g_object_info_get_parent(self)
|
25
25
|
end
|
26
26
|
|
27
27
|
def n_interfaces
|
@@ -59,7 +59,7 @@ module GObjectIntrospection
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def find_property(name)
|
62
|
-
name = name.to_s.tr(
|
62
|
+
name = name.to_s.tr("_", "-")
|
63
63
|
properties.find { |prop| prop.name == name }
|
64
64
|
end
|
65
65
|
|
@@ -5,11 +5,11 @@ module GObjectIntrospection
|
|
5
5
|
# Represents a property of an IObjectInfo or an IInterfaceInfo.
|
6
6
|
class IPropertyInfo < IBaseInfo
|
7
7
|
def property_type
|
8
|
-
ITypeInfo.wrap Lib.g_property_info_get_type(self)
|
8
|
+
@property_type ||= ITypeInfo.wrap Lib.g_property_info_get_type(self)
|
9
9
|
end
|
10
10
|
|
11
11
|
def flags
|
12
|
-
Lib.g_property_info_get_flags self
|
12
|
+
@flags ||= Lib.g_property_info_get_flags self
|
13
13
|
end
|
14
14
|
|
15
15
|
def readable?
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "singleton"
|
4
4
|
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
5
|
+
require "ffi-gobject_introspection/lib"
|
6
|
+
require "ffi-gobject_introspection/strv"
|
7
|
+
require "ffi-gobject_introspection/g_error"
|
8
8
|
|
9
9
|
module GObjectIntrospection
|
10
10
|
# The Gobject Introspection Repository. This class is the point of
|
@@ -58,13 +58,16 @@ module GObjectIntrospection
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def find_by_name(namespace, name)
|
61
|
-
|
61
|
+
@name_cache ||= {}
|
62
|
+
@name_cache[[namespace, name]] ||=
|
63
|
+
wrap_info Lib.g_irepository_find_by_name(self, namespace, name)
|
62
64
|
end
|
63
65
|
|
64
66
|
def find_by_gtype(gtype)
|
65
67
|
raise ArgumentError, "Type #{gtype} is not a valid type" if gtype == 0
|
66
68
|
|
67
|
-
|
69
|
+
@gtype_cache ||= {}
|
70
|
+
@gtype_cache[gtype] ||= wrap_info Lib.g_irepository_find_by_gtype(self, gtype)
|
68
71
|
end
|
69
72
|
|
70
73
|
def dependencies(namespace)
|
@@ -5,24 +5,30 @@ module GObjectIntrospection
|
|
5
5
|
# Represents type information, direction, transfer etc.
|
6
6
|
class ITypeInfo < IBaseInfo
|
7
7
|
def pointer?
|
8
|
-
|
8
|
+
return @pointer_eh if defined? @pointer_eh
|
9
|
+
|
10
|
+
@pointer_eh = Lib.g_type_info_is_pointer self
|
9
11
|
end
|
10
12
|
|
11
13
|
def tag
|
12
|
-
Lib.g_type_info_get_tag self
|
14
|
+
@tag ||= Lib.g_type_info_get_tag self
|
13
15
|
end
|
14
16
|
|
15
17
|
def param_type(index)
|
16
|
-
|
18
|
+
@param_type_cache ||= []
|
19
|
+
@param_type_cache[index] ||=
|
20
|
+
ITypeInfo.wrap Lib.g_type_info_get_param_type(self, index)
|
17
21
|
end
|
18
22
|
|
19
23
|
def interface
|
20
|
-
|
21
|
-
|
24
|
+
@interface ||= begin
|
25
|
+
ptr = Lib.g_type_info_get_interface self
|
26
|
+
IRepository.wrap_ibaseinfo_pointer ptr
|
27
|
+
end
|
22
28
|
end
|
23
29
|
|
24
30
|
def array_length
|
25
|
-
Lib.g_type_info_get_array_length self
|
31
|
+
@array_length ||= Lib.g_type_info_get_array_length self
|
26
32
|
end
|
27
33
|
|
28
34
|
def array_fixed_size
|
@@ -38,7 +44,7 @@ module GObjectIntrospection
|
|
38
44
|
end
|
39
45
|
|
40
46
|
def name
|
41
|
-
raise
|
47
|
+
raise "Should not call this for ITypeInfo"
|
42
48
|
end
|
43
49
|
end
|
44
50
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "ffi"
|
4
|
+
require "ffi/bit_masks"
|
5
5
|
|
6
6
|
module GObjectIntrospection
|
7
7
|
# Module for attaching functions from the girepository library
|
8
8
|
module Lib
|
9
9
|
extend FFI::Library
|
10
10
|
extend FFI::BitMasks
|
11
|
-
ffi_lib
|
11
|
+
ffi_lib "girepository-1.0.so.1"
|
12
12
|
|
13
13
|
# IRepository
|
14
14
|
enum :IRepositoryLoadFlags, [:LAZY, (1 << 0)]
|
@@ -116,24 +116,35 @@ module GObjectIntrospection
|
|
116
116
|
attach_function :g_arg_info_get_destroy, [:pointer], :int
|
117
117
|
attach_function :g_arg_info_get_type, [:pointer], :pointer
|
118
118
|
|
119
|
-
#
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
119
|
+
# ITypeTag
|
120
|
+
enum :ITypeTag, [
|
121
|
+
:void,
|
122
|
+
:gboolean,
|
123
|
+
:gint8,
|
124
|
+
:guint8,
|
125
|
+
:gint16,
|
126
|
+
:guint16,
|
127
|
+
:gint32,
|
128
|
+
:guint32,
|
129
|
+
:gint64,
|
130
|
+
:guint64,
|
131
|
+
:gfloat,
|
132
|
+
:gdouble,
|
133
|
+
:GType,
|
134
|
+
:utf8,
|
135
|
+
:filename,
|
136
|
+
:array,
|
137
|
+
:interface,
|
138
|
+
:glist,
|
139
|
+
:gslist,
|
140
|
+
:ghash,
|
141
|
+
:error,
|
142
|
+
:gunichar
|
143
|
+
]
|
144
|
+
|
135
145
|
attach_function :g_type_tag_to_string, [:ITypeTag], :string
|
136
146
|
|
147
|
+
# ITypeInfo
|
137
148
|
enum :IArrayType, [
|
138
149
|
:c,
|
139
150
|
:array,
|
data/lib/gir_ffi-base.rb
CHANGED
data/lib/gir_ffi-base/gobject.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Ensure GObject is defined by GirFFI itself
|
4
|
-
raise
|
4
|
+
raise "The module GObject was already defined elsewhere" if Kernel.const_defined? :GObject
|
5
5
|
|
6
|
-
require
|
6
|
+
require "gir_ffi-base/gobject/lib"
|
7
7
|
|
8
8
|
# The part of the GObject namespace that is needed by GirFFI.
|
9
9
|
#
|
@@ -17,32 +17,33 @@ module GObject
|
|
17
17
|
Lib.g_type_fundamental gtype
|
18
18
|
end
|
19
19
|
|
20
|
-
TYPE_INVALID = type_from_name(
|
21
|
-
TYPE_NONE = type_from_name(
|
22
|
-
TYPE_INTERFACE = type_from_name(
|
23
|
-
TYPE_CHAR = type_from_name(
|
24
|
-
TYPE_UCHAR = type_from_name(
|
25
|
-
TYPE_BOOLEAN = type_from_name(
|
26
|
-
TYPE_INT = type_from_name(
|
27
|
-
TYPE_UINT = type_from_name(
|
28
|
-
TYPE_LONG = type_from_name(
|
29
|
-
TYPE_ULONG = type_from_name(
|
30
|
-
TYPE_INT64 = type_from_name(
|
31
|
-
TYPE_UINT64 = type_from_name(
|
32
|
-
TYPE_ENUM = type_from_name(
|
33
|
-
TYPE_FLAGS = type_from_name(
|
34
|
-
TYPE_FLOAT = type_from_name(
|
35
|
-
TYPE_DOUBLE = type_from_name(
|
36
|
-
TYPE_STRING = type_from_name(
|
37
|
-
TYPE_POINTER = type_from_name(
|
38
|
-
TYPE_BOXED = type_from_name(
|
39
|
-
TYPE_PARAM = type_from_name(
|
40
|
-
TYPE_OBJECT = type_from_name(
|
41
|
-
TYPE_GTYPE = type_from_name(
|
42
|
-
TYPE_VARIANT = type_from_name(
|
20
|
+
TYPE_INVALID = type_from_name("invalid")
|
21
|
+
TYPE_NONE = type_from_name("void")
|
22
|
+
TYPE_INTERFACE = type_from_name("GInterface")
|
23
|
+
TYPE_CHAR = type_from_name("gchar")
|
24
|
+
TYPE_UCHAR = type_from_name("guchar")
|
25
|
+
TYPE_BOOLEAN = type_from_name("gboolean")
|
26
|
+
TYPE_INT = type_from_name("gint")
|
27
|
+
TYPE_UINT = type_from_name("guint")
|
28
|
+
TYPE_LONG = type_from_name("glong")
|
29
|
+
TYPE_ULONG = type_from_name("gulong")
|
30
|
+
TYPE_INT64 = type_from_name("gint64")
|
31
|
+
TYPE_UINT64 = type_from_name("guint64")
|
32
|
+
TYPE_ENUM = type_from_name("GEnum")
|
33
|
+
TYPE_FLAGS = type_from_name("GFlags")
|
34
|
+
TYPE_FLOAT = type_from_name("gfloat")
|
35
|
+
TYPE_DOUBLE = type_from_name("gdouble")
|
36
|
+
TYPE_STRING = type_from_name("gchararray")
|
37
|
+
TYPE_POINTER = type_from_name("gpointer")
|
38
|
+
TYPE_BOXED = type_from_name("GBoxed")
|
39
|
+
TYPE_PARAM = type_from_name("GParam")
|
40
|
+
TYPE_OBJECT = type_from_name("GObject")
|
41
|
+
TYPE_GTYPE = type_from_name("GType")
|
42
|
+
TYPE_VARIANT = type_from_name("GVariant")
|
43
43
|
|
44
44
|
TYPE_ARRAY = Lib.g_array_get_type
|
45
45
|
TYPE_BYTE_ARRAY = Lib.g_byte_array_get_type
|
46
|
+
TYPE_ERROR = Lib.g_error_get_type
|
46
47
|
TYPE_HASH_TABLE = Lib.g_hash_table_get_type
|
47
48
|
TYPE_STRV = Lib.g_strv_get_type
|
48
49
|
end
|
@@ -1,17 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "ffi/bit_masks"
|
4
4
|
|
5
5
|
module GObject
|
6
6
|
# Module for attaching functions from the gobject library
|
7
7
|
module Lib
|
8
8
|
extend FFI::Library
|
9
9
|
extend FFI::BitMasks
|
10
|
-
ffi_lib
|
10
|
+
ffi_lib "gobject-2.0"
|
11
11
|
attach_function :g_type_from_name, [:string], :size_t
|
12
12
|
attach_function :g_type_fundamental, [:size_t], :size_t
|
13
13
|
attach_function :g_array_get_type, [], :size_t
|
14
14
|
attach_function :g_byte_array_get_type, [], :size_t
|
15
|
+
attach_function :g_error_get_type, [], :size_t
|
15
16
|
attach_function :g_hash_table_get_type, [], :size_t
|
16
17
|
attach_function :g_strv_get_type, [], :size_t
|
17
18
|
end
|
data/lib/gir_ffi.rb
CHANGED
data/lib/gir_ffi/arg_helper.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
3
|
+
require "gir_ffi/allocation_helper"
|
4
|
+
require "gir_ffi/builder"
|
5
|
+
require "gir_ffi/glib_error"
|
6
|
+
require "gir_ffi/object_store"
|
7
7
|
|
8
8
|
module GirFFI
|
9
9
|
# Helper module containing methods used during argument conversion in
|
@@ -1,29 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module GirFFI
|
4
|
-
# The
|
5
|
-
#
|
6
|
-
|
7
|
-
class InOutPointer < FFI::Pointer
|
4
|
+
# The ArrayElementConvertor class handles conversion from C array elements to
|
5
|
+
# ruby values
|
6
|
+
class ArrayElementConvertor
|
8
7
|
attr_reader :value_type
|
8
|
+
attr_reader :pointer
|
9
9
|
|
10
10
|
def initialize(type, ptr)
|
11
11
|
@value_type = type
|
12
|
-
|
12
|
+
@pointer = ptr
|
13
13
|
end
|
14
14
|
|
15
|
-
def to_value
|
16
|
-
case value_ffi_type
|
17
|
-
when Module
|
18
|
-
value_ffi_type.get_value_from_pointer(self, 0)
|
19
|
-
when Symbol
|
20
|
-
send("get_#{value_ffi_type}", 0)
|
21
|
-
else
|
22
|
-
raise NotImplementedError
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
# Convert more fully to a ruby value than #to_value
|
27
15
|
def to_ruby_value
|
28
16
|
bare_value = to_value
|
29
17
|
case value_type
|
@@ -38,14 +26,19 @@ module GirFFI
|
|
38
26
|
end
|
39
27
|
end
|
40
28
|
|
41
|
-
def self.allocate_new(type)
|
42
|
-
ffi_type = TypeMap.type_specification_to_ffi_type type
|
43
|
-
ptr = FFI::MemoryPointer.new(ffi_type)
|
44
|
-
new type, ptr
|
45
|
-
end
|
46
|
-
|
47
29
|
private
|
48
30
|
|
31
|
+
def to_value
|
32
|
+
case value_ffi_type
|
33
|
+
when Module
|
34
|
+
value_ffi_type.get_value_from_pointer(pointer, 0)
|
35
|
+
when Symbol
|
36
|
+
pointer.send("get_#{value_ffi_type}", 0)
|
37
|
+
else
|
38
|
+
raise NotImplementedError
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
49
42
|
def value_ffi_type
|
50
43
|
@value_ffi_type ||= TypeMap.type_specification_to_ffi_type value_type
|
51
44
|
end
|