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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2ee5f86f4d4106139b51edf6855aa3a84bff5437b728dac4c0b878a61bbf86ea
|
4
|
+
data.tar.gz: de0aef98573ba69d41ffa094d08f576977928e6e55598586cf07c08c9c38da6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57de8a0753d8add11635ca497712988aa16507312d719bdc6ed7c8f63a707275622b73c1d968e742d13ba96094fe253baf6d60076dd186683851479cffa8cbe2
|
7
|
+
data.tar.gz: abc9d12f2590a325ab3d8deb087cc4dcf4f5e1eccf0a4dd2f74f48c50553c3b63c19cd799661830da3c13850d50b32cdcb6113ebfb0569b15e7875796a7287ed
|
data/Changelog.md
CHANGED
@@ -1,5 +1,50 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.15.3 / 2020-06-14
|
4
|
+
|
5
|
+
* Officially support Ruby 2.7
|
6
|
+
* Officially drop support for Ruby 2.4
|
7
|
+
* Store classes representing inline callback types in the class that defines
|
8
|
+
them instead of in the main namespace, thus avoiding some potential name
|
9
|
+
clashes
|
10
|
+
* Update development dependencies
|
11
|
+
* Various code quality improvements
|
12
|
+
* Record approved licenses for dependencies
|
13
|
+
|
14
|
+
## 0.15.2 / 2019-11-29
|
15
|
+
|
16
|
+
* Load girepository-1.0 library in a way that does not require installing a
|
17
|
+
development package.
|
18
|
+
|
19
|
+
## 0.15.1 / 2019-10-20
|
20
|
+
|
21
|
+
* Allow access to properties for unintrospectable classes.
|
22
|
+
|
23
|
+
## 0.15.0 / 2019-10-19
|
24
|
+
|
25
|
+
* Drop support for gobject-introspection below 1.46, the version available in
|
26
|
+
Ubuntu Xenial.
|
27
|
+
* Merge extended property getter and setter into regular ones. This means you
|
28
|
+
can always just use `#get_property` and `#set_property`. The methods
|
29
|
+
`#get_property_extended` and `#set_property_extended` are deprecated and will
|
30
|
+
be removed in GirFFI version 0.16 or later.
|
31
|
+
* Support setting ByteArray properties directly with string values.
|
32
|
+
* Target Ruby 2.4+
|
33
|
+
* Implement getting and setting of flag properties and GValues.
|
34
|
+
* Add support for basic hashtable values larger than pointer.
|
35
|
+
* Support unintrospectable classes not derived from GObject but from some other
|
36
|
+
fundamental object type.
|
37
|
+
* Make GPtrArray work with boxed types.
|
38
|
+
* Do not try to ref method reciever for struct instance methods marking the
|
39
|
+
instance receiver as transfer `:everything`.
|
40
|
+
* Support signals with GError arguments.
|
41
|
+
* Cache various methods on IBaseInfo and its subclasses.
|
42
|
+
* Generate aliases for accessor methods instead of relying on `method_missing`.
|
43
|
+
|
44
|
+
## 0.14.1 / 2018-09-27
|
45
|
+
|
46
|
+
* Add enum values as constants in the generated module.
|
47
|
+
|
3
48
|
## 0.14.0 / 2018-09-25
|
4
49
|
|
5
50
|
* Do not generate field accessors for Object types. Object data should normally
|
data/Gemfile
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
source
|
3
|
+
source "https://rubygems.org"
|
4
4
|
|
5
5
|
# The gem's dependencies are specified in gir_ffi.gemspec
|
6
6
|
gemspec
|
7
7
|
|
8
|
-
gem
|
8
|
+
gem "pry", "~> 0.13.0"
|
9
|
+
gem "ruby-prof", platform: :mri
|
10
|
+
gem "test-prof", platform: :mri
|
9
11
|
|
10
|
-
if ENV[
|
11
|
-
gem
|
12
|
+
if ENV["CI"]
|
13
|
+
gem "coveralls", group: :development if ENV["TRAVIS_RUBY_VERSION"] == "2.4"
|
12
14
|
end
|
data/README.md
CHANGED
@@ -53,7 +53,7 @@ examples can be found in `gir_ffi-gtk` and `gir_ffi-gst`.
|
|
53
53
|
|
54
54
|
## Requirements
|
55
55
|
|
56
|
-
GirFFI is supported on CRuby 2.
|
56
|
+
GirFFI is supported on CRuby 2.4, 2.5 and 2.6, and JRuby 9.2.
|
57
57
|
|
58
58
|
You will also need gobject-introspection installed with some
|
59
59
|
introspection data.
|
@@ -63,17 +63,18 @@ available under the name ending in plain `.so`. If GirFFI complains that it
|
|
63
63
|
cannot find the library, try installing development packages for those
|
64
64
|
libraries.
|
65
65
|
|
66
|
-
GirFFI should work with gobject-introspection 1.
|
66
|
+
GirFFI should work with gobject-introspection 1.46.0 and up.
|
67
67
|
|
68
68
|
On Debian and Ubuntu, installing `libgirepository1.0-1` and `gir1.2-glib-2.0`
|
69
69
|
should be enough to use GirFFI in your application.
|
70
70
|
|
71
71
|
To run the tests, you should additionally install `libgirepository1.0-dev`,
|
72
|
-
`
|
73
|
-
`gir1.2-
|
74
|
-
be enough to get `rake test` working.
|
72
|
+
`gobject-introspection`, `gir1.2-gtop-2.0`, `gir1.2-gtk-3.0`,
|
73
|
+
`gir1.2-gtksource-3.0`, `gir1.2-pango-1.0`, `gir1.2-secret-1` and
|
74
|
+
`gir1.2-gstreamer-1.0`. This should be enough to get `rake test` working.
|
75
75
|
|
76
|
-
GirFFI has not been tested on Mac OS X or Microsoft Windows. YMMV.
|
76
|
+
GirFFI has not been tested on Mac OS X or Microsoft Windows. YMMV. Pull
|
77
|
+
requests to support these platforms are welcome.
|
77
78
|
|
78
79
|
## Overrides
|
79
80
|
|
@@ -96,9 +97,9 @@ Please feel free to file bugs or send pull requests!
|
|
96
97
|
If you just want to help out but don't know where to start, have a look at
|
97
98
|
TODO.md, and check the notes in the code (e.g., using `dnote`).
|
98
99
|
|
99
|
-
If you want to send pull requests or patches,
|
100
|
-
|
101
|
-
out
|
100
|
+
If you want to send pull requests or patches, try to follow the instructions
|
101
|
+
below. **If you get stuck, please make a pull request anyway and I'll try to
|
102
|
+
help out.**
|
102
103
|
|
103
104
|
* Make sure `rake test` runs without reporting any failures.
|
104
105
|
* Add tests for your feature. Otherwise, I can't see if it works or if I
|
@@ -119,7 +120,7 @@ The following people have contributed to GirFFI over the years:
|
|
119
120
|
|
120
121
|
## License
|
121
122
|
|
122
|
-
Copyright © 2009–
|
123
|
+
Copyright © 2009–2019 [Matijs van Zuijlen](http://www.matijs.net)
|
123
124
|
|
124
125
|
GirFFI is free software, distributed under the terms of the GNU Lesser
|
125
126
|
General Public License, version 2.1 or later. See the file COPYING.LIB for
|
data/Rakefile
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "rake/clean"
|
4
|
+
require "bundler/gem_tasks"
|
5
5
|
|
6
|
-
load
|
6
|
+
load "tasks/test.rake"
|
7
7
|
|
8
|
-
task default:
|
9
|
-
task default:
|
8
|
+
task default: "test:all"
|
9
|
+
task default: "test:features"
|
data/lib/ffi-glib.rb
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Ensure GLib is defined by GirFFI itself
|
4
|
-
raise
|
4
|
+
raise "The module GLib was already defined elsewhere" if Kernel.const_defined? :GLib
|
5
5
|
|
6
|
-
require
|
6
|
+
require "gir_ffi/core"
|
7
7
|
|
8
8
|
# Bypass check for existing modules
|
9
|
-
GirFFI::Builders::ModuleBuilder.new(
|
10
|
-
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
17
|
-
require
|
18
|
-
require
|
19
|
-
require
|
20
|
-
require
|
21
|
-
require
|
22
|
-
require
|
9
|
+
GirFFI::Builders::ModuleBuilder.new("GLib").generate
|
10
|
+
|
11
|
+
require "ffi-glib/array"
|
12
|
+
require "ffi-glib/byte_array"
|
13
|
+
require "ffi-glib/bytes"
|
14
|
+
require "ffi-glib/destroy_notify"
|
15
|
+
require "ffi-glib/error"
|
16
|
+
require "ffi-glib/hash_table"
|
17
|
+
require "ffi-glib/list"
|
18
|
+
require "ffi-glib/main_loop"
|
19
|
+
require "ffi-glib/ptr_array"
|
20
|
+
require "ffi-glib/s_list"
|
21
|
+
require "ffi-glib/strv"
|
22
|
+
require "ffi-glib/variant"
|
23
23
|
|
24
24
|
# Module representing GLib's GLib namespace.
|
25
25
|
module GLib
|
data/lib/ffi-glib/array.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "ffi-glib/container_class_methods"
|
4
|
+
require "gir_ffi/array_element_convertor"
|
5
5
|
|
6
6
|
GLib.load_class :Array
|
7
7
|
|
@@ -10,7 +10,6 @@ module GLib
|
|
10
10
|
# be necessary to create objects of this class from Ruby directly.
|
11
11
|
class Array
|
12
12
|
include Enumerable
|
13
|
-
include ArrayMethods
|
14
13
|
extend ContainerClassMethods
|
15
14
|
|
16
15
|
attr_reader :element_type
|
@@ -70,6 +69,17 @@ module GLib
|
|
70
69
|
self
|
71
70
|
end
|
72
71
|
|
72
|
+
# Re-implementation of the g_array_index macro
|
73
|
+
def index(idx)
|
74
|
+
unless (0...length).cover? idx
|
75
|
+
raise IndexError, "Index #{idx} outside of bounds 0..#{length - 1}"
|
76
|
+
end
|
77
|
+
|
78
|
+
item_ptr = data_ptr + idx * element_size
|
79
|
+
convertor = GirFFI::ArrayElementConvertor.new element_type, item_ptr
|
80
|
+
convertor.to_ruby_value
|
81
|
+
end
|
82
|
+
|
73
83
|
private
|
74
84
|
|
75
85
|
def data_ptr
|
@@ -83,7 +93,7 @@ module GLib
|
|
83
93
|
def check_element_size_match
|
84
94
|
return if calculated_element_size == get_element_size
|
85
95
|
|
86
|
-
warn
|
96
|
+
warn "WARNING: Element sizes do not match"
|
87
97
|
end
|
88
98
|
|
89
99
|
def guess_element_type
|
data/lib/ffi-glib/byte_array.rb
CHANGED
@@ -15,8 +15,13 @@ module GLib
|
|
15
15
|
self.class.wrap Lib.g_byte_array_append(to_ptr, bytes, len)
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
19
|
-
|
18
|
+
def self.from(data)
|
19
|
+
case data
|
20
|
+
when self
|
21
|
+
data
|
22
|
+
else
|
23
|
+
new.append(data)
|
24
|
+
end
|
20
25
|
end
|
21
26
|
end
|
22
27
|
end
|
data/lib/ffi-glib/error.rb
CHANGED
@@ -5,7 +5,7 @@ GLib.load_class :Error
|
|
5
5
|
module GLib
|
6
6
|
# Overrides for GError, used by GLib for handling non-fatal errors.
|
7
7
|
class Error
|
8
|
-
GIR_FFI_DOMAIN = GLib.quark_from_string(
|
8
|
+
GIR_FFI_DOMAIN = GLib.quark_from_string("gir_ffi")
|
9
9
|
|
10
10
|
def self.from_exception(exception)
|
11
11
|
new_literal GIR_FFI_DOMAIN, 0, exception.message
|
data/lib/ffi-glib/hash_table.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "ffi-glib/container_class_methods"
|
4
4
|
|
5
5
|
GLib.load_class :HashTable
|
6
6
|
|
@@ -63,7 +63,7 @@ module GLib
|
|
63
63
|
when :utf8
|
64
64
|
FFI::Function.new(:uint,
|
65
65
|
[:pointer],
|
66
|
-
find_support_function(
|
66
|
+
find_support_function("g_str_hash"))
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
@@ -72,7 +72,7 @@ module GLib
|
|
72
72
|
when :utf8
|
73
73
|
FFI::Function.new(:int,
|
74
74
|
[:pointer, :pointer],
|
75
|
-
find_support_function(
|
75
|
+
find_support_function("g_str_equal"))
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
data/lib/ffi-glib/list.rb
CHANGED
data/lib/ffi-glib/main_loop.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "singleton"
|
4
4
|
|
5
5
|
GLib.load_class :MainLoop
|
6
6
|
|
@@ -40,7 +40,7 @@ module GLib
|
|
40
40
|
setup_instance_method! :run
|
41
41
|
|
42
42
|
def run_with_thread_enabler
|
43
|
-
ThreadEnabler.instance.setup_idle_handler if RUBY_ENGINE ==
|
43
|
+
ThreadEnabler.instance.setup_idle_handler if RUBY_ENGINE == "ruby"
|
44
44
|
RUNNING_LOOPS << self
|
45
45
|
result = run_without_thread_enabler
|
46
46
|
exception = EXCEPTIONS.shift
|
@@ -63,6 +63,6 @@ module GLib
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
Signal.trap
|
66
|
+
Signal.trap "INT" do
|
67
67
|
GLib::MainLoop.handle_exception(Interrupt.new)
|
68
68
|
end
|
data/lib/ffi-glib/ptr_array.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "ffi-glib/container_class_methods"
|
4
|
+
require "gir_ffi/array_element_convertor"
|
5
5
|
|
6
6
|
GLib.load_class :PtrArray
|
7
7
|
|
@@ -10,7 +10,6 @@ module GLib
|
|
10
10
|
# pointers.
|
11
11
|
class PtrArray
|
12
12
|
include Enumerable
|
13
|
-
include ArrayMethods
|
14
13
|
extend ContainerClassMethods
|
15
14
|
|
16
15
|
attr_reader :element_type
|
@@ -49,12 +48,25 @@ module GLib
|
|
49
48
|
ary.each { |item| add item }
|
50
49
|
end
|
51
50
|
|
52
|
-
|
53
|
-
|
54
|
-
|
51
|
+
# Re-implementation of the g_ptrarray_index macro
|
52
|
+
def index(idx)
|
53
|
+
unless (0...length).cover? idx
|
54
|
+
raise IndexError, "Index #{idx} outside of bounds 0..#{length - 1}"
|
55
|
+
end
|
55
56
|
|
56
|
-
|
57
|
-
|
57
|
+
item_ptr = data_ptr + idx * element_size
|
58
|
+
|
59
|
+
convert_element_type = case element_type
|
60
|
+
when :utf8
|
61
|
+
:utf8
|
62
|
+
when GirFFI::ObjectBase
|
63
|
+
element_type
|
64
|
+
else
|
65
|
+
[:pointer, element_type]
|
66
|
+
end
|
67
|
+
|
68
|
+
convertor = GirFFI::ArrayElementConvertor.new convert_element_type, item_ptr
|
69
|
+
convertor.to_ruby_value
|
58
70
|
end
|
59
71
|
|
60
72
|
def each
|
@@ -70,5 +82,15 @@ module GLib
|
|
70
82
|
def ==(other)
|
71
83
|
to_a == other.to_a
|
72
84
|
end
|
85
|
+
|
86
|
+
private
|
87
|
+
|
88
|
+
def element_size
|
89
|
+
POINTER_SIZE
|
90
|
+
end
|
91
|
+
|
92
|
+
def data_ptr
|
93
|
+
struct[:pdata]
|
94
|
+
end
|
73
95
|
end
|
74
96
|
end
|
data/lib/ffi-glib/s_list.rb
CHANGED
data/lib/ffi-glib/variant.rb
CHANGED
data/lib/ffi-gobject.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "gir_ffi/core"
|
4
4
|
|
5
5
|
# Bypass check for existing modules
|
6
|
-
GirFFI::Builders::ModuleBuilder.new(
|
6
|
+
GirFFI::Builders::ModuleBuilder.new("GObject").generate
|
7
7
|
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
14
|
-
require
|
15
|
-
require
|
8
|
+
require "ffi-gobject/value"
|
9
|
+
require "ffi-gobject/initially_unowned"
|
10
|
+
require "ffi-gobject/closure"
|
11
|
+
require "ffi-gobject/object"
|
12
|
+
require "ffi-gobject/object_class"
|
13
|
+
require "ffi-gobject/param_spec"
|
14
|
+
require "ffi-gobject/ruby_closure"
|
15
|
+
require "gir_ffi/signal_not_found_error"
|
16
16
|
|
17
17
|
# Module representing GLib's GObject namespace.
|
18
18
|
module GObject
|
@@ -47,7 +47,7 @@ module GObject
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def self.signal_emit(object, detailed_signal, *args)
|
50
|
-
signal, detail = detailed_signal.split(
|
50
|
+
signal, detail = detailed_signal.split("::")
|
51
51
|
signal_id = signal_lookup_from_instance signal, object
|
52
52
|
detail_quark = GLib.quark_from_string(detail)
|
53
53
|
|
@@ -63,9 +63,9 @@ module GObject
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def self.signal_connect(object, detailed_signal, data = nil, after = false, &block)
|
66
|
-
raise ArgumentError,
|
66
|
+
raise ArgumentError, "Block needed" unless block_given?
|
67
67
|
|
68
|
-
signal_name, = detailed_signal.split(
|
68
|
+
signal_name, = detailed_signal.split("::")
|
69
69
|
sig_info = object.class.find_signal signal_name
|
70
70
|
|
71
71
|
closure = sig_info.wrap_in_closure do |*args|
|