gir_ffi 0.13.0 → 0.13.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +10 -0
  3. data/lib/ffi-glib/array.rb +2 -2
  4. data/lib/ffi-glib/array_methods.rb +1 -0
  5. data/lib/ffi-glib/list_methods.rb +3 -2
  6. data/lib/ffi-glib/main_loop.rb +2 -0
  7. data/lib/ffi-glib/ptr_array.rb +2 -2
  8. data/lib/ffi-gobject.rb +3 -11
  9. data/lib/ffi-gobject/closure.rb +1 -0
  10. data/lib/ffi-gobject/object.rb +30 -16
  11. data/lib/ffi-gobject/object_class.rb +2 -2
  12. data/lib/ffi-gobject/ruby_closure.rb +2 -2
  13. data/lib/ffi-gobject/value.rb +2 -1
  14. data/lib/ffi-gobject_introspection/i_arg_info.rb +11 -11
  15. data/lib/ffi-gobject_introspection/i_base_info.rb +12 -10
  16. data/lib/ffi-gobject_introspection/i_callable_info.rb +8 -8
  17. data/lib/ffi-gobject_introspection/i_enum_info.rb +5 -5
  18. data/lib/ffi-gobject_introspection/i_field_info.rb +4 -4
  19. data/lib/ffi-gobject_introspection/i_function_info.rb +2 -2
  20. data/lib/ffi-gobject_introspection/i_interface_info.rb +15 -15
  21. data/lib/ffi-gobject_introspection/i_object_info.rb +22 -22
  22. data/lib/ffi-gobject_introspection/i_property_info.rb +2 -2
  23. data/lib/ffi-gobject_introspection/i_registered_type_info.rb +3 -3
  24. data/lib/ffi-gobject_introspection/i_repository.rb +16 -10
  25. data/lib/ffi-gobject_introspection/i_struct_info.rb +11 -7
  26. data/lib/ffi-gobject_introspection/i_type_info.rb +8 -8
  27. data/lib/ffi-gobject_introspection/i_union_info.rb +7 -7
  28. data/lib/ffi-gobject_introspection/i_value_info.rb +1 -1
  29. data/lib/ffi-gobject_introspection/strv.rb +1 -0
  30. data/lib/gir_ffi-base/gobject.rb +5 -0
  31. data/lib/gir_ffi-base/gobject/lib.rb +4 -0
  32. data/lib/gir_ffi/boolean.rb +2 -2
  33. data/lib/gir_ffi/builders/argument_builder.rb +41 -14
  34. data/lib/gir_ffi/builders/argument_builder_collection.rb +17 -4
  35. data/lib/gir_ffi/builders/base_argument_builder.rb +12 -16
  36. data/lib/gir_ffi/builders/callback_argument_builder.rb +1 -1
  37. data/lib/gir_ffi/builders/callback_builder.rb +1 -1
  38. data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +2 -9
  39. data/lib/gir_ffi/builders/field_builder.rb +11 -9
  40. data/lib/gir_ffi/builders/module_builder.rb +2 -1
  41. data/lib/gir_ffi/builders/object_builder.rb +21 -12
  42. data/lib/gir_ffi/builders/pointer_value_convertor.rb +8 -6
  43. data/lib/gir_ffi/builders/property_builder.rb +4 -2
  44. data/lib/gir_ffi/builders/registered_type_builder.rb +30 -19
  45. data/lib/gir_ffi/builders/return_value_builder.rb +2 -2
  46. data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +2 -0
  47. data/lib/gir_ffi/builders/signal_closure_builder.rb +1 -1
  48. data/lib/gir_ffi/builders/struct_builder.rb +7 -8
  49. data/lib/gir_ffi/builders/unintrospectable_builder.rb +4 -1
  50. data/lib/gir_ffi/builders/user_defined_builder.rb +31 -95
  51. data/lib/gir_ffi/builders/vfunc_builder.rb +1 -1
  52. data/lib/gir_ffi/builders/with_layout.rb +3 -1
  53. data/lib/gir_ffi/callback_base.rb +3 -2
  54. data/lib/gir_ffi/class_base.rb +5 -0
  55. data/lib/gir_ffi/enum_like_base.rb +9 -5
  56. data/lib/gir_ffi/error_argument_info.rb +1 -1
  57. data/lib/gir_ffi/ffi_ext/pointer.rb +1 -4
  58. data/lib/gir_ffi/field_argument_info.rb +1 -1
  59. data/lib/gir_ffi/in_pointer.rb +36 -23
  60. data/lib/gir_ffi/info_ext/i_arg_info.rb +2 -0
  61. data/lib/gir_ffi/info_ext/i_callback_info.rb +4 -0
  62. data/lib/gir_ffi/info_ext/i_registered_type_info.rb +4 -0
  63. data/lib/gir_ffi/info_ext/i_type_info.rb +3 -27
  64. data/lib/gir_ffi/info_ext/safe_function_name.rb +1 -0
  65. data/lib/gir_ffi/interface_base.rb +5 -0
  66. data/lib/gir_ffi/module_base.rb +1 -0
  67. data/lib/gir_ffi/object_base.rb +10 -0
  68. data/lib/gir_ffi/object_store.rb +2 -0
  69. data/lib/gir_ffi/receiver_argument_info.rb +1 -1
  70. data/lib/gir_ffi/return_value_info.rb +1 -1
  71. data/lib/gir_ffi/sized_array.rb +7 -14
  72. data/lib/gir_ffi/struct_like_base.rb +3 -0
  73. data/lib/gir_ffi/type_map.rb +21 -0
  74. data/lib/gir_ffi/user_defined_object_info.rb +6 -2
  75. data/lib/gir_ffi/user_defined_property_info.rb +113 -71
  76. data/lib/gir_ffi/version.rb +1 -1
  77. data/lib/gir_ffi/zero_terminated.rb +26 -1
  78. data/tasks/test.rake +1 -0
  79. data/test/ffi-gobject_introspection/i_repository_test.rb +1 -2
  80. data/test/gir_ffi/builder_test.rb +13 -7
  81. data/test/gir_ffi/builders/argument_builder_test.rb +1 -5
  82. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +1 -1
  83. data/test/gir_ffi/builders/field_builder_test.rb +20 -20
  84. data/test/gir_ffi/builders/return_value_builder_test.rb +1 -1
  85. data/test/gir_ffi/builders/signal_closure_builder_test.rb +1 -1
  86. data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +1 -1
  87. data/test/gir_ffi/builders/unintrospectable_builder_test.rb +2 -2
  88. data/test/gir_ffi/builders/vfunc_builder_test.rb +1 -1
  89. data/test/gir_ffi/enum_base_test.rb +43 -0
  90. data/test/gir_ffi/info_ext/i_type_info_test.rb +3 -9
  91. data/test/gir_ffi/object_base_test.rb +30 -0
  92. data/test/gir_ffi/sized_array_test.rb +0 -9
  93. data/test/gir_ffi/user_defined_object_info_test.rb +4 -6
  94. data/test/gir_ffi/user_defined_property_info_test.rb +6 -5
  95. data/test/gir_ffi/zero_terminated_test.rb +22 -0
  96. data/test/gir_ffi_test_helper.rb +2 -0
  97. data/test/integration/generated_gimarshallingtests_test.rb +1 -0
  98. data/test/integration/generated_gio_test.rb +5 -6
  99. data/test/integration/generated_gobject_test.rb +1 -1
  100. data/test/integration/generated_gtop_test.rb +3 -1
  101. data/test/integration/generated_regress_test.rb +3 -4
  102. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2772619a7c65c8eb17f50aa252f89620d8965474b8c6d27717187cbfc003201a
