rbplusplus 0.1.1 → 0.8

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.
Files changed (54) hide show
  1. data/Rakefile +31 -15
  2. data/TODO +20 -0
  3. data/lib/rbplusplus/builders/base.rb +148 -8
  4. data/lib/rbplusplus/builders/class.rb +106 -31
  5. data/lib/rbplusplus/builders/enumeration.rb +40 -0
  6. data/lib/rbplusplus/builders/extension.rb +31 -6
  7. data/lib/rbplusplus/builders/module.rb +12 -6
  8. data/lib/rbplusplus/builders/types_manager.rb +93 -0
  9. data/lib/rbplusplus/extension.rb +69 -41
  10. data/lib/rbplusplus/module.rb +3 -1
  11. data/lib/rbplusplus/transformers/class.rb +67 -0
  12. data/lib/rbplusplus/transformers/constructor.rb +4 -0
  13. data/lib/rbplusplus/transformers/function.rb +27 -0
  14. data/lib/rbplusplus/transformers/method.rb +4 -0
  15. data/lib/rbplusplus/transformers/module.rb +71 -0
  16. data/lib/rbplusplus/transformers/node.rb +77 -0
  17. data/lib/rbplusplus/transformers/node_cache.rb +19 -0
  18. data/lib/rbplusplus/transformers/node_reference.rb +30 -0
  19. data/lib/rbplusplus/transformers/rbgccxml.rb +6 -0
  20. data/lib/rbplusplus/writers/extension.rb +33 -25
  21. data/lib/rbplusplus/writers/multiple_files_writer.rb +42 -2
  22. data/lib/rbplusplus/writers/single_file_writer.rb +5 -0
  23. data/lib/rbplusplus.rb +24 -0
  24. data/test/class_methods_test.rb +55 -0
  25. data/test/classes_test.rb +0 -25
  26. data/test/compiling_test.rb +30 -0
  27. data/test/constructors_test.rb +40 -0
  28. data/test/enumerations_test.rb +63 -0
  29. data/test/file_writers_test.rb +56 -4
  30. data/test/generated/extconf.rb +25 -5
  31. data/test/headers/class_methods.h +41 -0
  32. data/test/headers/complex_static_methods.h +25 -0
  33. data/test/headers/constructors.h +47 -0
  34. data/test/headers/enums.h +77 -0
  35. data/test/headers/external_mapping.h +16 -0
  36. data/test/headers/external_mapping_rice.h +20 -0
  37. data/test/headers/include/helper.h +1 -0
  38. data/test/headers/nested_struct.h +20 -0
  39. data/test/headers/overload.h +28 -0
  40. data/test/headers/subclass.h +42 -0
  41. data/test/headers/to_from_ruby.h +78 -0
  42. data/test/headers/to_from_ruby_source.cpp +22 -0
  43. data/test/headers/ugly_helper.h +18 -0
  44. data/test/headers/ugly_interface.h +115 -0
  45. data/test/headers/ugly_interface_ns.h +8 -0
  46. data/test/nested_test.rb +26 -0
  47. data/test/object_persistence_test.rb +44 -0
  48. data/test/overloading_test.rb +36 -0
  49. data/test/struct_test.rb +22 -0
  50. data/test/subclass_test.rb +31 -0
  51. data/test/test_helper.rb +5 -0
  52. data/test/to_from_ruby_test.rb +24 -0
  53. data/test/wrap_as_test.rb +114 -0
  54. metadata +43 -6
