gir_ffi 0.6.7 → 0.7.0
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 +7 -0
- data/{History.txt → Changelog.md} +93 -61
- data/{DESIGN.rdoc → DESIGN.md} +7 -7
- data/README.md +5 -7
- data/TODO.md +90 -0
- data/lib/ffi-glib.rb +0 -1
- data/lib/ffi-glib/array.rb +13 -29
- data/lib/ffi-glib/array_methods.rb +13 -0
- data/lib/ffi-glib/container_class_methods.rb +6 -1
- data/lib/ffi-glib/hash_table.rb +3 -2
- data/lib/ffi-glib/list.rb +3 -17
- data/lib/ffi-glib/list_methods.rb +22 -3
- data/lib/ffi-glib/ptr_array.rb +19 -19
- data/lib/ffi-glib/s_list.rb +3 -17
- data/lib/ffi-gobject.rb +10 -17
- data/lib/ffi-gobject/object.rb +19 -9
- data/lib/ffi-gobject/object_class.rb +14 -0
- data/lib/ffi-gobject/ruby_closure.rb +4 -5
- data/lib/ffi-gobject/value.rb +7 -5
- data/lib/ffi-gobject_introspection/i_vfunc_info.rb +1 -1
- data/lib/gir_ffi-base.rb +0 -2
- data/lib/gir_ffi-base/gobject.rb +1 -0
- data/lib/gir_ffi-base/gobject/lib.rb +1 -1
- data/lib/gir_ffi.rb +2 -0
- data/lib/gir_ffi/arg_helper.rb +18 -8
- data/lib/gir_ffi/builders/argument_builder.rb +62 -55
- data/lib/gir_ffi/builders/base_argument_builder.rb +52 -106
- data/lib/gir_ffi/builders/base_type_builder.rb +3 -3
- data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +34 -0
- data/lib/gir_ffi/builders/callback_argument_builder.rb +73 -0
- data/lib/gir_ffi/builders/callback_builder.rb +19 -9
- data/lib/gir_ffi/builders/callback_return_value_builder.rb +54 -0
- data/lib/gir_ffi/builders/closure_convertor.rb +9 -0
- data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +9 -0
- data/lib/gir_ffi/builders/constructor_result_convertor.rb +9 -0
- data/lib/gir_ffi/builders/enum_builder.rb +16 -16
- data/lib/gir_ffi/builders/field_builder.rb +36 -15
- data/lib/gir_ffi/builders/function_builder.rb +32 -27
- data/lib/gir_ffi/builders/interface_builder.rb +14 -4
- data/lib/gir_ffi/builders/mapping_method_builder.rb +95 -43
- data/lib/gir_ffi/builders/module_builder.rb +22 -35
- data/lib/gir_ffi/builders/null_convertor.rb +9 -0
- data/lib/gir_ffi/builders/object_builder.rb +11 -14
- data/lib/gir_ffi/builders/property_builder.rb +107 -9
- data/lib/gir_ffi/builders/registered_type_builder.rb +2 -2
- data/lib/gir_ffi/builders/return_value_builder.rb +42 -33
- data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +15 -0
- data/lib/gir_ffi/builders/signal_builder.rb +18 -58
- data/lib/gir_ffi/builders/struct_builder.rb +1 -2
- data/lib/gir_ffi/builders/type_builder.rb +1 -0
- data/lib/gir_ffi/builders/unintrospectable_builder.rb +4 -4
- data/lib/gir_ffi/builders/user_defined_builder.rb +151 -26
- data/lib/gir_ffi/builders/vfunc_builder.rb +57 -0
- data/lib/gir_ffi/builders/with_layout.rb +10 -8
- data/lib/gir_ffi/builders/with_methods.rb +1 -1
- data/lib/gir_ffi/callback_base.rb +42 -8
- data/lib/gir_ffi/class_base.rb +1 -2
- data/lib/gir_ffi/enum_base.rb +26 -4
- data/lib/gir_ffi/error_argument_info.rb +21 -0
- data/lib/gir_ffi/{setter_argument_info.rb → field_argument_info.rb} +2 -1
- data/lib/gir_ffi/g_type.rb +25 -0
- data/lib/gir_ffi/in_out_pointer.rb +3 -14
- data/lib/gir_ffi/in_pointer.rb +20 -21
- data/lib/gir_ffi/info_ext.rb +2 -0
- data/lib/gir_ffi/info_ext/i_callable_info.rb +0 -9
- data/lib/gir_ffi/info_ext/i_callback_info.rb +17 -0
- data/lib/gir_ffi/info_ext/i_function_info.rb +4 -0
- data/lib/gir_ffi/info_ext/i_property_info.rb +4 -0
- data/lib/gir_ffi/info_ext/i_registered_type_info.rb +1 -0
- data/lib/gir_ffi/info_ext/i_signal_info.rb +14 -16
- data/lib/gir_ffi/info_ext/i_type_info.rb +72 -34
- data/lib/gir_ffi/info_ext/i_vfunc_info.rb +12 -0
- data/lib/gir_ffi/info_ext/safe_constant_name.rb +3 -2
- data/lib/gir_ffi/interface_base.rb +8 -3
- data/lib/gir_ffi/module_base.rb +3 -5
- data/lib/gir_ffi/object_base.rb +8 -0
- data/lib/gir_ffi/receiver_argument_info.rb +21 -0
- data/lib/gir_ffi/receiver_type_info.rb +27 -0
- data/lib/gir_ffi/return_value_info.rb +23 -0
- data/lib/gir_ffi/signal_base.rb +1 -1
- data/lib/{ffi-glib → gir_ffi}/sized_array.rb +10 -6
- data/lib/gir_ffi/struct_base.rb +10 -9
- data/lib/gir_ffi/type_base.rb +1 -0
- data/lib/gir_ffi/type_map.rb +3 -0
- data/lib/gir_ffi/unintrospectable_type_info.rb +4 -1
- data/lib/gir_ffi/union_base.rb +4 -21
- data/lib/gir_ffi/user_data_argument_info.rb +21 -0
- data/lib/gir_ffi/user_data_type_info.rb +17 -0
- data/lib/gir_ffi/user_defined_type_info.rb +18 -4
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi/vfunc_base.rb +8 -0
- data/lib/gir_ffi/vfunc_implementation.rb +11 -0
- data/lib/gir_ffi/zero_terminated.rb +18 -24
- data/test/base_test_helper.rb +2 -3
- data/test/ffi-glib/array_test.rb +3 -3
- data/test/ffi-glib/ruby_closure_test.rb +3 -3
- data/test/ffi-gobject/value_test.rb +15 -1
- data/test/ffi-gobject_test.rb +2 -1
- data/test/gir_ffi/arg_helper_test.rb +21 -2
- data/test/gir_ffi/builders/argument_builder_test.rb +213 -287
- data/test/gir_ffi/builders/base_argument_builder_test.rb +1 -1
- data/test/gir_ffi/builders/callback_builder_test.rb +26 -8
- data/test/gir_ffi/builders/field_builder_test.rb +18 -3
- data/test/gir_ffi/builders/function_builder_test.rb +30 -12
- data/test/gir_ffi/builders/interface_builder_test.rb +9 -0
- data/test/gir_ffi/builders/module_builder_test.rb +0 -39
- data/test/gir_ffi/builders/object_builder_test.rb +27 -27
- data/test/gir_ffi/builders/property_builder_test.rb +110 -0
- data/test/gir_ffi/builders/return_value_builder_test.rb +168 -200
- data/test/gir_ffi/builders/signal_builder_test.rb +58 -14
- data/test/gir_ffi/builders/struct_builder_test.rb +2 -41
- data/test/gir_ffi/builders/user_defined_builder_test.rb +88 -20
- data/test/gir_ffi/builders/vfunc_builder_test.rb +44 -0
- data/test/gir_ffi/g_type_test.rb +29 -0
- data/test/gir_ffi/in_pointer_test.rb +28 -9
- data/test/gir_ffi/info_ext/i_callable_info_test.rb +0 -9
- data/test/gir_ffi/info_ext/i_callback_info_test.rb +19 -0
- data/test/gir_ffi/info_ext/i_function_info_test.rb +9 -0
- data/test/gir_ffi/info_ext/i_signal_info_test.rb +8 -11
- data/test/gir_ffi/info_ext/i_type_info_test.rb +140 -16
- data/test/gir_ffi/interface_base_test.rb +9 -3
- data/test/gir_ffi/object_base_test.rb +1 -2
- data/test/{ffi-glib → gir_ffi}/sized_array_test.rb +28 -28
- data/test/gir_ffi/type_map_test.rb +1 -1
- data/test/gir_ffi/user_defined_type_info_test.rb +36 -4
- data/test/gir_ffi_test.rb +5 -5
- data/test/gir_ffi_test_helper.rb +4 -0
- data/test/integration/generated_gimarshallingtests_test.rb +163 -59
- data/test/integration/generated_gobject_test.rb +21 -8
- data/test/integration/generated_pango_test.rb +2 -2
- data/test/integration/generated_regress_test.rb +361 -101
- data/test/lib/autogen.sh +5 -1
- metadata +51 -35
- data/TODO.rdoc +0 -63
- data/lib/gir_ffi-base/gir_ffi/library.rb +0 -17
- data/lib/gir_ffi-base/gir_ffi/struct.rb +0 -27
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4030d6c4cfb00268801490cc1bb1ea0fcecfd533
|
4
|
+
data.tar.gz: 36be619abbb6889c67c7ab2726c6eaa3708f7946
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ae9124773e81ce3c8ce21882fa164296f40c06d14c3032f57b121a4026967fb0e6e210d60dacaa171f21997f34a19855e407ed425c7fba0d1d2dbc47fa47e4e9
|
7
|
+
data.tar.gz: 0b647b4e8bec822e25f96a249efc0ea0ce4b9177b17de87d18d3f17f384d5f70480f7986ff920697a6e06709b752d0407ed3d88f485b43a290081e2ffecee01e
|
@@ -1,4 +1,36 @@
|
|
1
|
-
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## 0.7.0 / 2014-01-11
|
4
|
+
|
5
|
+
* Type handling:
|
6
|
+
* Handle c arrays with separate length argument for signals
|
7
|
+
* Handle GHashTable values of type :gint8 and :guint32
|
8
|
+
* Handle signals with int64, Strv, uint64 arguments
|
9
|
+
* Handle arrays of integers cast as pointers
|
10
|
+
* Handle fields of callback type
|
11
|
+
* Handle nested GHashTable
|
12
|
+
* Argument handling:
|
13
|
+
* Refactor argument builder system
|
14
|
+
* Improve handling of user data arguments
|
15
|
+
* Handle signal and callback arguments with direction :out
|
16
|
+
* Handle aliases of container types by making the element type optional
|
17
|
+
* Handle signal and callback return values that need conversion
|
18
|
+
* User defined types:
|
19
|
+
* Pass explicit receiver to initialization block for UserDefinedTypeInfo
|
20
|
+
* Allow user defined types that are anonymous Ruby classes
|
21
|
+
* Register defined properties in a subclass
|
22
|
+
* Support setting virtual function implementations in a subclass
|
23
|
+
* Support adding an interface to a subclass
|
24
|
+
* Support implementing an interface's virtual functions in a subclass
|
25
|
+
* Use FFI's DataConvertor system to handle enums and callbacks
|
26
|
+
* Stop using deprecated GValueArray to construct argument array for signal_emit
|
27
|
+
* Make ITypeInfo#g_type return correct value for c arrays
|
28
|
+
* Make get_property and set_property less smart, moving conversion into the
|
29
|
+
property accessor definitions
|
30
|
+
* Make GObject::Value#get_value handle enums and flags
|
31
|
+
* Clean up deprecated methods
|
32
|
+
|
33
|
+
## 0.6.7 / 2013-09-28
|
2
34
|
|
3
35
|
* Uniform handling of callback, signal and method arguments
|
4
36
|
* Automatically convert array elements to GValue
|
@@ -12,18 +44,18 @@
|
|
12
44
|
* Deprecate several methods
|
13
45
|
* Lots of refactoring
|
14
46
|
|
15
|
-
|
47
|
+
## 0.6.6 / 2013-08-05
|
16
48
|
|
17
49
|
* Handle GArrays of booleans and structs
|
18
50
|
* Improve handling of gbooleans
|
19
51
|
|
20
|
-
|
52
|
+
## 0.6.5 / 2013-08-03
|
21
53
|
|
22
54
|
* Handle inline arrays of structs
|
23
55
|
* Implement equality operator for container types
|
24
56
|
* Fix element size calculation for GArray
|
25
57
|
|
26
|
-
|
58
|
+
## 0.6.4 / 2013-06-30
|
27
59
|
|
28
60
|
* Represent enum types by modules wrapping FFI::Enum
|
29
61
|
* Support functions on enums
|
@@ -34,25 +66,25 @@
|
|
34
66
|
* Handle caller-allocated arguments of type GArray
|
35
67
|
* Deprecate GObject::Value#ruby_value, replacing it with #get_value
|
36
68
|
|
37
|
-
|
69
|
+
## 0.6.3 / 2013-06-15
|
38
70
|
|
39
71
|
* Make use of enums as element type for GHashTable and other containers
|
40
|
-
|
72
|
+
work
|
41
73
|
|
42
|
-
|
74
|
+
## 0.6.2 / 2013-06-14
|
43
75
|
|
44
76
|
* Handle introspectable types with introspectable parent types
|
45
77
|
|
46
|
-
|
78
|
+
## 0.6.1 / 2013-06-09
|
47
79
|
|
48
80
|
* Handle SizedArray containing enums
|
49
81
|
|
50
|
-
|
82
|
+
## 0.6.0 / 2013-06-07
|
51
83
|
|
52
84
|
* Support Rubinius
|
53
85
|
* Lots of refactoring
|
54
86
|
|
55
|
-
|
87
|
+
## 0.5.2 / 2013-04-23
|
56
88
|
|
57
89
|
* Handle signal details in GObject.signal_connect and .signal_emit
|
58
90
|
* Make GValue#set_value check object GType compatibility
|
@@ -60,12 +92,12 @@
|
|
60
92
|
* Handle more argument types
|
61
93
|
* Support Ruby 2.0.0
|
62
94
|
|
63
|
-
|
95
|
+
## 0.5.1 / 2013-02-01
|
64
96
|
|
65
97
|
* Properly handle zero-terminated arrays of :filename
|
66
98
|
* Loosen dependencies on ffi and minitest
|
67
99
|
|
68
|
-
|
100
|
+
## 0.5.0 / 2013-01-19
|
69
101
|
|
70
102
|
* Update ffi dependency
|
71
103
|
* Add finalizer to release memory for IBaseInfo and descendents
|
@@ -73,38 +105,38 @@
|
|
73
105
|
* Remove pretty-printing functionality
|
74
106
|
* Refactor argument handling
|
75
107
|
|
76
|
-
|
108
|
+
## 0.4.3 / 2012-11-02
|
77
109
|
|
78
110
|
* Remove gobject-introspection version check
|
79
111
|
* Make tests pass with gobject-introspection 1.34
|
80
112
|
* Ongoing refactoring
|
81
113
|
|
82
|
-
|
114
|
+
## 0.4.2 / 2012-09-22
|
83
115
|
|
84
116
|
* Make objects and interfaces wrap poiners in the class that matches
|
85
|
-
|
117
|
+
their GType.
|
86
118
|
|
87
|
-
|
119
|
+
## 0.4.1 / 2012-09-18
|
88
120
|
|
89
121
|
* Remove workarounds for older versions of gobject-introspection
|
90
122
|
* Mark certain methods as deprecated. These will be removed in 0.5.0
|
91
123
|
* Handle :filename type arguments in InPointer
|
92
124
|
* Refactoring
|
93
125
|
|
94
|
-
|
126
|
+
## 0.4.0 / 2012-08-24
|
95
127
|
|
96
128
|
* Move Gtk+ bindings to their own gem (gir_ffi-gtk).
|
97
129
|
|
98
|
-
|
130
|
+
## 0.3.2 / 2012-08-24
|
99
131
|
|
100
132
|
* Correctly set FFI return type when callbacks that return GObjects have
|
101
|
-
|
133
|
+
incomplete type specification.
|
102
134
|
|
103
|
-
|
135
|
+
## 0.3.1 / 2012-05-13
|
104
136
|
|
105
137
|
* Correctly map Interface types in callbacks.
|
106
138
|
|
107
|
-
|
139
|
+
## 0.3.0 / 2012-04-09
|
108
140
|
|
109
141
|
* Improve process of defining initializers in derived classes.
|
110
142
|
* Make interfaces know their GType.
|
@@ -116,68 +148,68 @@
|
|
116
148
|
* Improve unintrospectable type handling.
|
117
149
|
* Bug fixes and refactorings.
|
118
150
|
* Start implementing #define_type, for creating descendent types that
|
119
|
-
|
151
|
+
the GObject system knows about.
|
120
152
|
|
121
|
-
|
153
|
+
## 0.2.3 / 2011-12-31
|
122
154
|
|
123
155
|
* Fix issue #7: methods that take GValues will autoconvert other values.
|
124
156
|
* Fix method lookup when include'ing a module that is an Interface.
|
125
157
|
* Various refactorings.
|
126
158
|
|
127
|
-
|
159
|
+
## 0.2.2 / 2011-12-07
|
128
160
|
|
129
161
|
* Fix issue #19: Check if a GLib::PtrArray.add method was generated
|
130
|
-
|
162
|
+
before attempting to remove it.
|
131
163
|
* Fix two issues with pretty printing that made output for GLib have syntax
|
132
|
-
|
164
|
+
errors.
|
133
165
|
|
134
|
-
|
166
|
+
## 0.2.1 / 2011-11-20
|
135
167
|
|
136
168
|
* Fix handling of output parameters that are arrays of pointers to
|
137
|
-
|
169
|
+
structures (i.e., of type Foo***).
|
138
170
|
|
139
|
-
|
171
|
+
## 0.2.0 / 2011-11-19
|
140
172
|
|
141
173
|
* Add support for properties, with #get_property and #set_property.
|
142
174
|
* Add support for fields.
|
143
|
-
|
144
|
-
|
175
|
+
- Create field accessor methods.
|
176
|
+
- Get rid of #[] and #[]=.
|
145
177
|
* Explicitely load libgirepository with ABI version 1.
|
146
178
|
* Improve implementation of GLib container classes (GList etc.):
|
147
|
-
|
148
|
-
|
149
|
-
|
179
|
+
- Real constructors.
|
180
|
+
- #append and friends are instance methods now.
|
181
|
+
- Conversion methods to cast Ruby containers to GLib containers.
|
150
182
|
* Start implementing pretty printing.
|
151
183
|
* Various refactorings.
|
152
184
|
|
153
|
-
|
185
|
+
## 0.1.0 / 2011-10-28
|
154
186
|
|
155
187
|
* Put bindings for GObjectIntrospection in their own namespace.
|
156
188
|
* GirFFI.setup no longer loads overrides.
|
157
189
|
* Add ffi-gtk2 and ffi-gtk3 files for loading Gtk+ overrides.
|
158
190
|
|
159
|
-
|
191
|
+
## 0.0.14 / 2011-10-28
|
160
192
|
|
161
193
|
* Support GObject Introspection version 1.30:
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
194
|
+
- Add support for layouts with fixed-length arrays.
|
195
|
+
- Handle type names starting with underscores.
|
196
|
+
- Call g_signal_emitv directly to avoid conflict in introspection info
|
197
|
+
with earlier versions of GObject Introspection.
|
166
198
|
|
167
|
-
|
199
|
+
## 0.0.13 / 2011-09-09
|
168
200
|
|
169
201
|
* Remove IErrorDomain related code. This functinality was removed from
|
170
|
-
|
202
|
+
GObject Introspection in version 1.29.17
|
171
203
|
|
172
|
-
|
204
|
+
## 0.0.12 / 2011-09-04
|
173
205
|
|
174
|
-
* No longer use _id2ref to locate objects past as user data pointers.
|
206
|
+
* No longer use `_id2ref` to locate objects past as user data pointers.
|
175
207
|
* Fix failing tests on JRuby.
|
176
208
|
|
177
|
-
|
209
|
+
## 0.0.11 / 2011-08-22
|
178
210
|
|
179
211
|
* Change interface to the underlying builder in generated modules and
|
180
|
-
|
212
|
+
classes.
|
181
213
|
* Handle string, enum, union, flags signal arguments.
|
182
214
|
* Handle string arguments in GObject.signal_emit.
|
183
215
|
* Handle enum signal arguments.
|
@@ -185,13 +217,13 @@
|
|
185
217
|
* Fix method setup in non-introspectable types.
|
186
218
|
* Refactoring.
|
187
219
|
|
188
|
-
|
220
|
+
## 0.0.10 / 2011-05-18
|
189
221
|
|
190
222
|
* Handle GObject interfaces properly.
|
191
223
|
* Create types only defined by the GType system.
|
192
224
|
* Support GType array return values.
|
193
225
|
|
194
|
-
|
226
|
+
## 0.0.9 / 2011-05-02
|
195
227
|
|
196
228
|
* More complete support for the basic types.
|
197
229
|
* Improved support for GList, GSList, GStrv, and GValue.
|
@@ -202,28 +234,28 @@
|
|
202
234
|
* Use minitest/spec for testing.
|
203
235
|
* Various bug fixes and internal improvements.
|
204
236
|
|
205
|
-
|
237
|
+
## 0.0.8 / 2011-04-08
|
206
238
|
|
207
239
|
* Generate modules with names starting with a lowercase letter (like
|
208
|
-
|
240
|
+
cairo).
|
209
241
|
* Allow specifying the typelib version on setup.
|
210
242
|
* Rename methods #methods and #type of the introspection classes to avoid
|
211
|
-
|
243
|
+
clashing with standard Ruby methods.
|
212
244
|
* Refactoring.
|
213
245
|
|
214
|
-
|
246
|
+
## 0.0.7 / 2011-04-01
|
215
247
|
|
216
248
|
* Support gobject-introspection 0.10, drop support for earlier versions.
|
217
|
-
|
218
|
-
|
249
|
+
- Use Regress, not Everything, for testing.
|
250
|
+
- Deal with functions that are no longer introspectable.
|
219
251
|
* Correctly handle constructors that declare their return type different
|
220
|
-
|
252
|
+
from their class.
|
221
253
|
* Implement RubyClosure, a GObject::Closure for handling ruby callbacks.
|
222
254
|
* Handle GLib's singly and doubly linked lists.
|
223
255
|
* Handle callback types defined in-place (like Closure's marshal).
|
224
256
|
* Refactoring.
|
225
257
|
|
226
|
-
|
258
|
+
## 0.0.6 / 2011-03-01
|
227
259
|
|
228
260
|
* Cast returned GObjects to their actual type.
|
229
261
|
* Properly cast callback arguments.
|
@@ -231,7 +263,7 @@
|
|
231
263
|
* Make sure Gtk::Window has the correct number of references after creation.
|
232
264
|
* Refactoring and some small fixes.
|
233
265
|
|
234
|
-
|
266
|
+
## 0.0.5 / 2010-12-30
|
235
267
|
|
236
268
|
* Don't create instance methods out of functions and vice versa.
|
237
269
|
* Find signals on interfaces, too.
|
@@ -240,7 +272,7 @@
|
|
240
272
|
* Handle most other argument types.
|
241
273
|
* Various internal changes and other fixes.
|
242
274
|
|
243
|
-
|
275
|
+
## 0.0.4 / 2010-12-14
|
244
276
|
|
245
277
|
* Lots of changes to the internals.
|
246
278
|
* Handle out-only arguments.
|
@@ -251,16 +283,16 @@
|
|
251
283
|
* Implement Union type.
|
252
284
|
* Many small bug fixes.
|
253
285
|
|
254
|
-
|
286
|
+
## 0.0.3 / 2010-11-19
|
255
287
|
|
256
288
|
* Update to restore Ruby 1.9 support.
|
257
289
|
* Handle functions with the 'throws' property set.
|
258
290
|
* Handle classes without specified fields.
|
259
291
|
|
260
|
-
|
292
|
+
## 0.0.2 / 2010-11-14
|
261
293
|
|
262
294
|
* Several fixes to method creation.
|
263
295
|
|
264
|
-
|
296
|
+
## 0.0.1 / 2010-10-25
|
265
297
|
|
266
298
|
* Initial release.
|
data/{DESIGN.rdoc → DESIGN.md}
RENAMED
@@ -1,11 +1,11 @@
|
|
1
|
-
|
1
|
+
# Design of Gir-FFI
|
2
2
|
|
3
|
-
|
3
|
+
## Basic Idea
|
4
4
|
|
5
5
|
Gir-FFI uses FFI to read information from the GObject Introspection
|
6
6
|
Repository. Based on that it creates bindings for the information read.
|
7
7
|
|
8
|
-
|
8
|
+
## Class and method creation
|
9
9
|
|
10
10
|
GirFFI::Builder creates classes and modules at runtime and adds appropriate
|
11
11
|
method_missing methods to them to generate methods and perhaps other
|
@@ -22,7 +22,7 @@ The following options were discarded, at least for now.
|
|
22
22
|
still in interesting idea, but off-line source code generation is not
|
23
23
|
really the Ruby way.
|
24
24
|
|
25
|
-
|
25
|
+
## Method Naming
|
26
26
|
|
27
27
|
Probably, get_x/set_x pairs should become x and x= to be more Ruby-like.
|
28
28
|
This should be done either by defining them as such directly, or by
|
@@ -35,7 +35,7 @@ Boolean-valued methods could get a ? at the end.
|
|
35
35
|
This requires a lot more thought. For now, the full method names as
|
36
36
|
defined in the GIR are used.
|
37
37
|
|
38
|
-
|
38
|
+
## Ruby-GNOME Compatibility
|
39
39
|
|
40
40
|
Full Ruby-GNOME compatibility cannot be achieved automatically, since its
|
41
41
|
object hierarchy differs from that of standard GObject: It puts Object in
|
@@ -45,7 +45,7 @@ GLib::Instantiable; In standard GObject they are functions.
|
|
45
45
|
Possibly, compatibility enhancing code can be added for these specific
|
46
46
|
exceptions.
|
47
47
|
|
48
|
-
|
48
|
+
## Reference Counting
|
49
49
|
|
50
50
|
Because we can always make sure GObjects are unref'd when the Ruby object
|
51
51
|
is GC'd, the mechanism of floating references actually gets in the way a
|
@@ -54,7 +54,7 @@ them. All GObjects can then safely be unref'd using a Ruby finalizer.
|
|
54
54
|
GObjects obtained through other mechanisms than with a constructor will be
|
55
55
|
ref'd once when wrapping them in a ruby object.
|
56
56
|
|
57
|
-
|
57
|
+
## Bootstrapping Class Design
|
58
58
|
|
59
59
|
The interface to the GObject Introspection Repository itself is also
|
60
60
|
introspectable. The interface is specified in terms of structs and
|
data/README.md
CHANGED
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
by Matijs van Zuijlen
|
4
4
|
|
5
|
-
[](http://travis-ci.org/mvz/ruby-gir-ffi)
|
6
|
-
|
7
5
|
## Description
|
8
6
|
|
9
7
|
Ruby bindings for GNOME using the GObject Introspection Repository.
|
@@ -13,7 +11,7 @@ Ruby bindings for GNOME using the GObject Introspection Repository.
|
|
13
11
|
* Create bindings to any GObject-based library.
|
14
12
|
* Bindings generated at runtime.
|
15
13
|
* Provides overridden bindings for selected methods.
|
16
|
-
* Install
|
14
|
+
* Install `gir_ffi-gtk` and require `gir_ffi-gtk2` or `gir_ffi-gtk3` to
|
17
15
|
load overrides for Gtk2 or Gtk3.
|
18
16
|
|
19
17
|
## Usage
|
@@ -39,8 +37,8 @@ Ruby bindings for GNOME using the GObject Introspection Repository.
|
|
39
37
|
|
40
38
|
## Requirements
|
41
39
|
|
42
|
-
GirFFI should work on MRI 1.8, 1.9 and 2.
|
43
|
-
modes, and on Rubinius
|
40
|
+
GirFFI should work on MRI 1.8, 1.9, 2.0, and 2.1, JRuby in both 1.8 and 1.9
|
41
|
+
modes, and on Rubinius.
|
44
42
|
|
45
43
|
You will also need gobject-introspection installed with some
|
46
44
|
introspection data.
|
@@ -73,7 +71,7 @@ already exist:
|
|
73
71
|
|
74
72
|
## Hacking and contributing
|
75
73
|
|
76
|
-
If you want to help out, have a look at TODO.
|
74
|
+
If you want to help out, have a look at TODO.md, and check the notes
|
77
75
|
in the code (e.g., using `dnote`). Feel free to file bugs or send pull
|
78
76
|
requests.
|
79
77
|
|
@@ -90,7 +88,7 @@ If you want to send pull requests or patches, please:
|
|
90
88
|
|
91
89
|
## License
|
92
90
|
|
93
|
-
Copyright © 2009–
|
91
|
+
Copyright © 2009–2014 [Matijs van Zuijlen](http://www.matijs.net)
|
94
92
|
|
95
93
|
GirFFI is free software, distributed under the terms of the GNU Lesser
|
96
94
|
General Public License, version 2.1 or later. See the file COPYING.LIB for
|
data/TODO.md
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
# TODO
|
2
|
+
|
3
|
+
## Memory managment
|
4
|
+
|
5
|
+
GirFFI does not attempt to free any memory at the moment, or lower the
|
6
|
+
reference count of any objects it gets from GObject. This task therefore involves two parts:
|
7
|
+
|
8
|
+
- Free non-GObject pointers as needed (at garbage-collection time)
|
9
|
+
- Lower reference count of GObjects (at garbage-collection time)
|
10
|
+
|
11
|
+
## Refactorings
|
12
|
+
|
13
|
+
These in the order they occured to me, and may therefore be fixed in any order.
|
14
|
+
|
15
|
+
- Create Type objects for all FFI types, including the ones currently
|
16
|
+
represented by a single symbol, so we can always do stuff like
|
17
|
+
|
18
|
+
> `GirFFI::Types::UInt8.get_value_from_pointer(ptr)`
|
19
|
+
|
20
|
+
rather than having awkward dynamic method dispatch inside GirFFI::InOutPointer.
|
21
|
+
|
22
|
+
- Move to a single Pointer class, rather than InPointer, InOutPointer and
|
23
|
+
Pointer monkeypatching.
|
24
|
+
|
25
|
+
- Move special types like SizedArray to sane namespaces. Types (like
|
26
|
+
GLib::List) that have actual GLib implementations go to the GLib namespace.
|
27
|
+
Other types go to the GirFFI namespace.
|
28
|
+
|
29
|
+
## Derived types
|
30
|
+
|
31
|
+
Derived classes can now be registered with GObject, but the way to do this is
|
32
|
+
not very nice:
|
33
|
+
|
34
|
+
class Derived < Base
|
35
|
+
end
|
36
|
+
|
37
|
+
GirFFI.define_type Derived do |info|
|
38
|
+
info.install_property GObject.param_spec_int("foo", "foo bar",
|
39
|
+
"The Foo Bar Property",
|
40
|
+
10, 20, 15, 3)
|
41
|
+
# assume Base defines a virtual function called 'some_vfunc'
|
42
|
+
info.install_vfunc_implementation :some_vfunc, proc {|obj|
|
43
|
+
#implementation goes here
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
It would be good to replace this with something that's easier to use:
|
48
|
+
* Perhaps auto-register types, like Gtk# does
|
49
|
+
* Perhaps automagically find vfunc implementations, like PyGObject and
|
50
|
+
Ruby-GNOME do
|
51
|
+
* What about properties?
|
52
|
+
|
53
|
+
## Persistent Ruby GObject identity
|
54
|
+
|
55
|
+
GirFFI should make sure that if it gets a pointer to a GObject for which a Ruby
|
56
|
+
object already exists, the existing object is returned. This involves the use
|
57
|
+
of WeakRef, no doubt.
|
58
|
+
|
59
|
+
## Handle fundamental objects that are not GObject.
|
60
|
+
|
61
|
+
This is a big one. See commit 1e9822c7817062a9b853269b9418fd78782090b5 in
|
62
|
+
gobject-introspection, and TestFundamentalObject in Regress.
|
63
|
+
|
64
|
+
The tests for TestFundamentalObject accidentally pass, but there may be
|
65
|
+
hidden issues.
|
66
|
+
|
67
|
+
## Check binding of GObject:
|
68
|
+
|
69
|
+
(11:37:03 PM) walters: the basic story is that GObject should be manually bound
|
70
|
+
(11:47:02 PM) ebassi: the really necessary bits are: GObject/GInitiallyUnowned memory management; properties accessors; GSignal connection API
|
71
|
+
(11:47:15 PM) ebassi: the rest is "nice to have"
|
72
|
+
(11:47:37 PM) ebassi: oh, and probably GBinding - but that's just because I wrote it ;-)
|
73
|
+
|
74
|
+
## Use FFI::DataConverter to automatically convert GObject types
|
75
|
+
|
76
|
+
GirFFI now generates loads of Something.wrap(ptr) calls; Perhaps these can be
|
77
|
+
replace by implementing to_native and from_native in ClassBase and including
|
78
|
+
FFI::DataConverter.
|
79
|
+
|
80
|
+
## Handle Variants more nicely
|
81
|
+
|
82
|
+
Currently, GirFFI requires the user to create GVariant objects by hand, and
|
83
|
+
retrieve values from them by hand as well. Ideally, we would have `.from_ruby` and
|
84
|
+
`#to_ruby` methods or somesuch that do this for us. Some classes, like GAction,
|
85
|
+
require a specifice VariantType to be used consistently. Special logic will have
|
86
|
+
to be put in place for that.
|
87
|
+
|
88
|
+
## See Also
|
89
|
+
|
90
|
+
dnote
|