4
- data.tar.gz: 317b202f4b97d93b4c12fa21ce22e7d1971e34ba10fd434ec9b6dcc4bf4bd214
3
+ metadata.gz: 9c2f74f548641ffd8518e7be3b8de0be2d09543f6a7267e796084567972d6c72
4
+ data.tar.gz: c1f84384a10427655b5907fc342c1690079acae27b076a118d743bb203b3f51c
5
5
  SHA512:
6
- metadata.gz: 8bef86f44195465dae96b1b3adb36e21c92c88be7555732624c4819f3b99a48b2837fabcfec786f525d6dbf12694d76005a2ead9f4d350e5c84ac1e94374bc6d
7
- data.tar.gz: bfdcfda1e4c237289887289dc51355ec1bce224ae126ec7b665e10c98dc18547a89e488c807025197291d8d76cd099d3c609872679ff74c6243f1e32a5881991
6
+ metadata.gz: e86e854c330672615eba303d0a34ce912d3766d74d7805a7e872dd5c7f0ddb13288ebb9be3b6293dbfc264d0c4d3013a0e2485aba3656511755e51f6bf5d1240
7
+ data.tar.gz: 6722a19e4232c8ace606d2dc86fec59d5a8c4a3cdec88ea1bf86884897e514cade46b71b04cfc66ee19f901c36e08515288fa56becd6dbd720c5e51dccba8093
data/Changelog.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.13.1 / 2018-09-24
4
+
5
+ * Silence some warnings.
6
+ * Allow overrides to be applied using `Module#prepend`, as an alternative to
7
+ alias chaining.
8
+ * Make `ZeroTerminated` array work with enum elements.
9
+ * Various refactorings.
10
+ * Improve consistency of conversion between symbols and integers for enum
11
+ types.
12
+
3
13
  ## 0.13.0 / 2018-09-08
