gir_ffi 0.15.7 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +44 -18
  3. data/README.md +8 -23
  4. data/lib/ffi-glib/bytes.rb +0 -12
  5. data/lib/ffi-glib/hash_table.rb +1 -1
  6. data/lib/ffi-glib/main_loop.rb +1 -1
  7. data/lib/ffi-glib/ptr_array.rb +24 -15
  8. data/lib/ffi-glib/variant.rb +4 -6
  9. data/lib/ffi-gobject/object.rb +30 -60
  10. data/lib/ffi-gobject/object_class.rb +2 -10
  11. data/lib/ffi-gobject/value.rb +26 -26
  12. data/lib/ffi-gobject.rb +4 -18
  13. data/lib/ffi-gobject_introspection/i_base_info.rb +1 -1
  14. data/lib/ffi-gobject_introspection/i_constant_info.rb +10 -10
  15. data/lib/ffi-gobject_introspection/lib.rb +11 -11
  16. data/lib/ffi-gobject_introspection.rb +19 -19
  17. data/lib/gir_ffi/builder.rb +1 -1
  18. data/lib/gir_ffi/builders/argument_builder_collection.rb +24 -8
  19. data/lib/gir_ffi/builders/base_argument_builder.rb +2 -2
  20. data/lib/gir_ffi/builders/base_method_builder.rb +23 -23
  21. data/lib/gir_ffi/builders/constructor_builder.rb +1 -1
  22. data/lib/gir_ffi/builders/mapping_method_builder.rb +1 -1
  23. data/lib/gir_ffi/builders/marshalling_method_builder.rb +2 -2
  24. data/lib/gir_ffi/builders/module_builder.rb +1 -1
  25. data/lib/gir_ffi/builders/object_builder.rb +10 -12
  26. data/lib/gir_ffi/builders/struct_builder.rb +1 -1
  27. data/lib/gir_ffi/builders/type_builder.rb +9 -9
  28. data/lib/gir_ffi/builders/user_defined_builder.rb +24 -26
  29. data/lib/gir_ffi/class_base.rb +1 -3
  30. data/lib/gir_ffi/core.rb +0 -5
  31. data/lib/gir_ffi/in_pointer.rb +6 -6
  32. data/lib/gir_ffi/info_ext/full_type_name.rb +3 -2
  33. data/lib/gir_ffi/info_ext/i_function_info.rb +10 -0
  34. data/lib/gir_ffi/info_ext/i_signal_info.rb +8 -6
  35. data/lib/gir_ffi/info_ext/i_type_info.rb +21 -26
  36. data/lib/gir_ffi/info_ext/i_vfunc_info.rb +4 -0
  37. data/lib/gir_ffi/instance_method_setup.rb +3 -1
  38. data/lib/gir_ffi/object_base.rb +5 -5
  39. data/lib/gir_ffi/struct_like_base.rb +0 -1
  40. data/lib/gir_ffi/type_map.rb +30 -30
  41. data/lib/gir_ffi/unintrospectable_type_info.rb +2 -2
  42. data/lib/gir_ffi/user_defined_object_info.rb +0 -3
  43. data/lib/gir_ffi/user_defined_property_info.rb +33 -33
  44. data/lib/gir_ffi/version.rb +1 -1
  45. data/lib/gir_ffi/zero_terminated.rb +1 -1
  46. data/lib/gir_ffi-base/gobject.rb +1 -1
  47. metadata +33 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ce8934650d918851ad4a5eee0c37f66025c0c5292aa7f556494998741f415de8
4
- data.tar.gz: dd13f22a5ca8a3f9d3783827152b402a70f4b096a1443658c967254387bd4379
3
+ metadata.gz: bfd3130c297141938f61b59a4e4be4ec2e76832cf38341533f18a5598ac6cd30
4
+ data.tar.gz: 2e94de2c70d365baa1fc1fd506e5cadbaf5d3b9aaa36dbde69e7813f742ce357
5
5
  SHA512:
6
- metadata.gz: 6fc02f1d258f98957da87ad2573db3c5300c5652e58cff69cf82ad00c8dcdf410cbad257a2def7c8b2803dc23caa96a33e0178e57f9a123d4f2b79410ff6ec8e
7
- data.tar.gz: ba8168148f9a8d3cab2d462096734596d8785e5bb2531b825e38073cbda750d5504fb2b0ec3fa191debad560da98b8d2ca9d8c09836481bfb078ebaf149f1649
6
+ metadata.gz: 94de6fa54920e6c878d271f57c9c737aa5b6ca6025fe5d1d395e26e146208e8dafb9c43dc679984dcaa4216d373f658f25e8cdd676f96724cd7d8cbf7aae6012
7
+ data.tar.gz: d4f06ba95a49d8ad6476cda459dc93d3630533b9dc48f1fc48917c86d7124965700771a71084925f5382836352fe9b203536c0df686fb2a554530fb27e203cbb
data/Changelog.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.16.0 / 2022-05-21
4
+
5
+ * Support Ruby 3.1
6
+ * Rename `#object_class` to `#class_struct`
7
+ * Remove `GObject.object_class_from_instance`
8
+ * Limit public interface of `BaseMethodBuilder`
9
+ * Remove deprecated methods from `GObject::Object`
10
+ * Stop accepting blocks when defining a type
11
+ * Check parameter direction in signal argument conversion
12
+ * Drop support for JRuby
13
+ * Drop support for Ruby 2.6
14
+
15
+ ## 0.15.9 / 2021-12-05
16
+
17
+ * Skip setting destroy notifier state if types don't make sense
18
+ * Handle functions with multiple user-supplied callback arguments
19
+
20
+ ## 0.15.8 / 2021-11-20
21
+
22
+ * Drop support for Ruby 2.5
23
+ * Bump minimum supported version of gobject-introspection to 1.56.0
24
+ * Bump minimum supported version of glib to 2.56.0
25
+ * Handle functions that have swapped closure annotation
26
+ * Handle GPtrArray arguments in signal handlers
27
+
3
28
  ## 0.15.7 / 2021-01-15
4
29
 
5
30
  * Handle sized arrays with interface element types
@@ -131,8 +156,8 @@
131
156
  changed.
132
157
  * Make `Strv#each` thread-safe.
133
158
  * Drop support for CRuby 2.0.
134
- * Move `::type_init` and base `Strv` implementation into `GObjectIntrospection`, making
135
- it stand-alone.
159
+ * Move `::type_init` and base `Strv` implementation into `GObjectIntrospection`,
160
+ making it stand-alone.
136
161
  * Move `GLib::Boolean` to `GirFFI::Boolean`.
137
162
  * Guard against instantiating abstract classes using the default constructor.
138
163
  * Handle user-defined properties containing dashes
@@ -153,7 +178,7 @@
153
178
  actual effect even on CRuby.
154
179
  - Immediately free string pointers whose ownership is transfered. Again, the
155
180
  #autorelease technique doesn't work on JRuby.
156
- - Fix handling of callee-allocated out parameters in vfuncs. The put_pointer
181
+ - Fix handling of callee-allocated out parameters in vfuncs. The `put_pointer`
157
182
  method was wrongly called, and JRuby is more picky about what types that
158
183
  method expects, exposing the bug.
159
184
 
@@ -172,7 +197,8 @@
172
197
 
173
198
  ## 0.9.5 / 2016-03-05
174
199
 
175
- * Abort if modules were defined earlier, e.g., through the gems from the ruby-gnome family.
200
+ * Abort if modules were defined earlier, e.g., through the gems from the
201
+ ruby-gnome family.
176
202
  * Extend integration testing with GObjectIntrospection's test libraries.
177
203
  * Find signals on user-defined types.
178
204
  * Allow getting and setting of properties with a callback value.
@@ -487,7 +513,7 @@
487
513
  ## 0.4.2 / 2012-09-22
488
514
 
489
515
  * Make objects and interfaces wrap poiners in the class that matches
490
- their GType.
516
+ their GType.
491
517
 
492
518
  ## 0.4.1 / 2012-09-18
493
519
 
@@ -503,7 +529,7 @@ their GType.
503
529
  ## 0.3.2 / 2012-08-24
504
530
 
505
531
  * Correctly set FFI return type when callbacks that return GObjects have
506
- incomplete type specification.
532
+ incomplete type specification.
507
533
 
508
534
  ## 0.3.1 / 2012-05-13
