gir_ffi 0.0.10 → 0.0.11
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.
- data/History.txt +11 -0
- data/README.rdoc +28 -14
- data/Rakefile +1 -1
- data/TODO.rdoc +3 -24
- data/examples/05_notification.rb +35 -0
- data/lib/gir_ffi/arg_helper.rb +15 -279
- data/lib/gir_ffi/builder/argument/base.rb +110 -0
- data/lib/gir_ffi/builder/argument/hash_table_base.rb +20 -0
- data/lib/gir_ffi/builder/argument/in_base.rb +19 -0
- data/lib/gir_ffi/builder/argument/in_out_base.rb +25 -0
- data/lib/gir_ffi/builder/argument/list_base.rb +16 -0
- data/lib/gir_ffi/builder/argument/out_base.rb +27 -0
- data/lib/gir_ffi/builder/argument.rb +167 -357
- data/lib/gir_ffi/builder/function.rb +2 -0
- data/lib/gir_ffi/builder/module.rb +2 -2
- data/lib/gir_ffi/builder/type/base.rb +7 -0
- data/lib/gir_ffi/builder/type/callback.rb +1 -8
- data/lib/gir_ffi/builder/type/constant.rb +1 -6
- data/lib/gir_ffi/builder/type/enum.rb +2 -7
- data/lib/gir_ffi/builder/type/interface.rb +12 -14
- data/lib/gir_ffi/builder/type/object.rb +32 -13
- data/lib/gir_ffi/builder/type/registered_type.rb +1 -78
- data/lib/gir_ffi/builder/type/struct.rb +2 -0
- data/lib/gir_ffi/builder/type/struct_based.rb +9 -24
- data/lib/gir_ffi/builder/type/unintrospectable.rb +63 -0
- data/lib/gir_ffi/builder/type/union.rb +8 -7
- data/lib/gir_ffi/builder/type/with_layout.rb +43 -0
- data/lib/gir_ffi/builder/type/with_methods.rb +61 -0
- data/lib/gir_ffi/builder.rb +39 -0
- data/lib/gir_ffi/callback_helper.rb +58 -0
- data/lib/gir_ffi/class_base.rb +17 -5
- data/lib/gir_ffi/i_repository.rb +0 -4
- data/lib/gir_ffi/in_out_pointer.rb +76 -0
- data/lib/gir_ffi/in_pointer.rb +46 -0
- data/lib/gir_ffi/interface_base.rb +12 -0
- data/lib/gir_ffi/module_base.rb +7 -3
- data/lib/gir_ffi/overrides/glib.rb +14 -3
- data/lib/gir_ffi/overrides/gobject.rb +37 -15
- data/lib/gir_ffi/overrides/gtk.rb +1 -1
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi.rb +3 -0
- data/tasks/rdoc.rake +6 -0
- data/tasks/test.rake +22 -3
- data/tasks/yardoc.rake +6 -0
- data/test/arg_helper_test.rb +2 -72
- data/test/builder_test.rb +15 -19
- data/test/function_definition_builder_test.rb +30 -37
- data/test/g_object_overrides_test.rb +29 -1
- data/test/glib_overrides_test.rb +4 -0
- data/test/gtk_overrides_test.rb +21 -15
- data/test/i_repository_test.rb +2 -1
- data/test/{generated_gimarshallingtests_test.rb → integration/generated_gimarshallingtests_test.rb} +1 -1
- data/test/integration/generated_gio_test.rb +98 -0
- data/test/integration/generated_gobject_test.rb +30 -0
- data/test/{generated_gtk_test.rb → integration/generated_gtk_test.rb} +5 -5
- data/test/{generated_regress_test.rb → integration/generated_regress_test.rb} +19 -5
- data/test/interface_type_builder_test.rb +1 -1
- data/test/module_builder_test.rb +3 -3
- data/test/test_helper.rb +4 -9
- data/test/type_builder_test.rb +5 -5
- data/test/{dynamic_type_builder_test.rb → unintrospectable_type_builder_test.rb} +12 -8
- data/test/unit/builder_test.rb +31 -0
- data/test/unit/callback_helper_test.rb +19 -0
- data/test/unit/constant_builder_test.rb +5 -0
- data/test/unit/i_constant_info_test.rb +17 -0
- data/test/unit/in_out_pointer_test.rb +118 -0
- data/test/unit/in_pointer_test.rb +69 -0
- data/test/unit/object_type_builder_test.rb +20 -0
- metadata +47 -19
- data/lib/gir_ffi/builder/dynamic_type.rb +0 -41
- data/test/generated_gio_test.rb +0 -39
- data/test/generated_gobject_test.rb +0 -15
- data/test/object_type_builder_test.rb +0 -34
data/test/test_helper.rb
CHANGED
@@ -15,10 +15,6 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
15
15
|
|
16
16
|
require 'gir_ffi'
|
17
17
|
|
18
|
-
# Since the tests will call Gtk+ functions, Gtk+ must be initialized.
|
19
|
-
GirFFI.setup :Gtk, '2.0'
|
20
|
-
Gtk.init
|
21
|
-
|
22
18
|
GirFFI::IRepository.prepend_search_path File.join(File.dirname(__FILE__), 'lib')
|
23
19
|
module GirFFI
|
24
20
|
class IRepository
|
@@ -48,17 +44,16 @@ class MiniTest::Unit::TestCase
|
|
48
44
|
code.gsub(/(^\s*|\s*$)/, "")
|
49
45
|
end
|
50
46
|
|
51
|
-
|
52
|
-
def get_function_introspection_data namespace, function
|
47
|
+
def get_introspection_data namespace, name
|
53
48
|
gir = GirFFI::IRepository.default
|
54
49
|
gir.require namespace, nil
|
55
|
-
gir.find_by_name namespace,
|
50
|
+
gir.find_by_name namespace, name
|
56
51
|
end
|
57
52
|
|
58
|
-
def get_method_introspection_data namespace, klass,
|
53
|
+
def get_method_introspection_data namespace, klass, name
|
59
54
|
gir = GirFFI::IRepository.default
|
60
55
|
gir.require namespace, nil
|
61
|
-
gir.find_by_name(namespace, klass).find_method
|
56
|
+
gir.find_by_name(namespace, klass).find_method name
|
62
57
|
end
|
63
58
|
|
64
59
|
SAVED_MODULES = {}
|
data/test/type_builder_test.rb
CHANGED
@@ -20,7 +20,7 @@ class TypeBuilderTest < MiniTest::Spec
|
|
20
20
|
|
21
21
|
context "for Gtk::Widget" do
|
22
22
|
setup do
|
23
|
-
@cbuilder = GirFFI::Builder::Type::Object.new
|
23
|
+
@cbuilder = GirFFI::Builder::Type::Object.new get_introspection_data('Gtk', 'Widget')
|
24
24
|
end
|
25
25
|
|
26
26
|
context "looking at Gtk::Widget#show" do
|
@@ -39,19 +39,19 @@ class TypeBuilderTest < MiniTest::Spec
|
|
39
39
|
|
40
40
|
context 'the find_signal method' do
|
41
41
|
should 'find the signal "test" for TestObj' do
|
42
|
-
builder = GirFFI::Builder::Type::Object.new
|
42
|
+
builder = GirFFI::Builder::Type::Object.new get_introspection_data('Regress', 'TestObj')
|
43
43
|
sig = builder.find_signal 'test'
|
44
44
|
assert_equal 'test', sig.name
|
45
45
|
end
|
46
46
|
|
47
47
|
should 'find the signal "test" for TestSubObj' do
|
48
|
-
builder = GirFFI::Builder::Type::Object.new
|
48
|
+
builder = GirFFI::Builder::Type::Object.new get_introspection_data('Regress', 'TestSubObj')
|
49
49
|
sig = builder.find_signal 'test'
|
50
50
|
assert_equal 'test', sig.name
|
51
51
|
end
|
52
52
|
|
53
53
|
should 'find the signal "changed" for Gtk::Entry' do
|
54
|
-
builder = GirFFI::Builder::Type::Object.new
|
54
|
+
builder = GirFFI::Builder::Type::Object.new get_introspection_data('Gtk', 'Entry')
|
55
55
|
sig = builder.find_signal 'changed'
|
56
56
|
assert_equal 'changed', sig.name
|
57
57
|
end
|
@@ -59,7 +59,7 @@ class TypeBuilderTest < MiniTest::Spec
|
|
59
59
|
|
60
60
|
context "for GObject::TypeCValue (a union)" do
|
61
61
|
setup do
|
62
|
-
@cbuilder = GirFFI::Builder::Type::Union.new
|
62
|
+
@cbuilder = GirFFI::Builder::Type::Union.new get_introspection_data('GObject', 'TypeCValue')
|
63
63
|
end
|
64
64
|
|
65
65
|
should "returns false looking for a method that doesn't exist" do
|
@@ -1,21 +1,19 @@
|
|
1
1
|
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
describe "GirFFI::Builder::DynamicType" do
|
3
|
+
describe GirFFI::Builder::Type::Unintrospectable do
|
6
4
|
describe "building the GLocalFile type" do
|
7
5
|
before do
|
8
6
|
# Ensure existence of GLocalFile type
|
9
7
|
GirFFI.setup :Gio
|
10
8
|
unless Gio::Lib.respond_to? :g_file_new_for_path
|
11
|
-
Gio.
|
9
|
+
Gio._setup_method "file_new_for_path"
|
12
10
|
end
|
13
|
-
ptr = GirFFI::
|
11
|
+
ptr = GirFFI::InPointer.from :utf8, '/'
|
14
12
|
Gio::Lib.g_file_new_for_path(ptr)
|
15
13
|
|
16
14
|
@gtype = GObject.type_from_name 'GLocalFile'
|
17
|
-
bldr = GirFFI::Builder::
|
18
|
-
@klass = bldr.build_class
|
15
|
+
@bldr = GirFFI::Builder::Type::Unintrospectable.new(@gtype)
|
16
|
+
@klass = @bldr.build_class
|
19
17
|
end
|
20
18
|
|
21
19
|
it "builds a class" do
|
@@ -31,10 +29,16 @@ describe "GirFFI::Builder::DynamicType" do
|
|
31
29
|
end
|
32
30
|
|
33
31
|
it "returns the same class when built again" do
|
34
|
-
other_bldr = GirFFI::Builder::
|
32
|
+
other_bldr = GirFFI::Builder::Type::Unintrospectable.new(@gtype)
|
35
33
|
other_klass = other_bldr.build_class
|
36
34
|
|
37
35
|
assert_equal @klass, other_klass
|
38
36
|
end
|
37
|
+
|
38
|
+
describe "its #find_signal method" do
|
39
|
+
it "works for a signal that doesn't exist" do
|
40
|
+
assert_nil @bldr.find_signal "foo"
|
41
|
+
end
|
42
|
+
end
|
39
43
|
end
|
40
44
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.expand_path('../test_helper.rb', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
describe GirFFI::Builder do
|
4
|
+
describe ".itypeinfo_to_callback_ffitype" do
|
5
|
+
describe "for an :interface argument" do
|
6
|
+
setup do
|
7
|
+
@iface = Object.new
|
8
|
+
stub(@info = Object.new).interface { @iface }
|
9
|
+
stub(@info).tag { :interface }
|
10
|
+
stub(@info).pointer? { false }
|
11
|
+
end
|
12
|
+
|
13
|
+
it "correctly maps a :union argument to :pointer" do
|
14
|
+
stub(@iface).info_type { :union }
|
15
|
+
|
16
|
+
result = GirFFI::Builder.itypeinfo_to_callback_ffitype @info
|
17
|
+
|
18
|
+
assert_equal :pointer, result
|
19
|
+
end
|
20
|
+
|
21
|
+
it "correctly maps a :flags argument to :int32" do
|
22
|
+
stub(@iface).info_type { :flags }
|
23
|
+
|
24
|
+
result = GirFFI::Builder.itypeinfo_to_callback_ffitype @info
|
25
|
+
|
26
|
+
assert_equal :int32, result
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.expand_path('../test_helper.rb', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
describe GirFFI::CallbackHelper do
|
4
|
+
describe ".map_single_callback_arg" do
|
5
|
+
it "correctly maps a :struct type" do
|
6
|
+
GirFFI.setup :GObject
|
7
|
+
|
8
|
+
cl = GObject::Closure.new_simple GObject::Closure::Struct.size, nil
|
9
|
+
|
10
|
+
cinfo = GirFFI::IRepository.default.find_by_name 'GObject', 'ClosureMarshal'
|
11
|
+
ainfo = cinfo.args[0]
|
12
|
+
|
13
|
+
r = GirFFI::CallbackHelper.map_single_callback_arg cl.to_ptr, ainfo
|
14
|
+
|
15
|
+
assert_instance_of GObject::Closure, r
|
16
|
+
assert_equal r.to_ptr, cl.to_ptr
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.expand_path('../test_helper.rb', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
describe GirFFI::IConstantInfo do
|
4
|
+
describe "for GLib::ALLOCATOR_LIST, a constant of type :gint32" do
|
5
|
+
before do
|
6
|
+
@info = get_introspection_data 'GLib', 'ALLOCATOR_LIST'
|
7
|
+
end
|
8
|
+
|
9
|
+
it "returns :gint32 as its type" do
|
10
|
+
assert_equal :gint32, @info.constant_type.tag
|
11
|
+
end
|
12
|
+
|
13
|
+
it "returns a value union with member :v_int32 with value 1" do
|
14
|
+
assert_equal 1, @info.value[:v_int32]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
require File.expand_path('../test_helper.rb', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'gir_ffi/in_out_pointer'
|
4
|
+
|
5
|
+
describe GirFFI::InOutPointer do
|
6
|
+
describe "an instance created with .from" do
|
7
|
+
setup do
|
8
|
+
@result = GirFFI::InOutPointer.from :gint32, 23
|
9
|
+
end
|
10
|
+
|
11
|
+
it "holds a pointer to the given value" do
|
12
|
+
assert_equal 23, @result.read_int32
|
13
|
+
end
|
14
|
+
|
15
|
+
it "is an instance of GirFFI::InOutPointer" do
|
16
|
+
assert_instance_of GirFFI::InOutPointer, @result
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe ".from" do
|
21
|
+
it "handles :gboolean" do
|
22
|
+
GirFFI::InOutPointer.from :gboolean, false
|
23
|
+
end
|
24
|
+
|
25
|
+
it "handles :utf8" do
|
26
|
+
GirFFI::InOutPointer.from :utf8, "Hello"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "an instance created with .from_array" do
|
31
|
+
setup do
|
32
|
+
@result = GirFFI::InOutPointer.from_array :gint32, [24, 13]
|
33
|
+
end
|
34
|
+
|
35
|
+
it "holds a pointer to a non-null pointer" do
|
36
|
+
ptr = @result.read_pointer
|
37
|
+
refute ptr.null?
|
38
|
+
end
|
39
|
+
|
40
|
+
it "holds a pointer to a pointer to the correct input values" do
|
41
|
+
ptr = @result.read_pointer
|
42
|
+
assert_equal [24, 13], [ptr.get_int(0), ptr.get_int(4)]
|
43
|
+
end
|
44
|
+
|
45
|
+
it "is an instance of GirFFI::InPointer" do
|
46
|
+
assert_instance_of GirFFI::InOutPointer, @result
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe ".from_array" do
|
51
|
+
it "returns nil when passed nil" do
|
52
|
+
result = GirFFI::InOutPointer.from_array :gint32, nil
|
53
|
+
assert_nil result
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe "an instance created with .from_array :utf8" do
|
58
|
+
before do
|
59
|
+
@result = GirFFI::InOutPointer.from_array :utf8, ["foo", "bar", "baz"]
|
60
|
+
end
|
61
|
+
|
62
|
+
it "returns a pointer to an array of pointers to strings" do
|
63
|
+
ptr = @result.read_pointer
|
64
|
+
ary = ptr.read_array_of_pointer(3)
|
65
|
+
assert_equal ["foo", "bar", "baz"], ary.map {|p| p.read_string}
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "in instance created with .for" do
|
70
|
+
setup do
|
71
|
+
@result = GirFFI::InOutPointer.for :gint32
|
72
|
+
end
|
73
|
+
|
74
|
+
it "holds a pointer to a null value" do
|
75
|
+
assert_equal 0, @result.read_int32
|
76
|
+
end
|
77
|
+
|
78
|
+
it "is an instance of GirFFI::InOutPointer" do
|
79
|
+
assert_instance_of GirFFI::InOutPointer, @result
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe ".for" do
|
84
|
+
it "handles :gboolean" do
|
85
|
+
GirFFI::InOutPointer.for :gboolean
|
86
|
+
end
|
87
|
+
|
88
|
+
it "handles :utf8" do
|
89
|
+
GirFFI::InOutPointer.for :utf8
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "#to_value" do
|
94
|
+
it "returns the held value" do
|
95
|
+
ptr = GirFFI::InOutPointer.from :gint32, 123
|
96
|
+
assert_equal 123, ptr.to_value
|
97
|
+
end
|
98
|
+
|
99
|
+
describe "for :gboolean values" do
|
100
|
+
it "works when the value is false" do
|
101
|
+
ptr = GirFFI::InOutPointer.from :gboolean, false
|
102
|
+
assert_equal false, ptr.to_value
|
103
|
+
end
|
104
|
+
|
105
|
+
it "works when the value is true" do
|
106
|
+
ptr = GirFFI::InOutPointer.from :gboolean, true
|
107
|
+
assert_equal true, ptr.to_value
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "for :utf8 values" do
|
112
|
+
it "returns the held value" do
|
113
|
+
ptr = GirFFI::InOutPointer.from :utf8, "Some value"
|
114
|
+
assert_equal "Some value", ptr.to_value
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require File.expand_path('../test_helper.rb', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'gir_ffi/in_pointer'
|
4
|
+
|
5
|
+
describe GirFFI::InPointer do
|
6
|
+
describe ".from_array" do
|
7
|
+
it "returns nil when passed nil" do
|
8
|
+
result = GirFFI::InPointer.from_array :gint32, nil
|
9
|
+
assert_nil result
|
10
|
+
end
|
11
|
+
|
12
|
+
it "handles type tag :gtype" do
|
13
|
+
GirFFI::InPointer.from_array :gtype, [2]
|
14
|
+
end
|
15
|
+
|
16
|
+
it "handles type tag :interface_pointer" do
|
17
|
+
GirFFI::InPointer.from_array :interface_pointer, []
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "an instance created with .from_array" do
|
22
|
+
setup do
|
23
|
+
@result = GirFFI::InPointer.from_array :gint32, [24, 13]
|
24
|
+
end
|
25
|
+
|
26
|
+
it "holds a pointer to the correct input values" do
|
27
|
+
assert_equal 24, @result.get_int(0)
|
28
|
+
assert_equal 13, @result.get_int(4)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "is an instance of GirFFI::InPointer" do
|
32
|
+
assert_instance_of GirFFI::InPointer, @result
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "an instance created with .from_array :utf8" do
|
37
|
+
before do
|
38
|
+
@result = GirFFI::InPointer.from_array :utf8, ["foo", "bar", "baz"]
|
39
|
+
end
|
40
|
+
|
41
|
+
it "returns an array of pointers to strings" do
|
42
|
+
ary = @result.read_array_of_pointer(3)
|
43
|
+
assert_equal ["foo", "bar", "baz"], ary.map {|p| p.read_string}
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "an instance created with .from :utf8" do
|
48
|
+
before do
|
49
|
+
@result = GirFFI::InPointer.from :utf8, "foo"
|
50
|
+
end
|
51
|
+
|
52
|
+
it "returns an pointers to the given string" do
|
53
|
+
ary = @result.read_array_of_pointer(3)
|
54
|
+
assert_equal "foo", @result.read_string
|
55
|
+
end
|
56
|
+
|
57
|
+
it "is an instance of GirFFI::InPointer" do
|
58
|
+
assert_instance_of GirFFI::InPointer, @result
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe ".from" do
|
63
|
+
it "returns nil when passed nil" do
|
64
|
+
result = GirFFI::InPointer.from :foo, nil
|
65
|
+
assert_nil result
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.expand_path('../test_helper.rb', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
describe GirFFI::Builder::Type::Object do
|
4
|
+
before do
|
5
|
+
GirFFI.setup :Regress
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "#setup_method" do
|
9
|
+
it "sets up singleton methods defined in a class's parent" do
|
10
|
+
info = get_introspection_data 'Regress', 'TestSubObj'
|
11
|
+
assert_nil info.find_method "static_method"
|
12
|
+
parent = info.parent
|
13
|
+
assert_not_nil parent.find_method "static_method"
|
14
|
+
|
15
|
+
b = GirFFI::Builder::Type::Object.new(info)
|
16
|
+
b.setup_method "static_method"
|
17
|
+
pass
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gir_ffi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 9
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 11
|
10
|
+
version: 0.0.11
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matijs van Zuijlen
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-08-22 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: ffi
|
@@ -86,9 +86,16 @@ files:
|
|
86
86
|
- lib/gir_ffi/g_error.rb
|
87
87
|
- lib/gir_ffi/i_object_info.rb
|
88
88
|
- lib/gir_ffi/builder.rb
|
89
|
-
- lib/gir_ffi/
|
89
|
+
- lib/gir_ffi/in_out_pointer.rb
|
90
|
+
- lib/gir_ffi/builder/argument/list_base.rb
|
91
|
+
- lib/gir_ffi/builder/argument/base.rb
|
92
|
+
- lib/gir_ffi/builder/argument/in_base.rb
|
93
|
+
- lib/gir_ffi/builder/argument/hash_table_base.rb
|
94
|
+
- lib/gir_ffi/builder/argument/out_base.rb
|
95
|
+
- lib/gir_ffi/builder/argument/in_out_base.rb
|
90
96
|
- lib/gir_ffi/builder/module.rb
|
91
97
|
- lib/gir_ffi/builder/function.rb
|
98
|
+
- lib/gir_ffi/builder/type/with_methods.rb
|
92
99
|
- lib/gir_ffi/builder/type/base.rb
|
93
100
|
- lib/gir_ffi/builder/type/constant.rb
|
94
101
|
- lib/gir_ffi/builder/type/interface.rb
|
@@ -97,12 +104,15 @@ files:
|
|
97
104
|
- lib/gir_ffi/builder/type/enum.rb
|
98
105
|
- lib/gir_ffi/builder/type/registered_type.rb
|
99
106
|
- lib/gir_ffi/builder/type/callback.rb
|
107
|
+
- lib/gir_ffi/builder/type/unintrospectable.rb
|
108
|
+
- lib/gir_ffi/builder/type/with_layout.rb
|
100
109
|
- lib/gir_ffi/builder/type/union.rb
|
101
110
|
- lib/gir_ffi/builder/type/object.rb
|
102
111
|
- lib/gir_ffi/builder/type.rb
|
103
112
|
- lib/gir_ffi/builder/argument.rb
|
104
113
|
- lib/gir_ffi/i_enum_info.rb
|
105
114
|
- lib/gir_ffi/i_value_info.rb
|
115
|
+
- lib/gir_ffi/interface_base.rb
|
106
116
|
- lib/gir_ffi/module_base.rb
|
107
117
|
- lib/gir_ffi/i_signal_info.rb
|
108
118
|
- lib/gir_ffi/i_callback_info.rb
|
@@ -113,7 +123,9 @@ files:
|
|
113
123
|
- lib/gir_ffi/i_vfunc_info.rb
|
114
124
|
- lib/gir_ffi/i_constant_info.rb
|
115
125
|
- lib/gir_ffi/class_base.rb
|
126
|
+
- lib/gir_ffi/callback_helper.rb
|
116
127
|
- lib/gir_ffi/i_struct_info.rb
|
128
|
+
- lib/gir_ffi/in_pointer.rb
|
117
129
|
- lib/gir_ffi/i_callable_info.rb
|
118
130
|
- lib/gir_ffi/i_function_info.rb
|
119
131
|
- lib/gir_ffi/i_error_domain_info.rb
|
@@ -130,7 +142,7 @@ files:
|
|
130
142
|
- lib/gir_ffi/i_arg_info.rb
|
131
143
|
- lib/gir_ffi/i_type_info.rb
|
132
144
|
- test/i_repository_test.rb
|
133
|
-
- test/
|
145
|
+
- test/unintrospectable_type_builder_test.rb
|
134
146
|
- test/function_definition_builder_test.rb
|
135
147
|
- test/g_object_test.rb
|
136
148
|
- test/arg_helper_test.rb
|
@@ -138,7 +150,6 @@ files:
|
|
138
150
|
- test/lib/autogen.sh
|
139
151
|
- test/lib/configure.ac
|
140
152
|
- test/lib/m4/jhflags.m4
|
141
|
-
- test/dynamic_type_builder_test.rb
|
142
153
|
- test/class_base_test.rb
|
143
154
|
- test/test_helper.rb
|
144
155
|
- test/girffi_test.rb
|
@@ -146,18 +157,28 @@ files:
|
|
146
157
|
- test/module_builder_test.rb
|
147
158
|
- test/i_object_info_test.rb
|
148
159
|
- test/g_object_overrides_test.rb
|
149
|
-
- test/
|
160
|
+
- test/unit/constant_builder_test.rb
|
161
|
+
- test/unit/in_out_pointer_test.rb
|
162
|
+
- test/unit/callback_helper_test.rb
|
163
|
+
- test/unit/builder_test.rb
|
164
|
+
- test/unit/in_pointer_test.rb
|
165
|
+
- test/unit/object_type_builder_test.rb
|
166
|
+
- test/unit/i_constant_info_test.rb
|
150
167
|
- test/type_builder_test.rb
|
151
168
|
- test/builder_test.rb
|
152
169
|
- test/glib_overrides_test.rb
|
153
170
|
- test/gtk_overrides_test.rb
|
154
|
-
- test/
|
155
|
-
- test/
|
156
|
-
- test/
|
157
|
-
- test/
|
171
|
+
- test/integration/generated_regress_test.rb
|
172
|
+
- test/integration/generated_gtk_test.rb
|
173
|
+
- test/integration/generated_gobject_test.rb
|
174
|
+
- test/integration/generated_gio_test.rb
|
175
|
+
- test/integration/generated_gimarshallingtests_test.rb
|
176
|
+
- tasks/yardoc.rake
|
177
|
+
- tasks/rdoc.rake
|
158
178
|
- tasks/test.rake
|
159
179
|
- tasks/setup.rb
|
160
180
|
- tasks/notes.rake
|
181
|
+
- examples/05_notification.rb
|
161
182
|
- examples/demo_ffi_safe_inherited_layout.rb
|
162
183
|
- examples/04_webkit.rb
|
163
184
|
- examples/demo_ffi_nested_struct.rb
|
@@ -209,26 +230,33 @@ test_files:
|
|
209
230
|
- test/arg_helper_test.rb
|
210
231
|
- test/builder_test.rb
|
211
232
|
- test/class_base_test.rb
|
212
|
-
- test/dynamic_type_builder_test.rb
|
213
233
|
- test/function_definition_builder_test.rb
|
214
234
|
- test/g_object_overrides_test.rb
|
215
235
|
- test/g_object_test.rb
|
216
|
-
- test/generated_gimarshallingtests_test.rb
|
217
|
-
- test/generated_gio_test.rb
|
218
|
-
- test/generated_gobject_test.rb
|
219
|
-
- test/generated_gtk_test.rb
|
220
|
-
- test/generated_regress_test.rb
|
221
236
|
- test/girffi_test.rb
|
222
237
|
- test/glib_overrides_test.rb
|
223
238
|
- test/gtk_overrides_test.rb
|
224
239
|
- test/i_object_info_test.rb
|
225
240
|
- test/i_repository_test.rb
|
241
|
+
- test/integration/generated_gimarshallingtests_test.rb
|
242
|
+
- test/integration/generated_gio_test.rb
|
243
|
+
- test/integration/generated_gobject_test.rb
|
244
|
+
- test/integration/generated_gtk_test.rb
|
245
|
+
- test/integration/generated_regress_test.rb
|
226
246
|
- test/interface_type_builder_test.rb
|
227
247
|
- test/lib/Makefile.am
|
228
248
|
- test/lib/autogen.sh
|
229
249
|
- test/lib/configure.ac
|
230
250
|
- test/lib/m4/jhflags.m4
|
231
251
|
- test/module_builder_test.rb
|
232
|
-
- test/object_type_builder_test.rb
|
233
252
|
- test/test_helper.rb
|
234
253
|
- test/type_builder_test.rb
|
254
|
+
- test/unintrospectable_type_builder_test.rb
|
255
|
+
- test/unit/builder_test.rb
|
256
|
+
- test/unit/callback_helper_test.rb
|
257
|
+
- test/unit/constant_builder_test.rb
|
258
|
+
- test/unit/i_constant_info_test.rb
|
259
|
+
- test/unit/in_out_pointer_test.rb
|
260
|
+
- test/unit/in_pointer_test.rb
|
261
|
+
- test/unit/object_type_builder_test.rb
|
262
|
+
has_rdoc:
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module GirFFI
|
2
|
-
module Builder
|
3
|
-
class DynamicType
|
4
|
-
CACHE = {}
|
5
|
-
|
6
|
-
def initialize gtype
|
7
|
-
@gtype = gtype
|
8
|
-
end
|
9
|
-
|
10
|
-
def build_class
|
11
|
-
CACHE[@gtype] ||= Class.new(parent).tap do |klass|
|
12
|
-
interfaces.each do |iface|
|
13
|
-
klass.class_eval do
|
14
|
-
include iface
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
def parent
|
23
|
-
parent_type = ::GObject.type_parent @gtype
|
24
|
-
info = gir.find_by_gtype(parent_type)
|
25
|
-
GirFFI::Builder.build_class info
|
26
|
-
end
|
27
|
-
|
28
|
-
def interfaces
|
29
|
-
iface_types = ::GObject.type_interfaces @gtype
|
30
|
-
iface_types.map do |gtype|
|
31
|
-
info = gir.find_by_gtype gtype
|
32
|
-
GirFFI::Builder.build_class info
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def gir
|
37
|
-
@gir ||= GirFFI::IRepository.default
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
data/test/generated_gio_test.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
# Tests generated methods and functions in the Gio namespace.
|
4
|
-
class GeneratedGioTest < MiniTest::Spec
|
5
|
-
context "In the generated Gio module" do
|
6
|
-
setup do
|
7
|
-
GirFFI.setup :Gio
|
8
|
-
end
|
9
|
-
|
10
|
-
describe "#file_new_from_path, a method returning an interface," do
|
11
|
-
it "does not throw an error when generated" do
|
12
|
-
assert_nothing_raised {
|
13
|
-
Gio.file_new_for_path('/')
|
14
|
-
}
|
15
|
-
end
|
16
|
-
|
17
|
-
it "returns an object of a more specific class" do
|
18
|
-
file = Gio.file_new_for_path('/')
|
19
|
-
refute_instance_of Gio::File, file
|
20
|
-
assert_includes file.class.ancestors, Gio::File
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
context "the FileInfo class" do
|
25
|
-
context "an instance" do
|
26
|
-
setup do
|
27
|
-
file = Gio.file_new_for_path('/')
|
28
|
-
@fileinfo = file.query_info "*", :none, nil
|
29
|
-
end
|
30
|
-
|
31
|
-
should "hava a working #get_attribute_type method" do
|
32
|
-
type = @fileinfo.get_attribute_type "standard::display-name"
|
33
|
-
assert_equal :string, type
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
describe "The generated GObject module" do
|
4
|
-
before do
|
5
|
-
GirFFI.setup :GObject
|
6
|
-
end
|
7
|
-
|
8
|
-
describe "#type_interfaces" do
|
9
|
-
it "works, showing that returning an array of GType works" do
|
10
|
-
tp = GObject.type_from_name 'GTypeModule'
|
11
|
-
ifcs = GObject.type_interfaces tp
|
12
|
-
assert_equal 1, ifcs.size
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|