4
14
 
5
15
  * Drop support for Ruby 2.1
@@ -46,7 +46,7 @@ module GLib
46
46
  end
47
47
 
48
48
  def length
49
- @struct[:len]
49
+ struct[:len]
50
50
  end
51
51
 
52
52
  def get_element_size
@@ -73,7 +73,7 @@ module GLib
73
73
  private
74
74
 
75
75
  def data_ptr
76
- @struct[:data]
76
+ struct[:data]
77
77
  end
78
78
 
79
79
  def calculated_element_size
@@ -8,6 +8,7 @@ module GLib
8
8
  unless (0...length).cover? idx
9
9
  raise IndexError, "Index #{idx} outside of bounds 0..#{length - 1}"
10
10
  end
11
+
11
12
  ptr = GirFFI::InOutPointer.new element_type, data_ptr + idx * element_size
12
13
  ptr.to_ruby_value
13
14
  end
@@ -36,11 +36,11 @@ module GLib
36
36
  end
37
37
 
38
38
  def tail
39
- self.class.wrap(element_type, @struct[:next])
39
+ self.class.wrap(element_type, struct[:next])
40
40
  end
41
41
 
42
42
  def head
43
- GirFFI::ArgHelper.cast_from_pointer(element_type, @struct[:data])
43
+ GirFFI::ArgHelper.cast_from_pointer(element_type, struct[:data])
44
44
  end
45
45
 
46
46
  def reset_typespec(typespec)
@@ -60,6 +60,7 @@ module GLib
60
60
 
61
61
  def next_element
62
62
  return unless @current
63
+
63
64
  element = @current.head
64
65
  @current = @current.tail
65
66
  element
@@ -46,12 +46,14 @@ module GLib
46
46
  exception = EXCEPTIONS.shift
47
47
  RUNNING_LOOPS.pop
48
48
  raise exception if exception
49
+
49
50
  result
50
51
  end
51
52
 
52
53
  def self.handle_exception(exception)
53
54
  current_loop = RUNNING_LOOPS.last
54
55
  raise exception unless current_loop
56
+
55
57
  EXCEPTIONS << exception
56
58
  current_loop.quit
57
59
  end
@@ -50,7 +50,7 @@ module GLib
50
50
  end
51
51
 
52
52
  def data_ptr
53
- @struct[:pdata]
53
+ struct[:pdata]
54
54
  end
55
55
 
56
56
  def element_size
@@ -64,7 +64,7 @@ module GLib
64
64
  end
65
65
 
66
66
  def length
67
- @struct[:len]
67
+ struct[:len]
68
68
  end
69
69
 
70
70
  def ==(other)
data/lib/ffi-gobject.rb CHANGED
@@ -18,6 +18,7 @@ require 'gir_ffi/signal_not_found_error'
18
18
  module GObject
19
19
  def self.type_from_instance_pointer(inst_ptr)
20
20
  return nil if inst_ptr.null?
21
+
21
22
  klsptr = inst_ptr.get_pointer 0
22
23
  klsptr.get_gtype 0
23
24
  end
@@ -36,6 +37,7 @@ module GObject
36
37
 