509
535
 
@@ -531,15 +557,15 @@ incomplete type specification.
531
557
 
532
558
  ## 0.2.2 / 2011-12-07
533
559
 
534
- * Fix issue #19: Check if a GLib::PtrArray.add method was generated
535
- before attempting to remove it.
560
+ * Fix issue #19: Check if a GLib::PtrArray.add method was generated before
561
+ attempting to remove it.
536
562
  * Fix two issues with pretty printing that made output for GLib have syntax
537
- errors.
563
+ errors.
538
564
 
539
565
  ## 0.2.1 / 2011-11-20
540
566
 
541
- * Fix handling of output parameters that are arrays of pointers to
542
- structures (i.e., of type `Foo***`).
567
+ * Fix handling of output parameters that are arrays of pointers to structures
568
+ (i.e., of type `Foo***`).
543
569
 
544
570
  ## 0.2.0 / 2011-11-19
545
571
 
@@ -549,9 +575,9 @@ structures (i.e., of type `Foo***`).
549
575
  - Get rid of `#[]` and `#[]=`.
550
576
  * Explicitely load `libgirepository` with ABI version 1.
551
577
  * Improve implementation of GLib container classes (GList etc.):
552
- - Real constructors.
553
- - `#append` and friends are instance methods now.
554
- - Conversion methods to cast Ruby containers to GLib containers.
578
+ - Real constructors.
579
+ - `#append` and friends are instance methods now.
580
+ - Conversion methods to cast Ruby containers to GLib containers.
555
581
  * Start implementing pretty printing.
556
582
  * Various refactorings.
557
583
 
@@ -564,10 +590,10 @@ structures (i.e., of type `Foo***`).
564
590
  ## 0.0.14 / 2011-10-28
565
591
 
566
592
  * Support GObject Introspection version 1.30:
567
- - Add support for layouts with fixed-length arrays.
568
- - Handle type names starting with underscores.
569
- - Call `g_signal_emitv` directly to avoid conflict in introspection info
570
- with earlier versions of GObject Introspection.
593
+ - Add support for layouts with fixed-length arrays.
594
+ - Handle type names starting with underscores.
595
+ - Call `g_signal_emitv` directly to avoid conflict in introspection info
596
+ with earlier versions of GObject Introspection.
571
597
 
572
598
  ## 0.0.13 / 2011-09-09
573
599
 
data/README.md CHANGED
@@ -9,10 +9,9 @@ Ruby bindings for GNOME using the GObject Introspection Repository.
9
9
  ## Status
10
10
 