@@ -0,0 +1,114 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ context "Ugly interfaces cleaner" do
4
+
5
+ specify "should map functions detailed" do
6
+ node = nil
7
+
8
+
9
+ Extension.new "ui" do |e|
10
+ e.sources full_dir("headers/ugly_interface_ns.h"),
11
+ :includes => full_dir("headers/ugly_helper.h")
12
+ node = e.namespace("UI")
13
+
14
+ # test the no export option
15
+ node.functions("uiIgnore").ignore
16
+
17
+ # static method wrapping
18
+ node.functions("IlikeVectors").wrap_as("create_vector").calls("newInstanceButBetter")
19
+
20
+ e.module "UI" do |m|
21
+ m.module "Math" do |m_math|
22
+ #function wrapping
23
+ m_math.includes node.functions("uiAdd").wrap_as("add")
24
+ # Wrap_as changes the name of the node
25
+ node.functions("add").ignored?.should == false
26
+ node.functions("add").moved?.should == true
27
+
28
+ m_math.includes node.functions("ui_Subtract").wrap_as("subtract")
29
+ m_math.includes node.namespaces("DMath").functions("divide")
30
+ end
31
+
32
+ #class wrapping
33
+ vector = node.classes("C_UIVector").wrap_as("Vector")
34
+ vector.methods("x_").wrap_as("x")
35
+ vector.methods("set_x").wrap_as("x=")
36
+
37
+ # This is ignored because the C function Vector_y is not defined
38
+ vector.methods("y_").calls("Vector_y").ignore
39
+ vector.methods("y_").qualified_name.should == "Vector_y"
40
+
41
+ m.includes vector
42
+
43
+ #mapping stray functions to singleton methods
44
+ modder = node.namespaces("I_LEARN_C").classes("Modder").wrap_as("Modulus")
45
+ modder.includes node.namespaces("I_LEARN_C").functions("mod")
46
+ modder.includes node.namespaces("I_LEARN_C").functions("mod2").wrap_as("method_mod").as_instance_method
47
+ m.includes modder
48
+
49
+ nc = node.classes("NoConstructor")
50
+ nc.constructors.each { |c| c.ignore }
51
+ m.includes nc
52
+
53
+ m.includes node.classes("Outside")
54
+ node.classes("Outside").includes node.classes("Inside")
55
+ end
56
+ end
57
+
58
+ require 'ui'
59
+
60
+ should.raise NoMethodError do
61
+ ui_ignore()
62
+ end
63
+
64
+ should.raise NoMethodError do
65
+ ui_add(1,2)
66
+ end
67
+
68
+ should.not.raise NoMethodError do
69
+ UI::Math::add(1,2).should == 3
70
+ end
71
+
72
+ should.raise NoMethodError do
73
+ ui_subtract(2,1)
74
+ end
75
+
76
+ should.not.raise NoMethodError do
77
+ UI::Math::subtract(2,1).should == 1
78
+ end
79
+
80
+ should.raise NameError do
81
+ C_UIVector.new
82
+ end
83
+
84
+ should.not.raise NameError do
85
+ v = UI::Vector.new
86
+ v.x = 3
87
+ v.x.should == 3
88
+ end
89
+
90
+ should.raise NameError do
91
+ UI::DMath::divide(1.0,2.0)
92
+ end
93
+
94
+ should.not.raise NoMethodError do
95
+ UI::Modulus.mod(3,2).should == 1
96
+ end
97
+
98
+ should.raise TypeError do
99
+ UI::Modulus.new.method_mod(2)
100
+ end
101
+
102
+ should.not.raise NoMethodError do
103
+ UI::Math::divide(2,1).should == 2
104
+ end
105
+
106
+ should.raise TypeError do
107
+ UI::NoConstructor.new
108
+ end
109
+
110
+ should.not.raise NoMethodError do
111
+ UI::Outside::Inside.new
112
+ end
113
+ end
114
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbplusplus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: "0.8"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Roelofs
@@ -9,26 +9,28 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-12 00:00:00 -04:00
12
+ date: 2008-07-22 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rbgccxml
17
+ type: :runtime
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements:
20
21
  - - "="
21
22
  - !ruby/object:Gem::Version
22
- version: 0.1.1
23
+ version: "0.8"
23
24
  version:
24
25
  - !ruby/object:Gem::Dependency
25
26
  name: rice
27
+ type: :runtime
26
28
  version_requirement:
27
29
  version_requirements: !ruby/object:Gem::Requirement
