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.
- checksums.yaml +4 -4
- data/Changelog.md +10 -0
- data/lib/ffi-glib/array.rb +2 -2
- data/lib/ffi-glib/array_methods.rb +1 -0
- data/lib/ffi-glib/list_methods.rb +3 -2
- data/lib/ffi-glib/main_loop.rb +2 -0
- data/lib/ffi-glib/ptr_array.rb +2 -2
- data/lib/ffi-gobject.rb +3 -11
- data/lib/ffi-gobject/closure.rb +1 -0
- data/lib/ffi-gobject/object.rb +30 -16
- data/lib/ffi-gobject/object_class.rb +2 -2
- data/lib/ffi-gobject/ruby_closure.rb +2 -2
- data/lib/ffi-gobject/value.rb +2 -1
- data/lib/ffi-gobject_introspection/i_arg_info.rb +11 -11
- data/lib/ffi-gobject_introspection/i_base_info.rb +12 -10
- data/lib/ffi-gobject_introspection/i_callable_info.rb +8 -8
- data/lib/ffi-gobject_introspection/i_enum_info.rb +5 -5
- data/lib/ffi-gobject_introspection/i_field_info.rb +4 -4
- data/lib/ffi-gobject_introspection/i_function_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_interface_info.rb +15 -15
- data/lib/ffi-gobject_introspection/i_object_info.rb +22 -22
- data/lib/ffi-gobject_introspection/i_property_info.rb +2 -2
- data/lib/ffi-gobject_introspection/i_registered_type_info.rb +3 -3
- data/lib/ffi-gobject_introspection/i_repository.rb +16 -10
- data/lib/ffi-gobject_introspection/i_struct_info.rb +11 -7
- data/lib/ffi-gobject_introspection/i_type_info.rb +8 -8
- data/lib/ffi-gobject_introspection/i_union_info.rb +7 -7
- data/lib/ffi-gobject_introspection/i_value_info.rb +1 -1
- data/lib/ffi-gobject_introspection/strv.rb +1 -0
- data/lib/gir_ffi-base/gobject.rb +5 -0
- data/lib/gir_ffi-base/gobject/lib.rb +4 -0
- data/lib/gir_ffi/boolean.rb +2 -2
- data/lib/gir_ffi/builders/argument_builder.rb +41 -14
- data/lib/gir_ffi/builders/argument_builder_collection.rb +17 -4
- data/lib/gir_ffi/builders/base_argument_builder.rb +12 -16
- data/lib/gir_ffi/builders/callback_argument_builder.rb +1 -1
- data/lib/gir_ffi/builders/callback_builder.rb +1 -1
- data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +2 -9
- data/lib/gir_ffi/builders/field_builder.rb +11 -9
- data/lib/gir_ffi/builders/module_builder.rb +2 -1
- data/lib/gir_ffi/builders/object_builder.rb +21 -12
- data/lib/gir_ffi/builders/pointer_value_convertor.rb +8 -6
- data/lib/gir_ffi/builders/property_builder.rb +4 -2
- data/lib/gir_ffi/builders/registered_type_builder.rb +30 -19
- data/lib/gir_ffi/builders/return_value_builder.rb +2 -2
- data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +2 -0
- data/lib/gir_ffi/builders/signal_closure_builder.rb +1 -1
- data/lib/gir_ffi/builders/struct_builder.rb +7 -8
- data/lib/gir_ffi/builders/unintrospectable_builder.rb +4 -1
- data/lib/gir_ffi/builders/user_defined_builder.rb +31 -95
- data/lib/gir_ffi/builders/vfunc_builder.rb +1 -1
- data/lib/gir_ffi/builders/with_layout.rb +3 -1
- data/lib/gir_ffi/callback_base.rb +3 -2
- data/lib/gir_ffi/class_base.rb +5 -0
- data/lib/gir_ffi/enum_like_base.rb +9 -5
- data/lib/gir_ffi/error_argument_info.rb +1 -1
- data/lib/gir_ffi/ffi_ext/pointer.rb +1 -4
- data/lib/gir_ffi/field_argument_info.rb +1 -1
- data/lib/gir_ffi/in_pointer.rb +36 -23
- data/lib/gir_ffi/info_ext/i_arg_info.rb +2 -0
- data/lib/gir_ffi/info_ext/i_callback_info.rb +4 -0
- data/lib/gir_ffi/info_ext/i_registered_type_info.rb +4 -0
- data/lib/gir_ffi/info_ext/i_type_info.rb +3 -27
- data/lib/gir_ffi/info_ext/safe_function_name.rb +1 -0
- data/lib/gir_ffi/interface_base.rb +5 -0
- data/lib/gir_ffi/module_base.rb +1 -0
- data/lib/gir_ffi/object_base.rb +10 -0
- data/lib/gir_ffi/object_store.rb +2 -0
- data/lib/gir_ffi/receiver_argument_info.rb +1 -1
- data/lib/gir_ffi/return_value_info.rb +1 -1
- data/lib/gir_ffi/sized_array.rb +7 -14
- data/lib/gir_ffi/struct_like_base.rb +3 -0
- data/lib/gir_ffi/type_map.rb +21 -0
- data/lib/gir_ffi/user_defined_object_info.rb +6 -2
- data/lib/gir_ffi/user_defined_property_info.rb +113 -71
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi/zero_terminated.rb +26 -1
- data/tasks/test.rake +1 -0
- data/test/ffi-gobject_introspection/i_repository_test.rb +1 -2
- data/test/gir_ffi/builder_test.rb +13 -7
- data/test/gir_ffi/builders/argument_builder_test.rb +1 -5
- data/test/gir_ffi/builders/callback_return_value_builder_test.rb +1 -1
- data/test/gir_ffi/builders/field_builder_test.rb +20 -20
- data/test/gir_ffi/builders/return_value_builder_test.rb +1 -1
- data/test/gir_ffi/builders/signal_closure_builder_test.rb +1 -1
- data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +1 -1
- data/test/gir_ffi/builders/unintrospectable_builder_test.rb +2 -2
- data/test/gir_ffi/builders/vfunc_builder_test.rb +1 -1
- data/test/gir_ffi/enum_base_test.rb +43 -0
- data/test/gir_ffi/info_ext/i_type_info_test.rb +3 -9
- data/test/gir_ffi/object_base_test.rb +30 -0
- data/test/gir_ffi/sized_array_test.rb +0 -9
- data/test/gir_ffi/user_defined_object_info_test.rb +4 -6
- data/test/gir_ffi/user_defined_property_info_test.rb +6 -5
- data/test/gir_ffi/zero_terminated_test.rb +22 -0
- data/test/gir_ffi_test_helper.rb +2 -0
- data/test/integration/generated_gimarshallingtests_test.rb +1 -0
- data/test/integration/generated_gio_test.rb +5 -6
- data/test/integration/generated_gobject_test.rb +1 -1
- data/test/integration/generated_gtop_test.rb +3 -1
- data/test/integration/generated_regress_test.rb +3 -4
- metadata +3 -2
@@ -28,7 +28,7 @@ module GirFFI
|
|
28
28
|
return false unless go
|
29
29
|
|
30
30
|
Builder.attach_ffi_function lib, go
|
31
|
-
modul.class_eval FunctionBuilder.new(go).method_definition
|
31
|
+
modul.class_eval FunctionBuilder.new(go).method_definition, __FILE__, __LINE__
|
32
32
|
|
33
33
|
true
|
34
34
|
end
|
@@ -108,6 +108,7 @@ module GirFFI
|
|
108
108
|
def function_introspection_data(function)
|
109
109
|
info = gir.find_by_name @namespace, function.to_s
|
110
110
|
return unless info
|
111
|
+
|
111
112
|
info.info_type == :function ? info : nil
|
112
113
|
end
|
113
114
|
|
@@ -71,7 +71,7 @@ module GirFFI
|
|
71
71
|
setup_property_accessors
|
72
72
|
setup_vfunc_invokers
|
73
73
|
setup_interfaces
|
74
|
-
|
74
|
+
setup_initializer
|
75
75
|
end
|
76
76
|
|
77
77
|
# FIXME: Private method only used in subclass
|
@@ -121,6 +121,7 @@ module GirFFI
|
|
121
121
|
|
122
122
|
def define_vfunc_invoker(vfunc_name, invoker_name)
|
123
123
|
return if vfunc_name == invoker_name
|
124
|
+
|
124
125
|
klass.class_eval <<-DEF, __FILE__, __LINE__ + 1
|
125
126
|
def #{vfunc_name} *args, &block
|
126
127
|
#{invoker_name}(*args, &block)
|
@@ -128,24 +129,32 @@ module GirFFI
|
|
128
129
|
DEF
|
129
130
|
end
|
130
131
|
|
131
|
-
def
|
132
|
+
def setup_initializer
|
132
133
|
return if info.find_method 'new'
|
133
134
|
|
134
135
|
if info.abstract?
|
135
|
-
|
136
|
-
def initialize(*)
|
137
|
-
raise NoMethodError
|
138
|
-
end
|
139
|
-
RUBY
|
136
|
+
define_abstract_initializer
|
140
137
|
else
|
141
|
-
|
142
|
-
def initialize(properties = {})
|
143
|
-
base_initialize(properties)
|
144
|
-
end
|
145
|
-
RUBY
|
138
|
+
define_default_initializer
|
146
139
|
end
|
147
140
|
end
|
148
141
|
|
142
|
+
def define_abstract_initializer
|
143
|
+
klass.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
144
|
+
def initialize(*)
|
145
|
+
raise NoMethodError
|
146
|
+
end
|
147
|
+
RUBY
|
148
|
+
end
|
149
|
+
|
150
|
+
def define_default_initializer
|
151
|
+
klass.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
152
|
+
def initialize(properties = {})
|
153
|
+
base_initialize(properties)
|
154
|
+
end
|
155
|
+
RUBY
|
156
|
+
end
|
157
|
+
|
149
158
|
def setup_interfaces
|
150
159
|
interfaces.each do |iface|
|
151
160
|
klass.send :include, iface
|
@@ -9,21 +9,23 @@ module GirFFI
|
|
9
9
|
@type_spec = type_spec
|
10
10
|
end
|
11
11
|
|
12
|
-
def pointer_to_value(ptr_exp)
|
12
|
+
def pointer_to_value(ptr_exp, offset = 0)
|
13
13
|
case ffi_type_spec
|
14
14
|
when Module
|
15
|
-
"#{ffi_type_spec}.get_value_from_pointer(#{ptr_exp},
|
15
|
+
"#{ffi_type_spec}.get_value_from_pointer(#{ptr_exp}, #{offset})"
|
16
16
|
when Symbol
|
17
|
-
"#{ptr_exp}.get_#{ffi_type_spec}(
|
17
|
+
"#{ptr_exp}.get_#{ffi_type_spec}(#{offset})"
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
def value_to_pointer(ptr_exp, value_exp)
|
21
|
+
def value_to_pointer(ptr_exp, value_exp, offset = 0)
|
22
22
|
case ffi_type_spec
|
23
23
|
when Module
|
24
|
-
|
24
|
+
args = [value_exp, ptr_exp]
|
25
|
+
args << offset unless offset == 0
|
26
|
+
"#{ffi_type_spec}.copy_value_to_pointer(#{args.join(', ')})"
|
25
27
|
when Symbol
|
26
|
-
"#{ptr_exp}.put_#{ffi_type_spec}
|
28
|
+
"#{ptr_exp}.put_#{ffi_type_spec} #{offset}, #{value_exp}"
|
27
29
|
end
|
28
30
|
end
|
29
31
|
|
@@ -71,7 +71,9 @@ module GirFFI
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def setup_getter
|
74
|
-
|
74
|
+
return if container_defines_getter_method?
|
75
|
+
|
76
|
+
container_class.class_eval getter_def, __FILE__, __LINE__
|
75
77
|
end
|
76
78
|
|
77
79
|
def container_defines_getter_method?
|
@@ -79,7 +81,7 @@ module GirFFI
|
|
79
81
|
end
|
80
82
|
|
81
83
|
def setup_setter
|
82
|
-
container_class.class_eval setter_def
|
84
|
+
container_class.class_eval setter_def, __FILE__, __LINE__
|
83
85
|
end
|
84
86
|
|
85
87
|
def getter_def
|
@@ -15,13 +15,17 @@ module GirFFI
|
|
15
15
|
def setup_method(method)
|
16
16
|
method_info = info.find_method method
|
17
17
|
return unless method_info
|
18
|
-
|
18
|
+
|
19
|
+
remove_old_method method_info, meta_class
|
20
|
+
attach_and_define_method method_info
|
19
21
|
end
|
20
22
|
|
21
23
|
def setup_instance_method(method)
|
22
24
|
method_info = info.find_instance_method method
|
23
25
|
return unless method_info
|
24
|
-
|
26
|
+
|
27
|
+
remove_old_method method_info, build_class
|
28
|
+
attach_and_define_method method_info
|
25
29
|
end
|
26
30
|
|
27
31
|
def target_gtype
|
@@ -34,29 +38,36 @@ module GirFFI
|
|
34
38
|
(class << build_class; self; end)
|
35
39
|
end
|
36
40
|
|
37
|
-
def attach_and_define_method(method_info
|
38
|
-
method = method_info.safe_name
|
41
|
+
def attach_and_define_method(method_info)
|
39
42
|
attach_method method_info
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
+
if method_info.constructor?
|
44
|
+
define_construction_methods method_info
|
45
|
+
else
|
46
|
+
define_method method_info
|
47
|
+
end
|
48
|
+
method_info.safe_name
|
43
49
|
end
|
44
50
|
|
45
51
|
def define_method(method_info)
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
build_class.class_eval
|
52
|
+
method_definition = FunctionBuilder.new(method_info).method_definition
|
53
|
+
build_class.class_eval(method_definition, __FILE__, __LINE__)
|
54
|
+
end
|
55
|
+
|
56
|
+
def define_construction_methods(method_info)
|
57
|
+
initializer_builder = InitializerBuilder.new(method_info)
|
58
|
+
initializer_name = initializer_builder.method_name.to_sym
|
59
|
+
unless build_class.private_instance_methods(false).include? initializer_name
|
60
|
+
build_class.class_eval initializer_builder.method_definition, __FILE__, __LINE__
|
55
61
|
end
|
62
|
+
constructor_definition = ConstructorBuilder.new(method_info).method_definition
|
63
|
+
build_class.class_eval(constructor_definition, __FILE__, __LINE__)
|
56
64
|
end
|
57
65
|
|
58
|
-
def remove_old_method(
|
59
|
-
|
66
|
+
def remove_old_method(method_info, modul)
|
67
|
+
method = method_info.safe_name
|
68
|
+
modul.class_eval do
|
69
|
+
remove_method method if method_defined? method
|
70
|
+
end
|
60
71
|
end
|
61
72
|
|
62
73
|
def attach_method(method_info)
|
@@ -65,7 +76,7 @@ module GirFFI
|
|
65
76
|
|
66
77
|
def stub_methods
|
67
78
|
info.get_methods.each do |minfo|
|
68
|
-
klass.class_eval MethodStubber.new(minfo).method_stub
|
79
|
+
klass.class_eval MethodStubber.new(minfo).method_stub, __FILE__, __LINE__
|
69
80
|
end
|
70
81
|
end
|
71
82
|
|
@@ -17,7 +17,7 @@ module GirFFI
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def has_post_conversion?
|
20
|
-
|
20
|
+
user_data? || needs_c_to_ruby_conversion?
|
21
21
|
end
|
22
22
|
|
23
23
|
def needs_c_to_ruby_conversion?
|
@@ -28,7 +28,7 @@ module GirFFI
|
|
28
28
|
|
29
29
|
def post_convertor
|
30
30
|
@post_convertor ||=
|
31
|
-
if
|
31
|
+
if user_data?
|
32
32
|
ClosureConvertor.new(capture_variable_name)
|
33
33
|
else
|
34
34
|
FullCToRubyConvertor.new(type_info,
|
@@ -15,18 +15,17 @@ module GirFFI
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def superclass
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
return GObject::ObjectClass if type_name == 'GObject::InitiallyUnownedClass'
|
22
|
-
type = fields.first.field_type
|
23
|
-
return type.tag_or_class if type.tag == :interface
|
24
|
-
end
|
25
|
-
|
18
|
+
# HACK: Inheritance chain is not expressed in GObject's code correctly.
|
19
|
+
return GObject::ObjectClass if info.full_type_name == 'GObject::InitiallyUnownedClass'
|
20
|
+
return parent_field_type.tag_or_class if info.gtype_struct?
|
26
21
|
return BoxedBase if GObject.type_fundamental(info.gtype) == GObject::TYPE_BOXED
|
27
22
|
|
28
23
|
StructBase
|
29
24
|
end
|
25
|
+
|
26
|
+
def parent_field_type
|
27
|
+
fields.first.field_type
|
28
|
+
end
|
30
29
|
end
|
31
30
|
end
|
32
31
|
end
|
@@ -26,8 +26,11 @@ module GirFFI
|
|
26
26
|
def find_signal(signal_name)
|
27
27
|
info = super
|
28
28
|
return info if info
|
29
|
+
|
29
30
|
signal_id = GObject.signal_lookup signal_name, target_gtype
|
30
|
-
return
|
31
|
+
return if signal_id == 0
|
32
|
+
|
33
|
+
UnintrospectableSignalInfo.new(signal_id)
|
31
34
|
end
|
32
35
|
end
|
33
36
|
end
|
@@ -16,7 +16,7 @@ module GirFFI
|
|
16
16
|
register_type
|
17
17
|
setup_constants
|
18
18
|
setup_property_accessors
|
19
|
-
|
19
|
+
setup_initializer
|
20
20
|
TypeBuilder::CACHE[@gtype] = klass
|
21
21
|
end
|
22
22
|
|
@@ -49,7 +49,7 @@ module GirFFI
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def included_interfaces
|
52
|
-
klass.
|
52
|
+
klass.included_interfaces
|
53
53
|
end
|
54
54
|
|
55
55
|
def klass
|
@@ -86,11 +86,13 @@ module GirFFI
|
|
86
86
|
end
|
87
87
|
|
88
88
|
def instance_size
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
type_size = FFI.type_size(
|
93
|
-
size += [type_size,
|
89
|
+
if property_fields.any?
|
90
|
+
last_property = property_fields.last
|
91
|
+
size = last_property.offset
|
92
|
+
type_size = FFI.type_size(last_property.ffi_type)
|
93
|
+
size += [type_size, field_alignment].max
|
94
|
+
else
|
95
|
+
size = parent_gtype.instance_size
|
94
96
|
end
|
95
97
|
size
|
96
98
|
end
|
@@ -105,7 +107,7 @@ module GirFFI
|
|
105
107
|
object_class.get_property = property_getter
|
106
108
|
object_class.set_property = property_setter
|
107
109
|
|
108
|
-
|
110
|
+
property_fields.each_with_index do |property, index|
|
109
111
|
object_class.install_property index + 1, property.param_spec
|
110
112
|
end
|
111
113
|
end
|
@@ -156,110 +158,44 @@ module GirFFI
|
|
156
158
|
end
|
157
159
|
|
158
160
|
def properties
|
159
|
-
info.properties
|
161
|
+
@properties ||= info.properties
|
160
162
|
end
|
161
163
|
|
162
164
|
def layout_specification
|
163
165
|
parent_spec = [:parent, superclass::Struct]
|
164
|
-
offset = parent_gtype.instance_size
|
165
|
-
|
166
|
-
alignment = superclass::Struct.alignment
|
167
|
-
fields_spec = properties.flat_map do |param_info|
|
168
|
-
field_name = param_info.accessor_name.to_sym
|
169
|
-
ffi_type = param_info.ffi_type
|
170
|
-
type_size = FFI.type_size(ffi_type)
|
171
|
-
spec = [field_name, ffi_type, offset]
|
172
|
-
offset += [type_size, alignment].max
|
173
|
-
spec
|
174
|
-
end
|
175
|
-
parent_spec + fields_spec
|
176
|
-
end
|
177
|
-
|
178
|
-
# TODO: Move this to its own file.
|
179
|
-
# TODO: See if this or FieldTypeInfo can be merged with with
|
180
|
-
# UserDefinedPropertyInfo.
|
181
|
-
class UserDefinedPropertyFieldInfo
|
182
|
-
# Field info for user-defined property
|
183
|
-
class FieldTypeInfo
|
184
|
-
include InfoExt::ITypeInfo
|
185
|
-
|
186
|
-
def initialize(property_info)
|
187
|
-
@property_info = property_info
|
188
|
-
end
|
189
|
-
|
190
|
-
def tag
|
191
|
-
@property_info.type_tag
|
192
|
-
end
|
193
|
-
|
194
|
-
def pointer?
|
195
|
-
@property_info.pointer_type?
|
196
|
-
end
|
197
|
-
|
198
|
-
def interface_type
|
199
|
-
@property_info.interface_type_tag if tag == :interface
|
200
|
-
end
|
201
|
-
|
202
|
-
def hidden_struct_type?
|
203
|
-
false
|
204
|
-
end
|
205
|
-
|
206
|
-
def interface_class
|
207
|
-
Builder.build_by_gtype @property_info.value_type if tag == :interface
|
208
|
-
end
|
209
|
-
|
210
|
-
def interface_class_name
|
211
|
-
interface_class.name if tag == :interface
|
212
|
-
end
|
213
|
-
end
|
214
|
-
|
215
|
-
def initialize(property_info, container, offset)
|
216
|
-
@property_info = property_info
|
217
|
-
@container = container
|
218
|
-
@offset = offset
|
219
|
-
end
|
220
|
-
|
221
|
-
attr_reader :container, :offset
|
222
166
|
|
223
|
-
|
224
|
-
|
167
|
+
fields_spec = property_fields.flat_map do |property_info|
|
168
|
+
[property_info.field_symbol, property_info.ffi_type, property_info.offset]
|
225
169
|
end
|
226
170
|
|
227
|
-
|
228
|
-
|
229
|
-
end
|
230
|
-
|
231
|
-
def related_array_length_field
|
232
|
-
nil
|
233
|
-
end
|
171
|
+
parent_spec + fields_spec
|
172
|
+
end
|
234
173
|
|
235
|
-
|
236
|
-
|
237
|
-
end
|
174
|
+
def field_alignment
|
175
|
+
@field_alignment ||= superclass::Struct.alignment
|
238
176
|
end
|
239
177
|
|
240
178
|
def setup_property_accessors
|
241
|
-
|
242
|
-
alignment = struct_class.alignment
|
243
|
-
properties.each do |param_info|
|
244
|
-
field_info = UserDefinedPropertyFieldInfo.new(param_info, info, offset)
|
245
|
-
type_size = FFI.type_size(param_info.ffi_type)
|
246
|
-
offset += [type_size, alignment].max
|
179
|
+
property_fields.each do |field_info|
|
247
180
|
FieldBuilder.new(field_info, klass).build
|
248
181
|
end
|
249
182
|
end
|
250
183
|
|
251
|
-
def
|
252
|
-
|
184
|
+
def property_fields
|
185
|
+
@property_fields ||=
|
186
|
+
begin
|
187
|
+
offset = parent_gtype.instance_size
|
188
|
+
properties.map do |param_spec|
|
189
|
+
field_info = UserDefinedPropertyInfo.new(param_spec, info, offset)
|
190
|
+
type_size = FFI.type_size(field_info.ffi_type)
|
191
|
+
offset += [type_size, field_alignment].max
|
192
|
+
field_info
|
193
|
+
end
|
194
|
+
end
|
253
195
|
end
|
254
196
|
|
255
|
-
def
|
256
|
-
|
257
|
-
def initialize
|
258
|
-
ptr = GObject::Lib.g_object_new #{@gtype}, nil
|
259
|
-
store_pointer(ptr)
|
260
|
-
end
|
261
|
-
CODE
|
262
|
-
klass.class_eval code
|
197
|
+
def method_introspection_data(_method)
|
198
|
+
nil
|
263
199
|
end
|
264
200
|
end
|
265
201
|
end
|