gir_ffi 0.0.3 → 0.0.4
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/DESIGN.rdoc +9 -0
- data/History.txt +11 -0
- data/TODO.rdoc +6 -9
- data/examples/01_empty_window.rb +1 -1
- data/examples/02_hello_world.rb +4 -4
- data/examples/03_upgraded_hello_world.rb +7 -8
- data/lib/gir_ffi.rb +0 -4
- data/lib/gir_ffi/arg_helper.rb +27 -2
- data/lib/gir_ffi/builder.rb +13 -86
- data/lib/gir_ffi/builder_helper.rb +2 -15
- data/lib/gir_ffi/class_base.rb +51 -0
- data/lib/gir_ffi/class_builder.rb +178 -52
- data/lib/gir_ffi/function_definition_builder.rb +46 -9
- data/lib/gir_ffi/g_object.rb +37 -0
- data/lib/gir_ffi/i_arg_info.rb +27 -9
- data/lib/gir_ffi/i_base_info.rb +12 -4
- data/lib/gir_ffi/i_callable_info.rb +15 -5
- data/lib/gir_ffi/i_enum_info.rb +9 -3
- data/lib/gir_ffi/i_field_info.rb +12 -4
- data/lib/gir_ffi/i_function_info.rb +24 -8
- data/lib/gir_ffi/i_object_info.rb +63 -21
- data/lib/gir_ffi/i_registered_type_info.rb +11 -0
- data/lib/gir_ffi/i_repository.rb +2 -2
- data/lib/gir_ffi/i_signal_info.rb +1 -1
- data/lib/gir_ffi/i_struct_info.rb +24 -8
- data/lib/gir_ffi/i_type_info.rb +24 -8
- data/lib/gir_ffi/i_union_info.rb +15 -0
- data/lib/gir_ffi/i_value_info.rb +3 -1
- data/lib/gir_ffi/i_vfunc_info.rb +12 -1
- data/lib/gir_ffi/lib.rb +23 -1
- data/lib/gir_ffi/lib_c.rb +1 -1
- data/lib/gir_ffi/module_base.rb +19 -0
- data/lib/gir_ffi/module_builder.rb +67 -20
- data/lib/gir_ffi/overrides/gobject.rb +174 -0
- data/lib/gir_ffi/overrides/gtk.rb +26 -9
- data/test/builder_test.rb +57 -37
- data/test/{base_test.rb → class_base_test.rb} +3 -3
- data/test/class_builder_test.rb +48 -6
- data/test/everything_test.rb +285 -36
- data/test/function_definition_builder_test.rb +11 -9
- data/test/g_object_test.rb +22 -0
- data/test/gobject_overrides_test.rb +216 -0
- data/test/i_object_info_test.rb +21 -0
- data/test/module_builder_test.rb +54 -0
- data/test/test_helper.rb +6 -4
- metadata +18 -14
- data/lib/gir_ffi/base.rb +0 -25
- data/lib/gir_ffi/constructor_definition_builder.rb +0 -20
- data/lib/gir_ffi/g_type.rb +0 -14
- data/lib/gir_ffi/method_missing_definition_builder.rb +0 -59
- data/test/constructor_definition_builder_test.rb +0 -19
- data/test/g_type_test.rb +0 -22
@@ -1,20 +0,0 @@
|
|
1
|
-
module GirFFI
|
2
|
-
# Implements the creation of a Ruby constructor definition out of a GIR
|
3
|
-
# IFunctionInfo, if it represents a constructor.
|
4
|
-
class ConstructorDefinitionBuilder < FunctionDefinitionBuilder
|
5
|
-
private
|
6
|
-
|
7
|
-
def process_return_value
|
8
|
-
end
|
9
|
-
|
10
|
-
def filled_out_template
|
11
|
-
return <<-CODE
|
12
|
-
def #{@info.name} #{@inargs.join(', ')}
|
13
|
-
#{@pre.join("\n")}
|
14
|
-
_real_new #{@libmodule}.#{@info.symbol}(#{@callargs.join(', ')})
|
15
|
-
end
|
16
|
-
CODE
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
data/lib/gir_ffi/g_type.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
module GirFFI
|
2
|
-
# Base class for builders of #method_missing definitions.
|
3
|
-
class MethodMissingDefinitionBuilder
|
4
|
-
def initialize lib, namespace
|
5
|
-
@lib = lib
|
6
|
-
@namespace = namespace
|
7
|
-
end
|
8
|
-
|
9
|
-
def generate
|
10
|
-
args = arguments.map {|arg| "\"#{arg}\""}
|
11
|
-
|
12
|
-
return <<-CODE
|
13
|
-
def #{slf}method_missing method, *arguments, &block
|
14
|
-
result = GirFFI::Builder.#{fn} #{args.join ', '}, method.to_s
|
15
|
-
return super unless result
|
16
|
-
self.send method, *arguments, &block
|
17
|
-
end
|
18
|
-
CODE
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
# Builds a #method_missing for a module. This method_missing will be
|
23
|
-
# called for missing module methods; these modules are not meant for
|
24
|
-
# #include'ing.
|
25
|
-
class ModuleMethodMissingDefinitionBuilder < MethodMissingDefinitionBuilder
|
26
|
-
private
|
27
|
-
|
28
|
-
def slf; "self."; end
|
29
|
-
def fn; "setup_function"; end
|
30
|
-
def arguments; [@namespace]; end
|
31
|
-
def libs; [@lib]; end
|
32
|
-
end
|
33
|
-
|
34
|
-
# Builds a #method_missing for missing instance methods.
|
35
|
-
class InstanceMethodMissingDefinitionBuilder < MethodMissingDefinitionBuilder
|
36
|
-
def initialize lib, modul, namespace, classname
|
37
|
-
super lib, namespace
|
38
|
-
@classname = classname
|
39
|
-
@module = modul
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
def slf; ""; end
|
45
|
-
def fn; "setup_instance_method"; end
|
46
|
-
def arguments; [@namespace, @classname]; end
|
47
|
-
def libs; [@lib, @module]; end
|
48
|
-
end
|
49
|
-
|
50
|
-
# Builds a #method_missing for missing class methods.
|
51
|
-
class ClassMethodMissingDefinitionBuilder < InstanceMethodMissingDefinitionBuilder
|
52
|
-
private
|
53
|
-
|
54
|
-
def slf; "self."; end
|
55
|
-
def fn; "setup_method"; end
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
|
-
require 'gir_ffi'
|
3
|
-
|
4
|
-
class ConstructorDefinitionBuilderTest < Test::Unit::TestCase
|
5
|
-
context "The ConstructorDefinitionBuilder" do
|
6
|
-
should "build correct definition of Gtk::Window#new" do
|
7
|
-
go = get_method_introspection_data 'Gtk', 'Window', 'new'
|
8
|
-
cbuilder = GirFFI::ConstructorDefinitionBuilder.new go, Lib
|
9
|
-
code = cbuilder.generate
|
10
|
-
|
11
|
-
expected =
|
12
|
-
"def new type
|
13
|
-
_real_new Lib.gtk_window_new(type)
|
14
|
-
end"
|
15
|
-
|
16
|
-
assert_equal cws(expected), cws(code)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
data/test/g_type_test.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require File.expand_path('test_helper.rb', File.dirname(__FILE__))
|
2
|
-
require 'gir_ffi/g_type'
|
3
|
-
|
4
|
-
class HelperGTypeTest < Test::Unit::TestCase
|
5
|
-
context "The GType module" do
|
6
|
-
should "have init as a public method" do
|
7
|
-
assert GirFFI::GType.respond_to?('init')
|
8
|
-
end
|
9
|
-
|
10
|
-
should "not have g_type_init as a public method" do
|
11
|
-
assert GirFFI::GType.respond_to?('g_type_init') == false
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|
15
|
-
context "the init method" do
|
16
|
-
should "not raise an error" do
|
17
|
-
assert_nothing_raised do
|
18
|
-
GirFFI::GType.init
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|