gir_ffi 0.13.0 → 0.13.1
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 +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
|