11
11
  [![Gem Version](https://badge.fury.io/rb/gir_ffi.svg)](http://badge.fury.io/rb/gir_ffi)
12
- [![Depfu](https://badges.depfu.com/badges/d5a8e9bffd2462a7ab4921d2f7e6fc48/overview.svg)](https://depfu.com/github/mvz/gir_ffi)
13
- [![Build Status](https://travis-ci.org/mvz/gir_ffi.svg?branch=master)](https://travis-ci.org/mvz/gir_ffi)
12
+ [![Build Status](https://github.com/mvz/gir_ffi/actions/workflows/ruby.yml/badge.svg)](https://github.com/mvz/gir_ffi/actions/workflows/ruby.yml)
14
13
  [![Code Climate](https://codeclimate.com/github/mvz/gir_ffi/badges/gpa.svg)](https://codeclimate.com/github/mvz/gir_ffi)
15
- [![Documentation Status](https://inch-ci.org/github/mvz/gir_ffi.svg?branch=master)](https://inch-ci.org/github/mvz/gir_ffi/branch/master)
14
+ [![Documentation Status](https://inch-ci.org/github/mvz/gir_ffi.svg?branch=master)](https://inch-ci.org/github/mvz/gir_ffi)
16
15
 
17
16
  ## Features
18
17
 
@@ -52,7 +51,7 @@ examples can be found in `gir_ffi-gtk` and `gir_ffi-gst`.
52
51
 
53
52
  ## Requirements
54
53
 
55
- GirFFI is supported on CRuby 2.5, 2.6, 2.7 and 3.0, and JRuby 9.2.
54
+ GirFFI is supported on CRuby 2.6, 2.7, 3.0 and 3.1.
56
55
 
57
56
  You will also need gobject-introspection installed with some
58
57
  introspection data.
@@ -62,7 +61,8 @@ available under the name ending in plain `.so`. If GirFFI complains that it
62
61
  cannot find the library, try installing development packages for those
63
62
  libraries.
64
63
 
65
- GirFFI should work with gobject-introspection 1.46.0 and up.
64
+ GirFFI should work with gobject-introspection 1.56.0 and up, and glib 2.56.0
65
+ and up.
66
66
 
67
67
  On Debian and Ubuntu, installing `libgirepository-1.0-1` and `gir1.2-glib-2.0`
68
68
  should be enough to use GirFFI in your application.
@@ -89,24 +89,9 @@ already exist:
89
89
  * `gir_ffi-tracker`: overrides for Tracker
90
90
  * `gir_ffi-gst`: overrides for GStreamer
91
91
 
92
- ## Hacking and contributing
92
+ ## Contributing
93
93
 
94
- Please feel free to file bugs or send pull requests!
95
-
96
- If you just want to help out but don't know where to start, have a look at
97
- TODO.md, and check the notes in the code (e.g., using `dnote`).
98
-
99
- If you want to send pull requests or patches, try to follow the instructions
100
- below. **If you get stuck, please make a pull request anyway and I'll try to
101
- help out.**
102
-
103
- * Make sure `rake test` runs without reporting any failures.
104
- * Add tests for your feature. Otherwise, I can't see if it works or if I
105
- break it later.
106
- * Make sure latest master merges cleanly with your branch. Things might
107
- have moved around since you forked.
108
- * Try not to include changes that are irrelevant to your feature in the
109
- same commit.
94
+ Please see [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines.
110
95
 
111
96
  ## Contributors
112
97
 
@@ -119,7 +104,7 @@ The following people have contributed to GirFFI over the years:
119
104
 
120
105
  ## License
121
106
 
122
- Copyright © 2009–2020 [Matijs van Zuijlen](http://www.matijs.net)
107
+ Copyright © 2009–2021 [Matijs van Zuijlen](http://www.matijs.net)
123
108
 
124
109
  GirFFI is free software, distributed under the terms of the GNU Lesser
125
110
  General Public License, version 2.1 or later. See the file COPYING.LIB for
@@ -7,18 +7,6 @@ module GLib
7
7
  class Bytes
8
8
  include Enumerable
9
9
 
10
- remove_method :get_data if method_defined? :get_data
11
-
12
- # @override
13
- # NOTE: Needed due to mis-identification of the element-type of the
14
- # resulting sized array for the default binding.
15
- def get_data
16
- length_ptr = FFI::MemoryPointer.new :size_t
17
- data_ptr = Lib.g_bytes_get_data self, length_ptr
18
- length = length_ptr.get_size_t(0)
19
- GirFFI::SizedArray.wrap(:guint8, length, data_ptr)
20
- end
21
-
22
10
  def each(&block)
23
11
  data.each(&block)
24
12
  end
@@ -39,7 +39,7 @@ module GLib
39
39
  end
40
40
 
41
41
  def to_hash
42
- Hash[to_a]
42
+ to_a.to_h
43
43
  end
44
44
 
45
45
  # @override
@@ -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 == "ruby"
43
+ ThreadEnabler.instance.setup_idle_handler
44
44
  RUNNING_LOOPS << self
45
45
  result = run_without_thread_enabler
46
46
  exception = EXCEPTIONS.shift
@@ -50,21 +50,7 @@ module GLib
50
50
 
51
51
  # Re-implementation of the g_ptrarray_index macro
52
52
  def index(idx)
53
- unless (0...length).cover? idx
54
- raise IndexError, "Index #{idx} outside of bounds 0..#{length - 1}"
55
- end
56
-
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
-
53
+ item_ptr = item_pointer(idx)
68
54
  convertor = GirFFI::ArrayElementConvertor.new convert_element_type, item_ptr
69
55
  convertor.to_ruby_value
70
56
  end
@@ -85,6 +71,29 @@ module GLib
85
71
 
86
72
  private
87
73
 
74
+ def item_pointer(idx)
75
+ check_bounds(idx)
76
+
77
+ data_ptr + idx * element_size
78
+ end
79
+
80
+ def check_bounds(idx)
81
+ unless (0...length).cover? idx
82
+ raise IndexError, "Index #{idx} outside of bounds 0..#{length - 1}"
83
+ end
84
+ end
85
+
86
+ def convert_element_type
87
+ case element_type
88
+ when :utf8
89
+ :utf8
90
+ when GirFFI::ObjectBase
91
+ element_type
92
+ else
93
+ [:pointer, element_type]
94
+ end
95
+ end
96
+
88
97
  def element_size
89
98
  POINTER_SIZE
90
99
  end
@@ -14,13 +14,11 @@ module GLib
14
14
  alias get_string_without_override get_string
15
15
  alias get_string get_string_with_override
16
16
 
17
- # Initializing method used in constructors. For Variant, this needs to sink
18
- # the variant's floating reference.
19
- #
20
- # NOTE: This is very hard to test since it is not possible to get the
21
- # variant's ref count directely. However, there is an error when running
22
- # the tests on 32-bit systems.
17
+ # Initializing method used in constructors. For Variant the constructing
18
+ # functions all return floating references, so this is need to take full
19
+ # ownership.
23
20
  #
21
+ # Also see the documentation for g_variant_ref_sink.
24
22
  def store_pointer(ptr)
25
23
  Lib.g_variant_ref_sink ptr
26
24
  super
@@ -7,60 +7,40 @@ GObject.load_class :Object
7
7
  module GObject
8
8
  # Overrides for GObject, GObject's generic base class.
9
9
  class Object
10
- if GLib.check_version(2, 54, 0)
11
- setup_method! "new"
12
-
13
- # Before GLib 2.54.0, use g_object_newv, which takes an array of GParameter.
14
- def initialize_with_automatic_gtype(properties = {})
15
- gparameters = properties.map do |name, value|
16
- name = name.to_s
17
- property_param_spec(name)
18
- GObject::Parameter.new.tap do |gparam|
19
- gparam.name = name
20
- gparam.value = value
21
- end
22
- end
23
- initialize_without_automatic_gtype(self.class.gtype, gparameters)
24
- end
25
-
26
- alias initialize_without_automatic_gtype initialize
27
- alias initialize initialize_with_automatic_gtype
28
- else
29
- GObject::Lib.attach_function(:g_object_new_with_properties,
30
- [:size_t, :uint32, :pointer, :pointer],
31
- :pointer)
32
-
33
- def self.new_with_properties(*args, &block)
34
- obj = allocate
35
- obj.__send__ :initialize_with_properties, *args, &block
36
- obj
37
- end
10
+ GObject::Lib.attach_function(:g_object_new_with_properties,
11
+ [:size_t, :uint32, :pointer, :pointer],
12
+ :pointer)
13
+
14
+ def self.new_with_properties(*args, &block)
15
+ obj = allocate
16
+ obj.__send__ :initialize_with_properties, *args, &block
17
+ obj
18
+ end
38
19
 
39
- # Starting with GLib 2.54.0, use g_object_new_with_properties, which
40
- # takes an array of names and an array of values.
41
- def initialize_with_properties(properties = {})
42
- names, gvalues = names_and_gvalues_for_properties(properties)
20
+ # Starting with GLib 2.54.0, use g_object_new_with_properties, which
21
+ # takes an array of names and an array of values.
22
+ def initialize_with_properties(properties = {})
23
+ names, gvalues = names_and_gvalues_for_properties(properties)
43
24
 
44
- n_properties = names.length
45
- names_arr = GirFFI::SizedArray.from(:utf8, -1, names)
46
- gvalues_arr = GirFFI::SizedArray.from(GObject::Value, -1, gvalues)
25
+ n_properties = names.length
26
+ names_arr = GirFFI::SizedArray.from(:utf8, -1, names)
27
+ gvalues_arr = GirFFI::SizedArray.from(GObject::Value, -1, gvalues)
47
28
 
48
- ptr = GObject::Lib.g_object_new_with_properties(self.class.gtype,
49
- n_properties,
50
- names_arr,
51
- gvalues_arr)
52
- store_pointer ptr
53
- end
29
+ ptr = GObject::Lib.g_object_new_with_properties(self.class.gtype,
30
+ n_properties,
31
+ names_arr,
32
+ gvalues_arr)
33
+ store_pointer ptr
34
+ end
54
35
 
55
- alias old_initialze initialize
56
- alias initialize initialize_with_properties
57
- remove_method :old_initialze
36
+ alias old_initialze initialize
37
+ alias initialize initialize_with_properties
38
+ remove_method :old_initialze
58
39
 
59
- def self.new(*args, &block)
60
- obj = allocate
61
- obj.__send__ :initialize, *args, &block
62
- obj
63
- end
40
+ def self.new(*args, &block)
41
+ obj = allocate
42
+ obj.__send__ :initialize, *args, &block
43
+ obj
64
44
  end
65
45
 
66
46
  alias base_initialize initialize
@@ -137,17 +117,12 @@ module GObject
137
117
  end
138
118
 
139
119
  def property_param_spec(property_name)
140
- object_class.find_property property_name or
120
+ class_struct.find_property property_name or
141
121
  raise GirFFI::PropertyNotFoundError.new(property_name, self.class)
142
122
  end
143
123
 
144
124
  # Overrides for GObject, GObject's generic base class.
145
125
  module Overrides
146
- # @deprecated
147
- def get_property_extended(property_name)
148
- get_property(property_name)
149
- end
150
-
151
126
  def get_property(property_name)
152
127
  gvalue = gvalue_for_property property_name
153
128
  super property_name, gvalue
@@ -159,11 +134,6 @@ module GObject
159
134
  value
160
135
  end
161
136
 
162
- # @deprecated
163
- def set_property_extended(property_name, value)
164
- set_property property_name, value
165
- end
166
-
167
137
  def set_property(property_name, value)
168
138
  type_info = get_property_type property_name
169
139
  value = property_value_pre_conversion(value, type_info) if type_info
@@ -1,18 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- GObject::Object.object_class
3
+ GObject::Object.class_struct
4
4
 
5
5
  module GObject
6
- # Overrides for GObjectClass, a struct containing GObject's class data
6
+ # Overrides for GObjectClass, the class struct for GObject::Object
7
7
  class ObjectClass
8
- def set_property=(callback)
9
- struct[:set_property] = GObject::ObjectSetPropertyFunc.from callback
10
- end
11
-
12
- def get_property=(callback)
13
- struct[:get_property] = GObject::ObjectGetPropertyFunc.from callback
14
- end
15
-
16
8
  def gtype
17
9
  to_ptr.get_gtype 0
18
10
  end
@@ -8,29 +8,29 @@ module GObject
8
8
  setup_instance_method! :init
9
9
 
10
10
  METHOD_MAP = {
11
- TYPE_INVALID => [:get_none, :set_none],
11
+ TYPE_INVALID => [:get_none, :set_none],
12
12
  # TYPE_NONE is skipped
13
- TYPE_INTERFACE => [:get_object, :set_instance_enhanced],
14
- TYPE_CHAR => [:get_schar, :set_schar],
15
- TYPE_UCHAR => [:get_uchar, :set_uchar],
16
- TYPE_BOOLEAN => [:get_boolean, :set_boolean],
17
- TYPE_INT => [:get_int, :set_int],
18
- TYPE_UINT => [:get_uint, :set_uint],
19
- TYPE_LONG => [:get_long, :set_long],
20
- TYPE_ULONG => [:get_ulong, :set_ulong],
21
- TYPE_INT64 => [:get_int64, :set_int64],
22
- TYPE_UINT64 => [:get_uint64, :set_uint64],
23
- TYPE_ENUM => [:get_enum_enhanced, :set_enum_enhanced],
24
- TYPE_FLAGS => [:get_flags_enhanced, :set_flags_enhanced],
25
- TYPE_FLOAT => [:get_float, :set_float],
26
- TYPE_DOUBLE => [:get_double, :set_double],
27
- TYPE_STRING => [:get_string, :set_string],
28
- TYPE_POINTER => [:get_pointer, :set_pointer],
29
- TYPE_BOXED => [:get_boxed, :set_boxed],
30
- TYPE_PARAM => [:get_param, :set_param],
31
- TYPE_OBJECT => [:get_object, :set_instance_enhanced],
32
- TYPE_GTYPE => [:get_gtype, :set_gtype],
33
- TYPE_VARIANT => [:get_variant, :set_variant]
13
+ TYPE_INTERFACE => [:get_object, :set_instance_enhanced],
14
+ TYPE_CHAR => [:get_schar, :set_schar],
15
+ TYPE_UCHAR => [:get_uchar, :set_uchar],
16
+ TYPE_BOOLEAN => [:get_boolean, :set_boolean],
17
+ TYPE_INT => [:get_int, :set_int],
18
+ TYPE_UINT => [:get_uint, :set_uint],
19
+ TYPE_LONG => [:get_long, :set_long],
20
+ TYPE_ULONG => [:get_ulong, :set_ulong],
21
+ TYPE_INT64 => [:get_int64, :set_int64],
22
+ TYPE_UINT64 => [:get_uint64, :set_uint64],
23
+ TYPE_ENUM => [:get_enum_enhanced, :set_enum_enhanced],
24
+ TYPE_FLAGS => [:get_flags_enhanced, :set_flags_enhanced],
25
+ TYPE_FLOAT => [:get_float, :set_float],
26
+ TYPE_DOUBLE => [:get_double, :set_double],
27
+ TYPE_STRING => [:get_string, :set_string],
28
+ TYPE_POINTER => [:get_pointer, :set_pointer],
29
+ TYPE_BOXED => [:get_boxed, :set_boxed],
30
+ TYPE_PARAM => [:get_param, :set_param],
31
+ TYPE_OBJECT => [:get_object, :set_instance_enhanced],
32
+ TYPE_GTYPE => [:get_gtype, :set_gtype],
33
+ TYPE_VARIANT => [:get_variant, :set_variant]
34
34
  }.freeze
35
35
 
36
36
  # TODO: Give more generic name
@@ -68,11 +68,11 @@ module GObject
68
68
  end
69
69
 
70
70
  CLASS_TO_GTYPE_MAP = {
71
- NilClass => TYPE_INVALID,
72
- TrueClass => TYPE_BOOLEAN,
71
+ NilClass => TYPE_INVALID,
72
+ TrueClass => TYPE_BOOLEAN,
73
73
  FalseClass => TYPE_BOOLEAN,
74
- Integer => TYPE_INT,
75
- String => TYPE_STRING
74
+ Integer => TYPE_INT,
75
+ String => TYPE_STRING
76
76
  }.freeze
77
77
 
78
78
  # Overrides for existing Value methods
data/lib/ffi-gobject.rb CHANGED
@@ -31,17 +31,6 @@ module GObject
31
31
  type_name type_from_instance instance
32
32
  end
33
33
 
34
- def self.object_class_from_instance(instance)
35
- object_class_from_instance_pointer instance.to_ptr
36
- end
37
-
38
- def self.object_class_from_instance_pointer(inst_ptr)
39
- return nil if inst_ptr.null?
40
-
41
- klsptr = inst_ptr.get_pointer 0
42
- ObjectClass.wrap klsptr
43
- end
44
-
45
34
  def self.signal_lookup_from_instance(signal, object)
46
35
  signal_lookup signal, type_from_instance(object)
47
36
  end
@@ -55,11 +44,7 @@ module GObject
55
44
  argument_gvalues = sig_info.arguments_to_gvalues object, args
56
45
  return_gvalue = sig_info.gvalue_for_return_value
57
46
 
58
- result = signal_emitv argument_gvalues, signal_id, detail_quark, return_gvalue
59
- # NOTE: Depending on the version of GObjectIntrospection, the result will
60
- # be stored in result or return_gvalue. This was changed between versions
61
- # 1.44 and 1.46.
62
- result || return_gvalue.get_value
47
+ signal_emitv argument_gvalues, signal_id, detail_quark, return_gvalue
63
48
  end
64
49
 
65
50
  def self.signal_connect(object, detailed_signal, data = nil, after = false, &block)
@@ -69,7 +54,7 @@ module GObject
69
54
  sig_info = object.class.find_signal signal_name
70
55
 
71
56
  closure = sig_info.wrap_in_closure do |*args|
72
- block.call(*args << data)
57
+ yield(*args << data)
73
58
  end
74
59
 
75
60
  signal_connect_closure object, detailed_signal, closure, after
@@ -85,7 +70,8 @@ module GObject
85
70
  load_class :ClosureMarshal
86
71
  load_class :ParamFlags
87
72
 
88
- # NOTE: This Lib module is set up in `gir_ffi-base/gobject/lib.rb`.
73
+ # Attach some needed functions to the GObject Lib, which was set up in
74
+ # `gir_ffi-base/gobject/lib.rb`.
89
75
  Lib.class_eval do
90
76
  attach_function :g_object_ref_sink, [:pointer], :pointer
91
77
  attach_function :g_object_ref, [:pointer], :pointer
@@ -49,7 +49,7 @@ module GObjectIntrospection
49
49
  method = method.to_s
50
50
  cache_ivar = "@#{method}_cache"
51
51
  single ||= method[0..-2]
52
- count = method.sub(/^(get_)?/, '\\1n_')
52
+ count = method.sub(/^(get_)?/, "\\1n_")
53
53
  class_eval <<-CODE, __FILE__, __LINE__ + 1
54
54
  def #{method} # def fields
55
55
  #{cache_ivar} ||= # @fields_cache ||=
@@ -5,16 +5,16 @@ module GObjectIntrospection
5
5
  class IConstantInfo < IBaseInfo
6
6
  TYPE_TAG_TO_UNION_MEMBER = {
7
7
  gboolean: :v_boolean,
8
- gint8: :v_int8,
9
- gint16: :v_int16,
10
- gint32: :v_int32,
11
- gint64: :v_int64,
12
- guint8: :v_uint8,
13
- guint16: :v_uint16,
14
- guint32: :v_uint32,
15
- guint64: :v_uint64,
16
- gdouble: :v_double,
17
- utf8: :v_string
8
+ gint8: :v_int8,
9
+ gint16: :v_int16,
10
+ gint32: :v_int32,
11
+ gint64: :v_int64,
12
+ guint8: :v_uint8,
13
+ guint16: :v_uint16,
14
+ guint32: :v_uint32,
15
+ guint64: :v_uint64,
16
+ gdouble: :v_double,
17
+ utf8: :v_string
18
18
  }.freeze
19
19
 
20
20
  def value
@@ -63,12 +63,12 @@ module GObjectIntrospection
63
63
 
64
64
  # IFunctionInfo
65
65
  bit_mask :IFunctionInfoFlags,
66
- is_method: (1 << 0),
66
+ is_method: (1 << 0),
67
67
  is_constructor: (1 << 1),
68
- is_getter: (1 << 2),
69
- is_setter: (1 << 3),
70
- wraps_vfunc: (1 << 4),
71
- throws: (1 << 5)
68
+ is_getter: (1 << 2),
69
+ is_setter: (1 << 3),
70
+ wraps_vfunc: (1 << 4),
71
+ throws: (1 << 5)
72
72
 
73
73
  attach_function :g_function_info_get_symbol, [:pointer], :string
74
74
  attach_function :g_function_info_get_flags, [:pointer], :IFunctionInfoFlags
@@ -231,10 +231,10 @@ module GObjectIntrospection
231
231
 
232
232
  # IVFuncInfo
233
233
  bit_mask :IVFuncInfoFlags,
234
- must_chain_up: (1 << 0),
235
- must_override: (1 << 1),
234
+ must_chain_up: (1 << 0),
235
+ must_override: (1 << 1),
236
236
  must_not_override: (1 << 2),
237
- throws: (1 << 3)
237
+ throws: (1 << 3)
238
238
 
239
239
  attach_function :g_vfunc_info_get_flags, [:pointer], :IVFuncInfoFlags
240
240
  attach_function :g_vfunc_info_get_invoker, [:pointer], :pointer
@@ -294,9 +294,9 @@ module GObjectIntrospection
294
294
 
295
295
  # NOTE: This type has more values, but these are the ones used
296
296
  bit_mask :ParamFlags,
297
- readable: (1 << 0),
298
- writable: (1 << 1),
299
- construct: (1 << 2),
297
+ readable: (1 << 0),
298
+ writable: (1 << 1),
299
+ construct: (1 << 2),
300
300
  construct_only: (1 << 3)
301
301
 
302
302
  attach_function :g_property_info_get_flags, [:pointer], :ParamFlags