37
38
  def self.object_class_from_instance_pointer(inst_ptr)
38
39
  return nil if inst_ptr.null?
40
+
39
41
  klsptr = inst_ptr.get_pointer 0
40
42
  ObjectClass.wrap klsptr
41
43
  end
@@ -62,6 +64,7 @@ module GObject
62
64
 
63
65
  def self.signal_connect(object, detailed_signal, data = nil, after = false, &block)
64
66
  raise ArgumentError, 'Block needed' unless block_given?
67
+
65
68
  signal_name, = detailed_signal.split('::')
66
69
  sig_info = object.class.find_signal signal_name
67
70
 
@@ -87,17 +90,11 @@ module GObject
87
90
  attach_function :g_object_ref_sink, [:pointer], :pointer
88
91
  attach_function :g_object_ref, [:pointer], :pointer
89
92
  attach_function :g_object_unref, [:pointer], :pointer
90
- attach_function :g_object_new, [:size_t, :pointer], :pointer
91
93
 
92
94
  attach_function :g_value_copy, [:pointer, :pointer], :void
93
95
  attach_function :g_value_init, [:pointer, :size_t], :pointer
94
96
  attach_function :g_value_unset, [:pointer], :pointer
95
97
 
96
- attach_function :g_array_get_type, [], :size_t
97
- attach_function :g_byte_array_get_type, [], :size_t
98
- attach_function :g_hash_table_get_type, [], :size_t
99
- attach_function :g_strv_get_type, [], :size_t
100
-
101
98
  attach_function :g_signal_connect_data,
102
99
  [:pointer, :string, Callback, :pointer, ClosureNotify, ConnectFlags],
103
100
  :ulong
@@ -112,9 +109,4 @@ module GObject
112
109
 
113
110
  attach_function :g_type_class_ref, [:size_t], :pointer
114
111
  end
115
-
116
- TYPE_ARRAY = Lib.g_array_get_type
117
- TYPE_BYTE_ARRAY = Lib.g_byte_array_get_type
118
- TYPE_HASH_TABLE = Lib.g_hash_table_get_type
119
- TYPE_STRV = Lib.g_strv_get_type
120
112
  end
@@ -9,6 +9,7 @@ module GObject
9
9
  class Closure
10
10
  setup_method! :new_simple
11
11
  setup_instance_method! :invoke
12
+ remove_method :invoke
12
13
 
13
14
  # @override
14
15
  #
@@ -12,36 +12,37 @@ module GObject
12
12
  [:size_t, :uint32, :pointer, :pointer],
13
13
  :pointer)
14
14
 
15
- def self.new(*args, &block)
15
+ def self.new_with_properties(*args, &block)
16
16
  obj = allocate
17
- obj.__send__ :initialize, *args, &block
17
+ obj.__send__ :initialize_with_properties, *args, &block
18
18
  obj
19
19
  end
20
20
 
21
21
  # Starting with GLib 2.54.0, use g_object_new_with_properties, which
22
22
  # takes an array of names and an array of values.
23
- def initialize(properties = {})
24
- names = []
25
- values = []
26
- properties.each do |name, value|
27
- name = name.to_s
28
- gvalue = gvalue_for_property(name)
29
- gvalue.set_value value
30
-
31
- names << name
32
- values << gvalue
33
- end
23
+ def initialize_with_properties(properties = {})
24
+ names, gvalues = names_and_gvalues_for_properties(properties)
34
25
 
35
26
  n_properties = names.length
36
27
  names_arr = GirFFI::SizedArray.from(:utf8, -1, names)
37
- values_arr = GirFFI::SizedArray.from(GObject::Value, -1, values)
28
+ gvalues_arr = GirFFI::SizedArray.from(GObject::Value, -1, gvalues)
38
29
 
39
30
  ptr = GObject::Lib.g_object_new_with_properties(self.class.gtype,
40
31
  n_properties,
41
32
  names_arr,
42
- values_arr)
33
+ gvalues_arr)
43
34
  store_pointer ptr
44
35
  end
36
+
37
+ alias old_initialze initialize
38
+ alias initialize initialize_with_properties
39
+ remove_method :old_initialze
40
+
41
+ def self.new(*args, &block)
42
+ obj = allocate
43
+ obj.__send__ :initialize, *args, &block
44
+ obj
45
+ end
45
46
  else
