rice 3.0.0 → 4.0.3

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 (238) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +121 -0
  3. data/CONTRIBUTORS.md +19 -0
  4. data/Gemfile +3 -0
  5. data/README.md +44 -1025
  6. data/Rakefile +95 -12
  7. data/include/rice/rice.hpp +7766 -0
  8. data/include/rice/stl.hpp +1113 -0
  9. data/lib/mkmf-rice.rb +127 -0
  10. data/lib/version.rb +3 -0
  11. data/rice/Address_Registration_Guard.ipp +75 -32
  12. data/rice/Address_Registration_Guard_defn.hpp +60 -56
  13. data/rice/Arg.hpp +80 -4
  14. data/rice/Arg.ipp +51 -0
  15. data/rice/Constructor.hpp +12 -14
  16. data/rice/Data_Object.ipp +234 -107
  17. data/rice/Data_Object_defn.hpp +77 -117
  18. data/rice/Data_Type.hpp +1 -2
  19. data/rice/Data_Type.ipp +251 -295
  20. data/rice/Data_Type_defn.hpp +175 -243
  21. data/rice/Director.hpp +11 -6
  22. data/rice/Enum.hpp +54 -104
  23. data/rice/Enum.ipp +104 -230
  24. data/rice/Exception.hpp +2 -8
  25. data/rice/Exception.ipp +65 -0
  26. data/rice/Exception_defn.hpp +46 -47
  27. data/rice/Identifier.hpp +28 -28
  28. data/rice/Identifier.ipp +23 -27
  29. data/rice/Return.hpp +39 -0
  30. data/rice/Return.ipp +33 -0
  31. data/rice/detail/Exception_Handler.ipp +22 -62
  32. data/rice/detail/Exception_Handler_defn.hpp +76 -91
  33. data/rice/detail/Iterator.hpp +18 -88
  34. data/rice/detail/Iterator.ipp +47 -0
  35. data/rice/detail/Jump_Tag.hpp +21 -0
  36. data/rice/detail/MethodInfo.hpp +44 -0
  37. data/rice/detail/MethodInfo.ipp +78 -0
  38. data/rice/detail/NativeAttribute.hpp +53 -0
  39. data/rice/detail/NativeAttribute.ipp +83 -0
  40. data/rice/detail/NativeFunction.hpp +69 -0
  41. data/rice/detail/NativeFunction.ipp +248 -0
  42. data/rice/detail/RubyFunction.hpp +39 -0
  43. data/rice/detail/RubyFunction.ipp +92 -0
  44. data/rice/detail/Type.hpp +29 -0
  45. data/rice/detail/Type.ipp +138 -0
  46. data/rice/detail/TypeRegistry.hpp +50 -0
  47. data/rice/detail/TypeRegistry.ipp +106 -0
  48. data/rice/detail/Wrapper.hpp +51 -0
  49. data/rice/detail/Wrapper.ipp +151 -0
  50. data/rice/detail/default_allocation_func.hpp +8 -19
  51. data/rice/detail/default_allocation_func.ipp +9 -8
  52. data/rice/detail/from_ruby.hpp +2 -37
  53. data/rice/detail/from_ruby.ipp +1020 -46
  54. data/rice/detail/from_ruby_defn.hpp +38 -0
  55. data/rice/detail/function_traits.hpp +124 -0
  56. data/rice/detail/method_data.hpp +23 -15
  57. data/rice/detail/method_data.ipp +53 -0
  58. data/rice/detail/rice_traits.hpp +116 -0
  59. data/rice/detail/ruby.hpp +9 -46
  60. data/rice/detail/to_ruby.hpp +3 -17
  61. data/rice/detail/to_ruby.ipp +409 -31
  62. data/rice/detail/to_ruby_defn.hpp +48 -0
  63. data/rice/forward_declares.ipp +82 -0
  64. data/rice/global_function.hpp +16 -20
  65. data/rice/global_function.ipp +8 -17
  66. data/rice/rice.hpp +59 -0
  67. data/rice/ruby_mark.hpp +5 -3
  68. data/rice/ruby_try_catch.hpp +4 -4
  69. data/rice/stl.hpp +11 -0
  70. data/sample/callbacks/extconf.rb +3 -0
  71. data/sample/callbacks/sample_callbacks.cpp +10 -13
  72. data/sample/enum/extconf.rb +3 -0
  73. data/sample/enum/sample_enum.cpp +3 -17
  74. data/sample/enum/test.rb +2 -2
  75. data/sample/inheritance/animals.cpp +8 -24
  76. data/sample/inheritance/extconf.rb +3 -0
  77. data/sample/inheritance/test.rb +1 -1
  78. data/sample/map/extconf.rb +3 -0
  79. data/sample/map/map.cpp +10 -18
  80. data/sample/map/test.rb +1 -1
  81. data/test/embed_ruby.cpp +18 -5
  82. data/test/ext/t1/extconf.rb +3 -0
  83. data/test/ext/t1/t1.cpp +1 -3
  84. data/test/ext/t2/extconf.rb +3 -0
  85. data/test/ext/t2/t2.cpp +1 -1
  86. data/test/extconf.rb +23 -0
  87. data/test/ruby/test_callbacks_sample.rb +28 -0
  88. data/test/ruby/test_multiple_extensions.rb +18 -0
  89. data/test/ruby/test_multiple_extensions_same_class.rb +14 -0
  90. data/test/ruby/test_multiple_extensions_with_inheritance.rb +20 -0
  91. data/test/test_Address_Registration_Guard.cpp +23 -10
  92. data/test/test_Array.cpp +129 -73
  93. data/test/test_Attribute.cpp +147 -0
  94. data/test/test_Builtin_Object.cpp +34 -14
  95. data/test/test_Class.cpp +149 -275
  96. data/test/test_Constructor.cpp +10 -9
  97. data/test/test_Data_Object.cpp +133 -192
  98. data/test/test_Data_Type.cpp +322 -252
  99. data/test/test_Director.cpp +54 -41
  100. data/test/test_Enum.cpp +228 -103
  101. data/test/test_Exception.cpp +5 -6
  102. data/test/test_Hash.cpp +31 -30
  103. data/test/test_Identifier.cpp +4 -5
  104. data/test/test_Inheritance.cpp +221 -0
  105. data/test/test_Iterator.cpp +161 -0
  106. data/test/test_Jump_Tag.cpp +1 -1
  107. data/test/test_Keep_Alive.cpp +161 -0
  108. data/test/test_Memory_Management.cpp +2 -4
  109. data/test/test_Module.cpp +167 -110
  110. data/test/test_Object.cpp +41 -21
  111. data/test/test_Ownership.cpp +275 -0
  112. data/test/test_Self.cpp +205 -0
  113. data/test/test_Stl_Optional.cpp +90 -0
  114. data/test/test_Stl_Pair.cpp +144 -0
  115. data/test/test_Stl_SmartPointer.cpp +200 -0
  116. data/test/test_Stl_String.cpp +74 -0
  117. data/test/test_Stl_Vector.cpp +652 -0
  118. data/test/test_String.cpp +1 -2
  119. data/test/test_Struct.cpp +29 -39
  120. data/test/test_Symbol.cpp +1 -2
  121. data/test/test_To_From_Ruby.cpp +249 -285
  122. data/test/test_global_functions.cpp +39 -19
  123. data/test/unittest.hpp +0 -4
  124. metadata +70 -141
  125. data/Doxyfile +0 -2268
  126. data/Makefile.am +0 -26
  127. data/Makefile.in +0 -931
  128. data/README.mingw +0 -8
  129. data/aclocal.m4 +0 -1085
  130. data/ax_cxx_compile_stdcxx.m4 +0 -951
  131. data/bootstrap +0 -8
  132. data/config.guess +0 -1421
  133. data/config.sub +0 -1807
  134. data/configure +0 -7792
  135. data/configure.ac +0 -55
  136. data/depcomp +0 -791
  137. data/doxygen.ac +0 -314
  138. data/doxygen.am +0 -186
  139. data/extconf.rb +0 -70
  140. data/install-sh +0 -501
  141. data/missing +0 -215
  142. data/post-autoconf.rb +0 -22
  143. data/post-automake.rb +0 -28
  144. data/rice/Address_Registration_Guard.cpp +0 -22
  145. data/rice/Arg_impl.hpp +0 -129
  146. data/rice/Arg_operators.cpp +0 -21
  147. data/rice/Arg_operators.hpp +0 -19
  148. data/rice/Array.hpp +0 -214
  149. data/rice/Array.ipp +0 -256
  150. data/rice/Builtin_Object.hpp +0 -8
  151. data/rice/Builtin_Object.ipp +0 -50
  152. data/rice/Builtin_Object_defn.hpp +0 -50
  153. data/rice/Class.cpp +0 -57
  154. data/rice/Class.hpp +0 -8
  155. data/rice/Class.ipp +0 -6
  156. data/rice/Class_defn.hpp +0 -84
  157. data/rice/Data_Type.cpp +0 -54
  158. data/rice/Data_Type_fwd.hpp +0 -12
  159. data/rice/Director.cpp +0 -13
  160. data/rice/Exception.cpp +0 -54
  161. data/rice/Exception_Base.hpp +0 -8
  162. data/rice/Exception_Base.ipp +0 -13
  163. data/rice/Exception_Base_defn.hpp +0 -27
  164. data/rice/Hash.hpp +0 -230
  165. data/rice/Hash.ipp +0 -329
  166. data/rice/Identifier.cpp +0 -8
  167. data/rice/Jump_Tag.hpp +0 -24
  168. data/rice/Makefile.am +0 -121
  169. data/rice/Makefile.in +0 -884
  170. data/rice/Module.cpp +0 -84
  171. data/rice/Module.hpp +0 -8
  172. data/rice/Module.ipp +0 -6
  173. data/rice/Module_defn.hpp +0 -88
  174. data/rice/Module_impl.hpp +0 -281
  175. data/rice/Module_impl.ipp +0 -345
  176. data/rice/Object.cpp +0 -169
  177. data/rice/Object.hpp +0 -8
  178. data/rice/Object.ipp +0 -33
  179. data/rice/Object_defn.hpp +0 -214
  180. data/rice/Require_Guard.hpp +0 -21
  181. data/rice/String.cpp +0 -89
  182. data/rice/String.hpp +0 -91
  183. data/rice/Struct.cpp +0 -117
  184. data/rice/Struct.hpp +0 -162
  185. data/rice/Struct.ipp +0 -26
  186. data/rice/Symbol.cpp +0 -25
  187. data/rice/Symbol.hpp +0 -66
  188. data/rice/Symbol.ipp +0 -44
  189. data/rice/config.hpp +0 -47
  190. data/rice/config.hpp.in +0 -46
  191. data/rice/detail/Arguments.hpp +0 -118
  192. data/rice/detail/Auto_Function_Wrapper.hpp +0 -898
  193. data/rice/detail/Auto_Function_Wrapper.ipp +0 -3181
  194. data/rice/detail/Auto_Member_Function_Wrapper.hpp +0 -897
  195. data/rice/detail/Auto_Member_Function_Wrapper.ipp +0 -2501
  196. data/rice/detail/Caster.hpp +0 -103
  197. data/rice/detail/Not_Copyable.hpp +0 -25
  198. data/rice/detail/Wrapped_Function.hpp +0 -33
  199. data/rice/detail/cfp.hpp +0 -24
  200. data/rice/detail/cfp.ipp +0 -51
  201. data/rice/detail/check_ruby_type.cpp +0 -27
  202. data/rice/detail/check_ruby_type.hpp +0 -23
  203. data/rice/detail/creation_funcs.hpp +0 -37
  204. data/rice/detail/creation_funcs.ipp +0 -36
  205. data/rice/detail/define_method_and_auto_wrap.hpp +0 -31
  206. data/rice/detail/define_method_and_auto_wrap.ipp +0 -30
  207. data/rice/detail/demangle.cpp +0 -56
  208. data/rice/detail/demangle.hpp +0 -19
  209. data/rice/detail/env.hpp +0 -11
  210. data/rice/detail/method_data.cpp +0 -92
  211. data/rice/detail/node.hpp +0 -13
  212. data/rice/detail/protect.cpp +0 -29
  213. data/rice/detail/protect.hpp +0 -34
  214. data/rice/detail/ruby_version_code.hpp +0 -6
  215. data/rice/detail/ruby_version_code.hpp.in +0 -6
  216. data/rice/detail/st.hpp +0 -22
  217. data/rice/detail/win32.hpp +0 -16
  218. data/rice/detail/wrap_function.hpp +0 -66
  219. data/rice/protect.hpp +0 -38
  220. data/rice/protect.ipp +0 -1134
  221. data/rice/rubypp.rb +0 -97
  222. data/rice/to_from_ruby.hpp +0 -8
  223. data/rice/to_from_ruby.ipp +0 -418
  224. data/rice/to_from_ruby_defn.hpp +0 -70
  225. data/ruby/Makefile.am +0 -1
  226. data/ruby/Makefile.in +0 -628
  227. data/ruby/lib/Makefile.am +0 -3
  228. data/ruby/lib/Makefile.in +0 -506
  229. data/ruby/lib/mkmf-rice.rb.in +0 -217
  230. data/ruby/lib/version.rb +0 -3
  231. data/ruby.ac +0 -135
  232. data/sample/Makefile.am +0 -53
  233. data/sample/Makefile.in +0 -495
  234. data/test/Makefile.am +0 -73
  235. data/test/Makefile.in +0 -1219
  236. data/test/ext/Makefile.am +0 -41
  237. data/test/ext/Makefile.in +0 -483
  238. data/test/test_rice.rb +0 -45
