gir_ffi 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/DESIGN.rdoc +9 -0
  2. data/History.txt +11 -0
  3. data/TODO.rdoc +6 -9
  4. data/examples/01_empty_window.rb +1 -1
  5. data/examples/02_hello_world.rb +4 -4
  6. data/examples/03_upgraded_hello_world.rb +7 -8
  7. data/lib/gir_ffi.rb +0 -4
  8. data/lib/gir_ffi/arg_helper.rb +27 -2
  9. data/lib/gir_ffi/builder.rb +13 -86
  10. data/lib/gir_ffi/builder_helper.rb +2 -15
  11. data/lib/gir_ffi/class_base.rb +51 -0
  12. data/lib/gir_ffi/class_builder.rb +178 -52
  13. data/lib/gir_ffi/function_definition_builder.rb +46 -9
  14. data/lib/gir_ffi/g_object.rb +37 -0
  15. data/lib/gir_ffi/i_arg_info.rb +27 -9
  16. data/lib/gir_ffi/i_base_info.rb +12 -4
  17. data/lib/gir_ffi/i_callable_info.rb +15 -5
  18. data/lib/gir_ffi/i_enum_info.rb +9 -3
  19. data/lib/gir_ffi/i_field_info.rb +12 -4
  20. data/lib/gir_ffi/i_function_info.rb +24 -8
  21. data/lib/gir_ffi/i_object_info.rb +63 -21
  22. data/lib/gir_ffi/i_registered_type_info.rb +11 -0
  23. data/lib/gir_ffi/i_repository.rb +2 -2
  24. data/lib/gir_ffi/i_signal_info.rb +1 -1
  25. data/lib/gir_ffi/i_struct_info.rb +24 -8
  26. data/lib/gir_ffi/i_type_info.rb +24 -8
  27. data/lib/gir_ffi/i_union_info.rb +15 -0
  28. data/lib/gir_ffi/i_value_info.rb +3 -1
  29. data/lib/gir_ffi/i_vfunc_info.rb +12 -1
  30. data/lib/gir_ffi/lib.rb +23 -1
  31. data/lib/gir_ffi/lib_c.rb +1 -1
  32. data/lib/gir_ffi/module_base.rb +19 -0
  33. data/lib/gir_ffi/module_builder.rb +67 -20
  34. data/lib/gir_ffi/overrides/gobject.rb +174 -0
  35. data/lib/gir_ffi/overrides/gtk.rb +26 -9
  36. data/test/builder_test.rb +57 -37
  37. data/test/{base_test.rb → class_base_test.rb} +3 -3
  38. data/test/class_builder_test.rb +48 -6
  39. data/test/everything_test.rb +285 -36
  40. data/test/function_definition_builder_test.rb +11 -9
  41. data/test/g_object_test.rb +22 -0
  42. data/test/gobject_overrides_test.rb +216 -0
  43. data/test/i_object_info_test.rb +21 -0
  44. data/test/module_builder_test.rb +54 -0
  45. data/test/test_helper.rb +6 -4
  46. metadata +18 -14
  47. data/lib/gir_ffi/base.rb +0 -25
  48. data/lib/gir_ffi/constructor_definition_builder.rb +0 -20
  49. data/lib/gir_ffi/g_type.rb +0 -14
  50. data/lib/gir_ffi/method_missing_definition_builder.rb +0 -59
  51. data/test/constructor_definition_builder_test.rb +0 -19
  52. 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
-
@@ -1,14 +0,0 @@
1
- require 'ffi'
2
-
3
- module GirFFI
4
- module GType
5
- def self.init; Lib::g_type_init; end
6
- module Lib
7
- extend FFI::Library
8
- ffi_lib "gobject-2.0"
9
- attach_function :g_type_init, [], :void
10
- end
11
- end
12
- end
13
-
14
-
@@ -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