46
47
  setup_method! 'new'
47
48
 
@@ -81,7 +82,7 @@ module GObject
81
82
  def self.make_finalizer(ptr)
82
83
  proc do
83
84
  rc = GObject::Object::Struct.new(ptr)[:ref_count]
84
- if rc.zero?
85
+ if rc == 0
85
86
  warn "not unreffing #{name}:#{ptr} (#{rc})"
86
87
  else
87
88
  GObject::Lib.g_object_unref ptr
@@ -93,6 +94,7 @@ module GObject
93
94
  def method_missing(method, *args)
94
95
  getter_name = "get_#{method}"
95
96
  return send(getter_name, *args) if respond_to?(getter_name)
97
+
96
98
  if method.to_s =~ /(.*)=$/
97
99
  setter_name = "set_#{Regexp.last_match[1]}"
98
100
  return send(setter_name, *args) if respond_to?(setter_name)
@@ -150,6 +152,18 @@ module GObject
150
152
 
151
153
  private
152
154
 
155
+ def names_and_gvalues_for_properties(properties)
156
+ return [], [] unless properties.any?
157
+
158
+ properties.map do |name, value|
159
+ name = name.to_s
160
+ gvalue = gvalue_for_property(name)
161
+ gvalue.set_value value
162
+
163
+ [name, gvalue]
164
+ end.transpose
165
+ end
166
+
153
167
  def get_property_type(property_name)
154
168
  prop = self.class.find_property(property_name)
155
169
  prop.property_type
@@ -6,11 +6,11 @@ module GObject
6
6
  # Overrides for GObjectClass, a struct containing GObject's class data
7
7
  class ObjectClass
8
8
  def set_property=(callback)
9
- @struct[:set_property] = GObject::ObjectSetPropertyFunc.from callback
9
+ struct[:set_property] = GObject::ObjectSetPropertyFunc.from callback
10
10
  end
11
11
 
12
12
  def get_property=(callback)
13
- @struct[:get_property] = GObject::ObjectGetPropertyFunc.from callback
13
+ struct[:get_property] = GObject::ObjectGetPropertyFunc.from callback
14
14
  end
15
15
 
16
16
  def gtype
@@ -51,11 +51,11 @@ module GObject
51
51
  def block=(block)
52
52
  id = block.object_id
53
53
  BLOCK_STORE[id] = block
54
- @struct[:block_id] = id
54
+ struct[:block_id] = id
55
55
  end
56
56
 
57
57
  def block
58
- BLOCK_STORE[@struct[:block_id]]
58
+ BLOCK_STORE[struct[:block_id]]
59
59
  end
60
60
  end
61
61
  end
@@ -61,7 +61,7 @@ module GObject
61
61
  alias value= set_value
62
62
 
63
63
  def current_gtype
64
- @struct[:g_type]
64
+ struct[:g_type]
65
65
  end
66
66
 
67
67
  def current_fundamental_type
@@ -140,6 +140,7 @@ module GObject
140
140
 
141
141
  def init_for_ruby_value(val)
142
142
  return init val.class.gtype if val.class.respond_to? :gtype
143
+
143
144
  CLASS_TO_GTYPE_MAP.each do |klass, type|
144
145
  return init type if val.is_a? klass
145
146
  end
@@ -6,47 +6,47 @@ module GObjectIntrospection
6
6
  # Represents an argument.
7
7
  class IArgInfo < IBaseInfo
8
8
  def direction
9
- Lib.g_arg_info_get_direction @gobj
9
+ Lib.g_arg_info_get_direction self
10
10
  end
11
11
 
12
12
  def return_value?
13
- Lib.g_arg_info_is_return_value @gobj
13
+ Lib.g_arg_info_is_return_value self
14
14
  end
15
15
 
16
16
  def optional?
17
- Lib.g_arg_info_is_optional @gobj
17
+ Lib.g_arg_info_is_optional self
18
18
  end
19
19
 
20
20
  def caller_allocates?
21
- Lib.g_arg_info_is_caller_allocates @gobj
21
+ Lib.g_arg_info_is_caller_allocates self
22
22
  end
23
23
 