28
30
  requirements:
29
- - - "="
31
+ - - ">="
30
32
  - !ruby/object:Gem::Version
31
- version: 1.0.1
33
+ version: 1.0.2
32
34
  version:
33
35
  description: Rb++ combines the powerful query interface of rbgccxml and the Rice library to make Ruby wrapping extensions easier to write than ever.
34
36
  email: jameskilton@gmail.com
@@ -43,11 +45,22 @@ files:
43
45
  - Rakefile
44
46
  - lib/rbplusplus/extension.rb
45
47
  - lib/rbplusplus/module.rb
48
+ - lib/rbplusplus/builders/enumeration.rb
46
49
  - lib/rbplusplus/builders/extension.rb
47
50
  - lib/rbplusplus/builders/module.rb
51
+ - lib/rbplusplus/builders/types_manager.rb
48
52
  - lib/rbplusplus/builders/base.rb
49
53
  - lib/rbplusplus/builders/class.rb
50
54
  - lib/rbplusplus/rbplusplus.rb
55
+ - lib/rbplusplus/transformers/function.rb
56
+ - lib/rbplusplus/transformers/node_cache.rb
57
+ - lib/rbplusplus/transformers/node.rb
58
+ - lib/rbplusplus/transformers/module.rb
59
+ - lib/rbplusplus/transformers/constructor.rb
60
+ - lib/rbplusplus/transformers/node_reference.rb
61
+ - lib/rbplusplus/transformers/method.rb
62
+ - lib/rbplusplus/transformers/class.rb
63
+ - lib/rbplusplus/transformers/rbgccxml.rb
51
64
  - lib/rbplusplus/writers/extension.rb
52
65
  - lib/rbplusplus/writers/base.rb
53
66
  - lib/rbplusplus/writers/single_file_writer.rb
@@ -78,25 +91,49 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
91
  requirements: []
79
92
 
80
93
  rubyforge_project: rbplusplus
81
- rubygems_version: 1.1.1
94
+ rubygems_version: 1.2.0
82
95
  signing_key:
83
96
  specification_version: 2
84
97
  summary: Ruby library to generate Rice wrapper code
85
98
  test_files:
86
99
  - test/classes_test.rb
87
100
  - test/extension_test.rb
101
+ - test/nested_test.rb
102
+ - test/subclass_test.rb
103
+ - test/constructors_test.rb
104
+ - test/overloading_test.rb
105
+ - test/wrap_as_test.rb
106
+ - test/object_persistence_test.rb
88
107
  - test/generated/extconf.rb
108
+ - test/class_methods_test.rb
89
109
  - test/compiling_test.rb
110
+ - test/to_from_ruby_test.rb
111
+ - test/struct_test.rb
112
+ - test/enumerations_test.rb
90
113
  - test/modules_test.rb
91
114
  - test/functions_test.rb
92
115
  - test/test_helper.rb
93
116
  - test/file_writers_test.rb
94
117
  - test/headers/Subtracter.hpp
118
+ - test/headers/complex_static_methods.h
119
+ - test/headers/ugly_interface.h
120
+ - test/headers/external_mapping.h
95
121
  - test/headers/functions.h
122
+ - test/headers/to_from_ruby_source.cpp
96
123
  - test/headers/empty.h
124
+ - test/headers/enums.h
125
+ - test/headers/ugly_interface_ns.h
126
+ - test/headers/nested_struct.h
127
+ - test/headers/subclass.h
97
128
  - test/headers/requires_define.h
129
+ - test/headers/class_methods.h
130
+ - test/headers/ugly_helper.h
131
+ - test/headers/constructors.h
98
132
  - test/headers/nested_classes.h
99
133
  - test/headers/with_includes.h
134
+ - test/headers/to_from_ruby.h
135
+ - test/headers/external_mapping_rice.h
100
136
  - test/headers/include
101
137
  - test/headers/include/helper.h
138
+ - test/headers/overload.h
102
139
  - test/headers/Adder.h