rice 2.1.1 → 4.0.0

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 (246) 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 +69 -0
  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 -274
  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 +117 -137
  128. data/Doxyfile +0 -2280
  129. data/Makefile.am +0 -26
  130. data/Makefile.in +0 -920
  131. data/README +0 -1055
  132. data/README.mingw +0 -8
  133. data/aclocal.m4 +0 -1088
  134. data/bootstrap +0 -8
  135. data/check_stdcxx_11.ac +0 -142
  136. data/config.guess +0 -1421
  137. data/config.sub +0 -1807
  138. data/configure +0 -7481
  139. data/configure.ac +0 -55
  140. data/depcomp +0 -791
  141. data/doxygen.ac +0 -314
  142. data/doxygen.am +0 -186
  143. data/extconf.rb +0 -69
  144. data/install-sh +0 -501
  145. data/missing +0 -215
  146. data/post-autoconf.rb +0 -22
  147. data/post-automake.rb +0 -28
  148. data/rice/Address_Registration_Guard.cpp +0 -22
  149. data/rice/Arg_impl.hpp +0 -129
  150. data/rice/Arg_operators.cpp +0 -21
  151. data/rice/Arg_operators.hpp +0 -19
  152. data/rice/Array.hpp +0 -214
  153. data/rice/Array.ipp +0 -256
  154. data/rice/Builtin_Object.hpp +0 -8
  155. data/rice/Builtin_Object.ipp +0 -50
  156. data/rice/Builtin_Object_defn.hpp +0 -50
  157. data/rice/Class.cpp +0 -57
  158. data/rice/Class.hpp +0 -8
  159. data/rice/Class.ipp +0 -6
  160. data/rice/Class_defn.hpp +0 -83
  161. data/rice/Data_Type.cpp +0 -54
  162. data/rice/Data_Type_fwd.hpp +0 -12
  163. data/rice/Director.cpp +0 -13
  164. data/rice/Exception.cpp +0 -59
  165. data/rice/Exception_Base.hpp +0 -8
  166. data/rice/Exception_Base.ipp +0 -13
  167. data/rice/Exception_Base_defn.hpp +0 -27
  168. data/rice/Hash.hpp +0 -227
  169. data/rice/Hash.ipp +0 -329
  170. data/rice/Identifier.cpp +0 -8
  171. data/rice/Jump_Tag.hpp +0 -24
  172. data/rice/Makefile.am +0 -124
  173. data/rice/Makefile.in +0 -839
  174. data/rice/Module.cpp +0 -84
  175. data/rice/Module.hpp +0 -8
  176. data/rice/Module.ipp +0 -6
  177. data/rice/Module_defn.hpp +0 -88
  178. data/rice/Module_impl.hpp +0 -281
  179. data/rice/Module_impl.ipp +0 -345
  180. data/rice/Object.cpp +0 -169
  181. data/rice/Object.hpp +0 -8
  182. data/rice/Object.ipp +0 -19
  183. data/rice/Object_defn.hpp +0 -191
  184. data/rice/Require_Guard.hpp +0 -21
  185. data/rice/String.cpp +0 -94
  186. data/rice/String.hpp +0 -91
  187. data/rice/Struct.cpp +0 -117
  188. data/rice/Struct.hpp +0 -162
  189. data/rice/Struct.ipp +0 -26
  190. data/rice/Symbol.cpp +0 -25
  191. data/rice/Symbol.hpp +0 -66
  192. data/rice/Symbol.ipp +0 -44
  193. data/rice/config.hpp +0 -47
  194. data/rice/config.hpp.in +0 -46
  195. data/rice/detail/Arguments.hpp +0 -118
  196. data/rice/detail/Auto_Function_Wrapper.hpp +0 -898
  197. data/rice/detail/Auto_Function_Wrapper.ipp +0 -3694
  198. data/rice/detail/Auto_Member_Function_Wrapper.hpp +0 -897
  199. data/rice/detail/Auto_Member_Function_Wrapper.ipp +0 -2774
  200. data/rice/detail/Caster.hpp +0 -103
  201. data/rice/detail/Not_Copyable.hpp +0 -25
  202. data/rice/detail/Wrapped_Function.hpp +0 -33
  203. data/rice/detail/cfp.hpp +0 -24
  204. data/rice/detail/cfp.ipp +0 -51
  205. data/rice/detail/check_ruby_type.cpp +0 -27
  206. data/rice/detail/check_ruby_type.hpp +0 -23
  207. data/rice/detail/creation_funcs.hpp +0 -37
  208. data/rice/detail/creation_funcs.ipp +0 -36
  209. data/rice/detail/define_method_and_auto_wrap.hpp +0 -31
  210. data/rice/detail/define_method_and_auto_wrap.ipp +0 -30
  211. data/rice/detail/demangle.cpp +0 -56
  212. data/rice/detail/demangle.hpp +0 -19
  213. data/rice/detail/env.hpp +0 -11
  214. data/rice/detail/method_data.cpp +0 -86
  215. data/rice/detail/node.hpp +0 -13
  216. data/rice/detail/object_call.hpp +0 -69
  217. data/rice/detail/object_call.ipp +0 -131
  218. data/rice/detail/protect.cpp +0 -29
  219. data/rice/detail/protect.hpp +0 -34
  220. data/rice/detail/ruby_version_code.hpp +0 -6
  221. data/rice/detail/ruby_version_code.hpp.in +0 -6
  222. data/rice/detail/st.hpp +0 -22
  223. data/rice/detail/traits.hpp +0 -43
  224. data/rice/detail/win32.hpp +0 -16
  225. data/rice/detail/wrap_function.hpp +0 -341
  226. data/rice/detail/wrap_function.ipp +0 -514
  227. data/rice/protect.hpp +0 -92
  228. data/rice/protect.ipp +0 -1134
  229. data/rice/rubypp.rb +0 -97
  230. data/rice/to_from_ruby.hpp +0 -8
  231. data/rice/to_from_ruby.ipp +0 -294
  232. data/rice/to_from_ruby_defn.hpp +0 -70
  233. data/ruby.ac +0 -135
  234. data/ruby/Makefile.am +0 -1
  235. data/ruby/Makefile.in +0 -625
  236. data/ruby/lib/Makefile.am +0 -3
  237. data/ruby/lib/Makefile.in +0 -503
  238. data/ruby/lib/mkmf-rice.rb.in +0 -217
  239. data/ruby/lib/version.rb +0 -3
  240. data/sample/Makefile.am +0 -47
  241. data/sample/Makefile.in +0 -486
  242. data/test/Makefile.am +0 -72
  243. data/test/Makefile.in +0 -1150
  244. data/test/ext/Makefile.am +0 -41
  245. data/test/ext/Makefile.in +0 -480
  246. 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_