data/rice/Struct.ipp DELETED
@@ -1,26 +0,0 @@
1
- namespace Rice
2
- {
3
-
4
- template<typename T>
5
- inline Object Struct::Instance::
6
- operator[](T index)
7
- {
8
- return rb_struct_aref(value(), ULONG2NUM(index));
9
- }
10
-
11
- template<>
12
- inline Object Struct::Instance::
13
- operator[]<Identifier>(Identifier member)
14
- {
15
- unsigned long index = type_.offset_of(member);
16
- return (*this)[index];
17
- }
18
-
19
- template<>
20
- inline Object Struct::Instance::
21
- operator[]<char const *>(char const * name)
22
- {
23
- return (*this)[Identifier(name)];
24
- }
25
-
26
- } // Rice
data/rice/Symbol.cpp DELETED
@@ -1,25 +0,0 @@
1
- #include "Symbol.hpp"
2
-
3
- namespace
4
- {
5
- VALUE check_type(Rice::Object value, int type)
6
- {
7
- rb_check_type(value, type);
8
- return Qnil;
9
- }
10
- }
11
-
12
- Rice::Symbol::
13
- Symbol(VALUE v)
14
- : Object(v)
15
- {
16
- protect(check_type, v, T_SYMBOL);
17
- }
18
-
19
- Rice::Symbol::
20
- Symbol(Object v)
21
- : Object(v)
22
- {
23
- protect(check_type, v, T_SYMBOL);
24
- }
25
-
data/rice/Symbol.hpp DELETED
@@ -1,66 +0,0 @@
1
- #ifndef Rice__Symbol__hpp_
2
- #define Rice__Symbol__hpp_
3
-
4
- #include "Identifier.hpp"
5
- #include "Object.hpp"
6
- #include "detail/ruby.hpp"
7
- #include <string>
8
-
9
- namespace Rice
10
- {
11
-
12
- //! A wrapper for ruby's Symbol class.
13
- /*! Symbols are internal identifiers in ruby. They are singletons and
14
- * can be thought of as frozen strings. They differ from an Identifier
15
- * in that they are in fact real Objects, but they can be converted
16
- * back and forth between Identifier and Symbol.
17
- */
18
- class Symbol
19
- : public Object
20
- {
21
- public:
22
- //! Wrap an existing symbol.
23
- Symbol(VALUE v);
24
-
25
- //! Wrap an existing symbol.
26
- Symbol(Object v);
27
-
28
- //! Construct a Symbol from an Identifier.
29
- Symbol(Identifier id);
30
-
31
- //! Construct a Symbol from a null-terminated C string.
32
- Symbol(char const * s = "");
33
-
34
- //! Construct a Symbol from an std::string.
35
- Symbol(std::string const & s);
36
-
37
- //! Return a string representation of the Symbol.
38
- char const * c_str() const;
39
-
40
- //! Return a string representation of the Symbol.
41
- std::string str() const;
42
-
43
- //! Return the Symbol as an Identifier.
44
- Identifier to_id() const;
45
- };
46
-
47
- } // namespace Rice
48
-
49
- template<>
50
- inline
51
- Rice::Symbol from_ruby<Rice::Symbol>(Rice::Object x)
52
- {
53
- return Rice::Symbol(x);
54
- }
55
-
56
- template<>
57
- inline
58
- Rice::Object to_ruby<Rice::Symbol>(Rice::Symbol const & x)
59
- {
60
- return x;
61
- }
62
-
63
- #include "Symbol.ipp"
64
-
65
- #endif // Rice__Symbol__hpp_
66
-
data/rice/Symbol.ipp DELETED
@@ -1,44 +0,0 @@
1
- #ifndef Rice__Symbol__ipp_
2
- #define Rice__Symbol__ipp_
3
-
4
- #include "protect.hpp"
5
- #include "detail/ruby.hpp"
6
-
7
- inline Rice::Symbol::
8
- Symbol(char const * s)
9
- : Object(ID2SYM(rb_intern(s)))
10
- {
11
- }
12
-
13
- inline Rice::Symbol::
14
- Symbol(std::string const & s)
15
- : Object(ID2SYM(rb_intern(s.c_str())))
16
- {
17
- }
18
-
19
- inline Rice::Symbol::
20
- Symbol(Identifier id)
21
- : Object(ID2SYM(id))
22
- {
23
- }
24
-
25
- inline char const * Rice::Symbol::
26
- c_str() const
27
- {
28
- return to_id().c_str();
29
- }
30
-
31
- inline std::string Rice::Symbol::
32
- str() const
33
- {
34
- return to_id().str();
35
- }
36
-
37
- inline Rice::Identifier Rice::Symbol::
38
- to_id() const
39
- {
40
- return rb_to_id(value());
41
- }
42
-
43
- #endif // Rice__Symbol__ipp_
44
-
data/rice/config.hpp DELETED
@@ -1,47 +0,0 @@
1
- /* rice/config.hpp. Generated from config.hpp.in by configure. */
2
- /* rice/config.hpp.in. Generated from configure.ac by autoheader. */
3
-
4
- /* define if the compiler supports basic C++14 syntax */
5
- #define HAVE_CXX14 1
6
-
7
- /* Define to 1 if you have the <env.h> header file. */
8
- /* #undef HAVE_ENV_H */
9
-
10
- /* Define to 1 if you have the <node.h> header file. */
11
- /* #undef HAVE_NODE_H */
12
-
13
- /* Define to 1 if you have the <ruby.h> header file. */
14
- #define HAVE_RUBY_H 1
15
-
16
- /* Define to 1 if you have the <ruby/node.h> header file. */
17
- /* #undef HAVE_RUBY_NODE_H */
18
-
19
- /* Define to 1 if you have the <version.h> header file. */
20
- /* #undef HAVE_VERSION_H */
21
-
22
- /* Name of package */
23
- #define PACKAGE "rice"
24
-
25
- /* Define to the address where bug reports for this package should be sent. */
26
- #define PACKAGE_BUGREPORT ""
27
-
28
- /* Define to the full name of this package. */
29
- #define PACKAGE_NAME "rice"
30
-
31
- /* Define to the full name and version of this package. */
32
- #define PACKAGE_STRING "rice 1.1"
33
-
34
- /* Define to the one symbol short name of this package. */
35
- #define PACKAGE_TARNAME "rice"
36
-
37
- /* Define to the home page for this package. */
38
- #define PACKAGE_URL ""
39
-
40
- /* Define to the version of this package. */
41
- #define PACKAGE_VERSION "1.1"
42
-
43
- /* Define this macro to use ruby/node.h */
44
- /* #undef REALLY_HAVE_RUBY_NODE_H */
45
-
46
- /* Version number of package */
47
- #define VERSION "1.1"
data/rice/config.hpp.in DELETED
@@ -1,46 +0,0 @@
1
- /* rice/config.hpp.in. Generated from configure.ac by autoheader. */
2
-
3
- /* define if the compiler supports basic C++14 syntax */
4
- #undef HAVE_CXX14
5
-
6
- /* Define to 1 if you have the <env.h> header file. */
7
- #undef HAVE_ENV_H
8
-
9
- /* Define to 1 if you have the <node.h> header file. */
10
- #undef HAVE_NODE_H
11
-
12
- /* Define to 1 if you have the <ruby.h> header file. */
13
- #undef HAVE_RUBY_H
14
-
15
- /* Define to 1 if you have the <ruby/node.h> header file. */
16
- #undef HAVE_RUBY_NODE_H
17
-
18
- /* Define to 1 if you have the <version.h> header file. */
19
- #undef HAVE_VERSION_H
20
-
21
- /* Name of package */
22
- #undef PACKAGE
23
-
24
- /* Define to the address where bug reports for this package should be sent. */
25
- #undef PACKAGE_BUGREPORT
26
-
27
- /* Define to the full name of this package. */
28
- #undef PACKAGE_NAME
29
-
30
- /* Define to the full name and version of this package. */
31
- #undef PACKAGE_STRING
32
-
33
- /* Define to the one symbol short name of this package. */
34
- #undef PACKAGE_TARNAME
35
-
36
- /* Define to the home page for this package. */
37
- #undef PACKAGE_URL
38
-
39
- /* Define to the version of this package. */
40
- #undef PACKAGE_VERSION
41
-
42
- /* Define this macro to use ruby/node.h */
43
- #undef REALLY_HAVE_RUBY_NODE_H
44
-
45
- /* Version number of package */
46
- #undef VERSION
@@ -1,118 +0,0 @@
1
- #ifndef Rice__Arguments__hpp_
2
- #define Rice__Arguments__hpp_
3
-
4
- #include "../Arg_impl.hpp"
5
- #include <sstream>
6
- #include <vector>
7
- #include "../to_from_ruby_defn.hpp"
8
-
9
- namespace Rice {
10
-
11
- class Arguments
12
- {
13
- public:
14
- Arguments() {
15
- required_ = 0;
16
- optional_ = 0;
17
- }
18
-
19
- ~Arguments() {
20
- }
21
-
22
- /**
23
- * Get the full argument count of this
24
- * list of arguments.
25
- * Returns -1 no defined arguments
26
- */
27
- int count() {
28
- if(required_ == 0 && optional_ == 0) {
29
- return -1;
30
- } else {
31
- return required_ + optional_;
32
- }
33
- }
34
-
35
- /**
36
- * Get the rb_scan_args format string for this
37
- * list of arguments.
38
- * In the case of no Args (default case), this
39
- * method uses the passed in full argument count
40
- */
41
- std::string formatString(size_t fullArgCount)
42
- {
43
- std::stringstream s;
44
- if(required_ == 0 && optional_ == 0)
45
- {
46
- s << fullArgCount << 0;
47
- }
48
- else
49
- {
50
- s << required_ << optional_;
51
- }
52
-
53
- return s.str();
54
- }
55
-
56
- /**
57
- * Add a defined Arg to this list of Arguments
58
- */
59
- void add(const Arg& arg)
60
- {
61
- args_.push_back(arg);
62
-
63
- if(arg.hasDefaultValue())
64
- {
65
- optional_++;
66
- }
67
- else
68
- {
69
- required_++;
70
- }
71
- }
72
-
73
- /**
74
- * Is the argument at the request location an optional
75
- * argument?
76
- */
77
- bool isOptional(unsigned int pos)
78
- {
79
- if(required_ == 0 && optional_ == 0)
80
- {
81
- return false;
82
- }
83
- if(pos >= args_.size())
84
- {
85
- return false;
86
- }
87
- return args_[pos].hasDefaultValue();
88
- }
89
-
90
- /**
91
- * Given a position, a type, and a ruby VALUE, figure out
92
- * what argument value we need to return according to
93
- * defaults and if that VALUE is nil or not
94
- */
95
- template<typename Arg_T>
96
- Arg_T getArgumentOrDefault(int pos, VALUE in)
97
- {
98
- if(isOptional(pos) && NIL_P(in))
99
- {
100
- return args_[pos].getDefaultValue<Arg_T>();
101
- }
102
- else
103
- {
104
- return from_ruby<Arg_T>(in);
105
- }
106
- }
107
-
108
- private:
109
- std::vector<Arg> args_;
110
-
111
- /** Keep counts of required and optional parameters */
112
- int required_;
113
- int optional_;
114
- };
115
-
116
- }
117
-
118
- #endif // Rice__Arguments__hpp_