rice 2.1.2 → 4.0.1

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 (245) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +121 -0
  3. data/CONTRIBUTORS.md +19 -0
  4. data/COPYING +2 -2
  5. data/Gemfile +3 -0
  6. data/README.md +45 -1028
  7. data/Rakefile +95 -12
  8. data/include/rice/rice.hpp +7766 -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 +30 -376
  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 +14 -9
  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 -49
  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 +6 -0
  71. data/sample/callbacks/sample_callbacks.cpp +35 -0
  72. data/sample/callbacks/test.rb +28 -0
  73. data/sample/enum/extconf.rb +3 -0
  74. data/sample/enum/sample_enum.cpp +3 -17
  75. data/sample/enum/test.rb +2 -2
  76. data/sample/inheritance/animals.cpp +8 -24
  77. data/sample/inheritance/extconf.rb +3 -0
  78. data/sample/inheritance/test.rb +1 -1
  79. data/sample/map/extconf.rb +3 -0
  80. data/sample/map/map.cpp +10 -18
  81. data/sample/map/test.rb +1 -1
  82. data/test/embed_ruby.cpp +34 -0
  83. data/test/embed_ruby.hpp +4 -0
  84. data/test/ext/t1/extconf.rb +3 -0
  85. data/test/ext/t1/t1.cpp +1 -3
  86. data/test/ext/t2/extconf.rb +3 -0
  87. data/test/ext/t2/t2.cpp +1 -1
  88. data/test/extconf.rb +23 -0
  89. data/test/ruby/test_callbacks_sample.rb +28 -0
  90. data/test/ruby/test_multiple_extensions.rb +18 -0
  91. data/test/ruby/test_multiple_extensions_same_class.rb +14 -0
  92. data/test/ruby/test_multiple_extensions_with_inheritance.rb +20 -0
  93. data/test/test_Address_Registration_Guard.cpp +25 -11
  94. data/test/test_Array.cpp +131 -74
  95. data/test/test_Attribute.cpp +147 -0
  96. data/test/test_Builtin_Object.cpp +36 -15
  97. data/test/test_Class.cpp +151 -276
  98. data/test/test_Constructor.cpp +10 -9
  99. data/test/test_Data_Object.cpp +135 -193
  100. data/test/test_Data_Type.cpp +323 -252
  101. data/test/test_Director.cpp +56 -42
  102. data/test/test_Enum.cpp +230 -104
  103. data/test/test_Exception.cpp +7 -7
  104. data/test/test_Hash.cpp +33 -31
  105. data/test/test_Identifier.cpp +6 -6
  106. data/test/test_Inheritance.cpp +221 -0
  107. data/test/test_Iterator.cpp +161 -0
  108. data/test/test_Jump_Tag.cpp +1 -1
  109. data/test/test_Keep_Alive.cpp +161 -0
  110. data/test/test_Memory_Management.cpp +4 -5
  111. data/test/test_Module.cpp +169 -111
  112. data/test/test_Object.cpp +51 -19
  113. data/test/test_Ownership.cpp +275 -0
  114. data/test/test_Self.cpp +205 -0
  115. data/test/test_Stl_Optional.cpp +90 -0
  116. data/test/test_Stl_Pair.cpp +144 -0
  117. data/test/test_Stl_SmartPointer.cpp +200 -0
  118. data/test/test_Stl_String.cpp +74 -0
  119. data/test/test_Stl_Vector.cpp +652 -0
  120. data/test/test_String.cpp +3 -3
  121. data/test/test_Struct.cpp +31 -40
  122. data/test/test_Symbol.cpp +3 -3
  123. data/test/test_To_From_Ruby.cpp +283 -218
  124. data/test/test_global_functions.cpp +41 -20
  125. data/test/unittest.cpp +34 -8
  126. data/test/unittest.hpp +0 -4
  127. metadata +120 -136
  128. data/Doxyfile +0 -2268
  129. data/Makefile.am +0 -26
  130. data/Makefile.in +0 -920
  131. data/README.mingw +0 -8
  132. data/aclocal.m4 +0 -1088
  133. data/bootstrap +0 -8
  134. data/check_stdcxx_11.ac +0 -142
  135. data/config.guess +0 -1421
  136. data/config.sub +0 -1807
  137. data/configure +0 -7481
  138. data/configure.ac +0 -55
  139. data/depcomp +0 -791
  140. data/doxygen.ac +0 -314
  141. data/doxygen.am +0 -186
  142. data/extconf.rb +0 -69
  143. data/install-sh +0 -501
  144. data/missing +0 -215
  145. data/post-autoconf.rb +0 -22
  146. data/post-automake.rb +0 -28
  147. data/rice/Address_Registration_Guard.cpp +0 -22
  148. data/rice/Arg_impl.hpp +0 -129
  149. data/rice/Arg_operators.cpp +0 -21
  150. data/rice/Arg_operators.hpp +0 -19
  151. data/rice/Array.hpp +0 -214
  152. data/rice/Array.ipp +0 -256
  153. data/rice/Builtin_Object.hpp +0 -8
  154. data/rice/Builtin_Object.ipp +0 -50
  155. data/rice/Builtin_Object_defn.hpp +0 -50
  156. data/rice/Class.cpp +0 -57
  157. data/rice/Class.hpp +0 -8
  158. data/rice/Class.ipp +0 -6
  159. data/rice/Class_defn.hpp +0 -83
  160. data/rice/Data_Type.cpp +0 -54
  161. data/rice/Data_Type_fwd.hpp +0 -12
  162. data/rice/Director.cpp +0 -13
  163. data/rice/Exception.cpp +0 -59
  164. data/rice/Exception_Base.hpp +0 -8
  165. data/rice/Exception_Base.ipp +0 -13
  166. data/rice/Exception_Base_defn.hpp +0 -27
  167. data/rice/Hash.hpp +0 -227
  168. data/rice/Hash.ipp +0 -329
  169. data/rice/Identifier.cpp +0 -8
  170. data/rice/Jump_Tag.hpp +0 -24
  171. data/rice/Makefile.am +0 -124
  172. data/rice/Makefile.in +0 -839
  173. data/rice/Module.cpp +0 -84
  174. data/rice/Module.hpp +0 -8
  175. data/rice/Module.ipp +0 -6
  176. data/rice/Module_defn.hpp +0 -88
  177. data/rice/Module_impl.hpp +0 -281
  178. data/rice/Module_impl.ipp +0 -345
  179. data/rice/Object.cpp +0 -169
  180. data/rice/Object.hpp +0 -8
  181. data/rice/Object.ipp +0 -19
  182. data/rice/Object_defn.hpp +0 -191
  183. data/rice/Require_Guard.hpp +0 -21
  184. data/rice/String.cpp +0 -94
  185. data/rice/String.hpp +0 -91
  186. data/rice/Struct.cpp +0 -117
  187. data/rice/Struct.hpp +0 -162
  188. data/rice/Struct.ipp +0 -26
  189. data/rice/Symbol.cpp +0 -25
  190. data/rice/Symbol.hpp +0 -66
  191. data/rice/Symbol.ipp +0 -44
  192. data/rice/config.hpp +0 -47
  193. data/rice/config.hpp.in +0 -46
  194. data/rice/detail/Arguments.hpp +0 -118
  195. data/rice/detail/Auto_Function_Wrapper.hpp +0 -898
  196. data/rice/detail/Auto_Function_Wrapper.ipp +0 -3694
  197. data/rice/detail/Auto_Member_Function_Wrapper.hpp +0 -897
  198. data/rice/detail/Auto_Member_Function_Wrapper.ipp +0 -2774
  199. data/rice/detail/Caster.hpp +0 -103
  200. data/rice/detail/Not_Copyable.hpp +0 -25
  201. data/rice/detail/Wrapped_Function.hpp +0 -33
  202. data/rice/detail/cfp.hpp +0 -24
  203. data/rice/detail/cfp.ipp +0 -51
  204. data/rice/detail/check_ruby_type.cpp +0 -27
  205. data/rice/detail/check_ruby_type.hpp +0 -23
  206. data/rice/detail/creation_funcs.hpp +0 -37
  207. data/rice/detail/creation_funcs.ipp +0 -36
  208. data/rice/detail/define_method_and_auto_wrap.hpp +0 -31
  209. data/rice/detail/define_method_and_auto_wrap.ipp +0 -30
  210. data/rice/detail/demangle.cpp +0 -56
  211. data/rice/detail/demangle.hpp +0 -19
  212. data/rice/detail/env.hpp +0 -11
  213. data/rice/detail/method_data.cpp +0 -86
  214. data/rice/detail/node.hpp +0 -13
  215. data/rice/detail/object_call.hpp +0 -69
  216. data/rice/detail/object_call.ipp +0 -131
  217. data/rice/detail/protect.cpp +0 -29
  218. data/rice/detail/protect.hpp +0 -34
  219. data/rice/detail/ruby_version_code.hpp +0 -6
  220. data/rice/detail/ruby_version_code.hpp.in +0 -6
  221. data/rice/detail/st.hpp +0 -22
  222. data/rice/detail/traits.hpp +0 -43
  223. data/rice/detail/win32.hpp +0 -16
  224. data/rice/detail/wrap_function.hpp +0 -341
  225. data/rice/detail/wrap_function.ipp +0 -514
  226. data/rice/protect.hpp +0 -92
  227. data/rice/protect.ipp +0 -1134
  228. data/rice/rubypp.rb +0 -97
  229. data/rice/to_from_ruby.hpp +0 -8
  230. data/rice/to_from_ruby.ipp +0 -294
  231. data/rice/to_from_ruby_defn.hpp +0 -70
  232. data/ruby.ac +0 -135
  233. data/ruby/Makefile.am +0 -1
  234. data/ruby/Makefile.in +0 -625
  235. data/ruby/lib/Makefile.am +0 -3
  236. data/ruby/lib/Makefile.in +0 -503
  237. data/ruby/lib/mkmf-rice.rb.in +0 -217
  238. data/ruby/lib/version.rb +0 -3
  239. data/sample/Makefile.am +0 -47
  240. data/sample/Makefile.in +0 -486
  241. data/test/Makefile.am +0 -72
  242. data/test/Makefile.in +0 -1150
  243. data/test/ext/Makefile.am +0 -41
  244. data/test/ext/Makefile.in +0 -480
  245. data/test/test_rice.rb +0 -41