24
24
  def may_be_null?
25
- Lib.g_arg_info_may_be_null @gobj
25
+ Lib.g_arg_info_may_be_null self
26
26
  end
27
27
 
28
28
  def skip?
29
- Lib.g_arg_info_is_skip @gobj
29
+ Lib.g_arg_info_is_skip self
30
30
  end
31
31
 
32
32
  def ownership_transfer
33
- Lib.g_arg_info_get_ownership_transfer @gobj
33
+ Lib.g_arg_info_get_ownership_transfer self
34
34
  end
35
35
 
36
36
  def scope
37
- Lib.g_arg_info_get_scope @gobj
37
+ Lib.g_arg_info_get_scope self
38
38
  end
39
39
 
40
40
  def closure
41
- Lib.g_arg_info_get_closure @gobj
41
+ Lib.g_arg_info_get_closure self
42
42
  end
43
43
 
44
44
  def destroy
45
- Lib.g_arg_info_get_destroy @gobj
45
+ Lib.g_arg_info_get_destroy self
46
46
  end
47
47
 
48
48
  def argument_type
49
- ITypeInfo.wrap Lib.g_arg_info_get_type(@gobj)
49
+ ITypeInfo.wrap Lib.g_arg_info_get_type(self)
50
50
  end
51
51
  end
52
52
  end
@@ -9,16 +9,18 @@ module GObjectIntrospection
9
9
 
10
10
  ObjectSpace.define_finalizer self, self.class.make_finalizer(lib, ptr)
11
11
 
12
- @gobj = ptr
12
+ @pointer = ptr
13
13
  @lib = lib
14
14
  end
15
15
 
16
+ attr_reader :pointer
17
+
16
18
  def self.make_finalizer(lib, ptr)
17
19
  proc { lib.g_base_info_unref ptr }
18
20
  end
19
21
 
20
22
  def to_ptr
21
- @gobj
23
+ @pointer
22
24
  end
23
25
 
24
26
  # This is a helper method to construct a method returning an array, out
@@ -38,7 +40,7 @@ module GObjectIntrospection
38
40
  #
39
41
  def self.build_array_method(method, single = nil)
40
42
  method = method.to_s
41
- single ||= method.to_s[0..-2]
43
+ single ||= method[0..-2]
42
44
  count = method.sub(/^(get_)?/, '\\1n_')
43
45
  class_eval <<-CODE, __FILE__, __LINE__ + 1
44
46
  def #{method}
@@ -83,15 +85,15 @@ module GObjectIntrospection
83
85
  end
84
86
 
85
87
  def name
86
- Lib.g_base_info_get_name @gobj
88
+ Lib.g_base_info_get_name self
87
89
  end
88
90
 
89
91
  def info_type
90
- Lib.g_base_info_get_type @gobj
92
+ Lib.g_base_info_get_type self
91
93
  end
92
94
 
93
95
  def namespace
94
- Lib.g_base_info_get_namespace @gobj
96
+ Lib.g_base_info_get_namespace self
95
97
  end
96
98
 
97
99
  def safe_namespace
@@ -99,17 +101,17 @@ module GObjectIntrospection
99
101
  end
100
102
 
101
103
  def container
102
- ptr = Lib.g_base_info_get_container @gobj
104
+ ptr = Lib.g_base_info_get_container self
103
105
  Lib.g_base_info_ref ptr
104
106
  IRepository.wrap_ibaseinfo_pointer ptr
105
107
  end
106
108
 
107
109
  def deprecated?
108
- Lib.g_base_info_is_deprecated @gobj
110
+ Lib.g_base_info_is_deprecated self
109
111
  end
110
112
 
111
113
  def attribute(name)
112
- Lib.g_base_info_get_attribute @gobj, name
114
+ Lib.g_base_info_get_attribute self, name
113
115
  end
114
116
 
115
117
  def self.wrap(ptr)
@@ -117,7 +119,7 @@ module GObjectIntrospection
117
119
  end
118
120
 
119
121
  def ==(other)
120
- other.is_a?(IBaseInfo) && Lib.g_base_info_equal(@gobj, other)
122
+ other.is_a?(IBaseInfo) && Lib.g_base_info_equal(self, other)
121
123
  end
122
124
  end
123
125
  end