@@ -1,8 +0,0 @@
1
- #ifndef Rice__Builtin_Object__hpp_
2
- #define Rice__Builtin_Object__hpp_
3
-
4
- #include "Builtin_Object_defn.hpp"
5
- #include "Builtin_Object.ipp"
6
-
7
- #endif // Rice__Builtin_Object__hpp_
8
-
@@ -1,50 +0,0 @@
1
- #ifndef Rice__Builtin_Object__ipp_
2
- #define Rice__Builtin_Object__ipp_
3
-
4
- #include "Object.hpp"
5
- #include "protect.hpp"
6
- #include "detail/check_ruby_type.hpp"
7
-
8
- #include <algorithm>
9
-
10
- namespace Rice
11
- {
12
-
13
- namespace detail
14
- {
15
- inline VALUE check_type(Object value, int type)
16
- {
17
- rb_check_type(value, type);
18
- return Qnil;
19
- }
20
- }
21
-
22
- template<int Builtin_Type>
23
- inline Builtin_Object<Builtin_Type>::
24
- Builtin_Object(Object value)
25
- : Object(value)
26
- , obj_((RObject*)(value.value()))
27
- {
28
- protect(detail::check_type, value, Builtin_Type);
29
- }
30
-
31
- template<int Builtin_Type>
32
- inline Builtin_Object<Builtin_Type>::
33
- Builtin_Object(Builtin_Object<Builtin_Type> const & other)
34
- : Object(other.value())
35
- , obj_(other.obj_)
36
- {
37
- }
38
-
39
- template<int Builtin_Type>
40
- inline void Builtin_Object<Builtin_Type>::
41
- swap(Builtin_Object<Builtin_Type> & ref)
42
- {
43
- std::swap(obj_, ref.obj_);
44
- Object::swap(ref);
45
- }
46
-
47
- } // namespace Rice
48
-
49
- #endif // Rice__Builtin_Object__ipp_
50
-
@@ -1,50 +0,0 @@
1
- #ifndef Rice__Builtin_Object_defn__hpp_
2
- #define Rice__Builtin_Object_defn__hpp_
3
-
4
- #include "Object_defn.hpp"
5
- #include "detail/ruby.hpp"
6
-
7
- namespace Rice
8
- {
9
-
10
- //! A smartpointer-like wrapper for Ruby builtin objects.
11
- /*! A builtin object is one of Ruby's internal types, e.g. RArray or
12
- * RString. Every builtin type structure has a corresponding integer
13
- * type number (e.g T_ARRAY for RArray or T_STRING for RString). This
14
- * class is a wrapper for those types of objects, primarily useful as a
15
- * base class for other wrapper classes like Array and Hash.
16
- */
17
- template<int Builtin_Type>
18
- class Builtin_Object
19
- : public Object
20
- {
21
- public:
22
- //! Wrap an already allocated Ruby object.
23
- /*! Checks to see if the object is an object of type Builtin_Type; a
24
- * C++ exception is thrown if this is not the case.
25
- * \param value the object to be wrapped.
26
- */
27
- Builtin_Object(Object value);
28
-
29
- //! Make a copy of a Builtin_Object
30
- /*! \param other the Builtin_Object to be copied.
31
- */
32
- Builtin_Object(Builtin_Object const & other);
33
-
34
- RObject & operator*() const { return *obj_; } //!< Return a reference to obj_
35
- RObject * operator->() const { return obj_; } //!< Return a pointer to obj_
36
- RObject * get() const { return obj_; } //!< Return a pointer to obj_
37
-
38
- //! Swap with another builtin object of the same type
39
- /*! \param ref the object with which to swap.
40
- */
41
- void swap(Builtin_Object<Builtin_Type> & ref);
42
-
43
- private:
44
- RObject * obj_;
45
- };
46
-
47
- } // namespace Rice
48
-
49
- #endif // Rice__Builtin_Object_defn__hpp_
50
-
data/rice/Class.cpp DELETED
@@ -1,57 +0,0 @@
1
- #include "Class.hpp"
2
- #include "Exception.hpp"
3
- #include "detail/creation_funcs.hpp"
4
-
5
- Rice::Class::
6
- Class()
7
- : Module_impl<Module, Class>()
8
- {
9
- }
10
-
11
- Rice::Class::
12
- Class(VALUE v)
13
- : Module_impl<Module, Class>(v)
14
- {
15
- if(::rb_type(v) != T_CLASS)
16
- {
17
- throw Exception(
18
- rb_eTypeError,
19
- "Expected a Class but got a %s",
20
- rb_class2name(CLASS_OF(v))); // TODO: might raise an exception
21
- }
22
- }
23
-
24
- Rice::Class & Rice::Class::
25
- undef_creation_funcs()
26
- {
27
- detail::undef_creation_funcs(*this);
28
- return *this;
29
- }
30
-
31
- Rice::Class Rice::
32
- define_class_under(
33
- Rice::Object module,
34
- char const * name,
35
- Rice::Object superclass)
36
- {
37
- VALUE v = rb_define_class_under(module, name, superclass);
38
- return Class(v);
39
- }
40
-
41
- Rice::Class Rice::
42
- define_class(
43
- char const * name,
44
- Rice::Object superclass)
45
- {
46
- VALUE v = rb_define_class(name, superclass);
47
- return Class(v);
48
- }
49
-
50
- Rice::Class Rice::
51
- anonymous_class(
52
- Rice::Object superclass)
53
- {
54
- VALUE v = Class(rb_cClass).call("new");
55
- return Class(v);
56
- }
57
-
data/rice/Class.hpp DELETED
@@ -1,8 +0,0 @@
1
- #ifndef Rice__Class__hpp_
2
- #define Rice__Class__hpp_
3
-
4
- #include "Class_defn.hpp"
5
- #include "Class.ipp"
6
-
7
- #endif // Rice__Class__hpp_
8
-
data/rice/Class.ipp DELETED
@@ -1,6 +0,0 @@
1
- #ifndef Rice__Class__ipp_
2
- #define Rice__Class__ipp_
3
-
4
- #include "Module.ipp"
5
-
6
- #endif // Rice__Class__ipp_
data/rice/Class_defn.hpp DELETED
@@ -1,83 +0,0 @@
1
- #ifndef Rice__Class_defn__hpp_
2
- #define Rice__Class_defn__hpp_
3
-
4
- #include "Object_defn.hpp"
5
- #include "Module_impl.hpp"
6
- #include "Module_defn.hpp"
7
- #include "to_from_ruby_defn.hpp"
8
- #include "Identifier.hpp"
9
-
10
- /*!
11
- * \example inheritance/animals.cpp
12
- */
13
-
14
- namespace Rice
15
- {
16
-
17
- //! A helper for defining a Class and its methods.
18
- /*! This class provides a C++-style interface to ruby's Class class and
19
- * for defining methods on that class.
20
- */
21
- class Class
22
- : public Module_impl<Module, Class>
23
- {
24
- public:
25
- //! Default construct a new class wrapper and initialize it to
26
- //! rb_cObject.
27
- Class();
28
-
29
- //! Construct a new class wrapper from a ruby object of type T_CLASS.
30
- Class(VALUE v);
31
-
32
- //! Disallow creation of an instance from Ruby code.
33
- /*! Undefines the singleton method allocate (or new, if using a
34
- * version of ruby prior to 1.7) and the instance method initialize.
35
- */
36
- Class & undef_creation_funcs();
37
- };
38
-
39
- //! Define a new class in the namespace given by module.
40
- /*! \param module the Module in which to define the class.
41
- * \param name the name of the class.
42
- * \param superclass the base class to use.
43
- * \return the new class.
44
- */
45
- Class define_class_under(
46
- Object module,
47
- char const * name,
48
- Object superclass = rb_cObject);
49
-
50
- //! Define a new class in the default namespace.
51
- /*! \param name the name of the class.
52
- * \param superclass the base class to use.
53
- * \return the new class.
54
- */
55
- Class define_class(
56
- char const * name,
57
- Object superclass = rb_cObject);
58
-
59
- //! Create a new anonymous class.
60
- /*! \param superclass the base class to use.
61
- * \return the new class.
62
- */
63
- Class anonymous_class(
64
- Object superclass = rb_cObject);
65
-
66
- } // namespace Rice
67
-
68
- template<>
69
- inline
70
- Rice::Class from_ruby<Rice::Class>(Rice::Object x)
71
- {
72
- return Rice::Class(x);
73
- }
74
-
75
- template<>
76
- inline
77
- Rice::Object to_ruby<Rice::Class>(Rice::Class const & x)
78
- {
79
- return x;
80
- }
81
-
82
- #endif // Rice__Class_defn__hpp_
83
-
data/rice/Data_Type.cpp DELETED
@@ -1,54 +0,0 @@
1
- #include "Data_Type.hpp"
2
-
3
- Rice::Data_Type_Base::Casters * Rice::Data_Type_Base::casters_ = 0;
4
-
5
- Rice::Data_Type_Base::
6
- Data_Type_Base()
7
- : Module_impl<Class, Data_Type_Base>()
8
- {
9
- }
10
-
11
- Rice::Data_Type_Base::
12
- Data_Type_Base(VALUE v)
13
- : Module_impl<Class, Data_Type_Base>(v)
14
- {
15
- }
16
-
17
- Rice::Data_Type_Base::
18
- ~Data_Type_Base()
19
- {
20
- }
21
-
22
- Rice::Data_Type_Base::Casters &
23
- Rice::Data_Type_Base::
24
- casters()
25
- {
26
- // Initialize the casters_ if it is null
27
- if (!casters_)
28
- {
29
- // First, see if it has been previously registered with the
30
- // interpreter (possibly by another extension)
31
- Class object(rb_cObject);
32
- Object casters_object(object.attr_get("__rice_casters__"));
33
-
34
- if (casters_object.is_nil())
35
- {
36
- // If it is unset, then set it for the first time
37
- Data_Object<Casters> casters(
38
- new Casters,
39
- rb_cObject);
40
- object.iv_set("__rice_casters__", casters);
41
- casters_ = casters.get();
42
- }
43
- else
44
- {
45
- // If it is set, then use the existing value
46
- Data_Object<Casters> casters(
47
- casters_object);
48
- casters_ = casters.get();
49
- }
50
- }
51
-
52
- return *casters_;
53
- }
54
-
@@ -1,12 +0,0 @@
1
- #ifndef Rice__Data_Type_fwd__hpp_
2
- #define Rice__Data_Type_fwd__hpp_
3
-
4
- namespace Rice
5
- {
6
-
7
- template<typename T>
8
- class Data_Type;
9
-
10
- } // Rice
11
-
12
- #endif // Rice__Data_Type_fwd__hpp_
data/rice/Director.cpp DELETED
@@ -1,13 +0,0 @@
1
- #include "Director.hpp"
2
-
3
- namespace Rice {
4
-
5
- Director::Director(Object self) {
6
- self_ = self;
7
- }
8
-
9
- void Director::raisePureVirtual() const {
10
- rb_raise(rb_eNotImpError, "Cannot call super() into a pure-virtual C++ method");
11
- }
12
-
13
- }
data/rice/Exception.cpp DELETED
@@ -1,59 +0,0 @@
1
- #include "Exception.hpp"
2
- #include "protect.hpp"
3
- #include "to_from_ruby.hpp"
4
- #include "detail/ruby.hpp"
5
-
6
- #ifdef HAVE_STDARG_PROTOTYPES
7
- #include <stdarg.h>
8
- #define va_init_list(a,b) va_start(a,b)
9
- #else
10
- #include <varargs.h>
11
- #define va_init_list(a,b) va_start(a)
12
- #endif
13
-
14
- Rice::Exception::
15
- Exception(VALUE e)
16
- : Exception_Base(e)
17
- , message_(Qnil)
18
- , message_guard_(&message_)
19
- {
20
- }
21
-
22
- Rice::Exception::
23
- Exception(Exception const & other)
24
- : Exception_Base(other)
25
- , message_(other.message_)
26
- , message_guard_(&message_)
27
- {
28
- }
29
-
30
- Rice::Exception::
31
- Exception(Object exc, char const * fmt, ...)
32
- : Exception_Base(Qnil)
33
- , message_(Qnil)
34
- , message_guard_(&message_)
35
- {
36
- va_list args;
37
- char buf[BUFSIZ];
38
-
39
- va_init_list(args, fmt);
40
- vsnprintf(buf, BUFSIZ, fmt, args);
41
- buf[BUFSIZ - 1] = '\0';
42
- va_end(args);
43
-
44
- set_value(protect(rb_exc_new2, exc, buf));
45
- }
46
-
47
- Rice::String Rice::Exception::
48
- message() const
49
- {
50
- return protect(rb_funcall, value(), rb_intern("message"), 0);
51
- }
52
-
53
- char const * Rice::Exception::
54
- what() const throw()
55
- {
56
- message_ = message();
57
- return from_ruby<std::string>(message_).c_str();
58
- }
59
-
@@ -1,8 +0,0 @@
1
- #ifndef Rice__Exception_Base__hpp_
2
- #define Rice__Exception_Base__hpp_
3
-
4
- #include "Exception_Base_defn.hpp"
5
- #include "Exception_Base.ipp"
6
-
7
- #endif // Rice__Exception_Base__hpp_
8
-
@@ -1,13 +0,0 @@
1
- #include "Object.hpp"
2
-
3
- inline Rice::Exception_Base::
4
- Exception_Base(VALUE v)
5
- : Object(v)
6
- {
7
- }
8
-
9
- inline Rice::Exception_Base::
10
- ~Exception_Base() throw()
11
- {
12
- }
13
-
@@ -1,27 +0,0 @@
1
- #ifndef Rice__Exception_Base_defn__hpp_
2
- #define Rice__Exception_Base_defn__hpp_
3
-
4
- #include "Object_defn.hpp"
5
-
6
- namespace Rice
7
- {
8
-
9
- //! An abstract interface for Exception
10
- /*! This class exists to prevent a circular reference between
11
- * Exception.hpp and ruby_try_catch.hpp
12
- */
13
- class Exception_Base
14
- : public std::exception
15
- , public Object
16
- {
17
- public:
18
- Exception_Base(VALUE v);
19
-
20
- virtual ~Exception_Base() throw() = 0;
21
-
22
- virtual char const * what() const throw() = 0;
23
- };
24
-
25
- } // Rice
26
-
27
- #endif // Rice__Exception_Base_defn__hpp_