rice 3.0.0 → 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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +121 -0
- data/CONTRIBUTORS.md +19 -0
- data/Gemfile +3 -0
- data/README.md +44 -1025
- data/Rakefile +95 -12
- data/include/rice/rice.hpp +7766 -0
- data/lib/mkmf-rice.rb +127 -0
- data/lib/version.rb +3 -0
- data/rice/Address_Registration_Guard.ipp +75 -32
- data/rice/Address_Registration_Guard_defn.hpp +60 -56
- data/rice/Arg.hpp +80 -4
- data/rice/Arg.ipp +51 -0
- data/rice/Constructor.hpp +12 -14
- data/rice/Data_Object.ipp +234 -107
- data/rice/Data_Object_defn.hpp +77 -117
- data/rice/Data_Type.hpp +1 -2
- data/rice/Data_Type.ipp +251 -295
- data/rice/Data_Type_defn.hpp +175 -243
- data/rice/Director.hpp +11 -6
- data/rice/Enum.hpp +54 -104
- data/rice/Enum.ipp +104 -230
- data/rice/Exception.hpp +2 -8
- data/rice/Exception.ipp +65 -0
- data/rice/Exception_defn.hpp +46 -47
- data/rice/Identifier.hpp +28 -28
- data/rice/Identifier.ipp +23 -27
- data/rice/Return.hpp +39 -0
- data/rice/Return.ipp +33 -0
- data/rice/detail/Exception_Handler.ipp +22 -62
- data/rice/detail/Exception_Handler_defn.hpp +76 -91
- data/rice/detail/Iterator.hpp +18 -88
- data/rice/detail/Iterator.ipp +47 -0
- data/rice/detail/Jump_Tag.hpp +21 -0
- data/rice/detail/MethodInfo.hpp +44 -0
- data/rice/detail/MethodInfo.ipp +78 -0
- data/rice/detail/NativeAttribute.hpp +53 -0
- data/rice/detail/NativeAttribute.ipp +83 -0
- data/rice/detail/NativeFunction.hpp +69 -0
- data/rice/detail/NativeFunction.ipp +248 -0
- data/rice/detail/RubyFunction.hpp +39 -0
- data/rice/detail/RubyFunction.ipp +92 -0
- data/rice/detail/Type.hpp +29 -0
- data/rice/detail/Type.ipp +138 -0
- data/rice/detail/TypeRegistry.hpp +50 -0
- data/rice/detail/TypeRegistry.ipp +106 -0
- data/rice/detail/Wrapper.hpp +51 -0
- data/rice/detail/Wrapper.ipp +151 -0
- data/rice/detail/default_allocation_func.hpp +8 -19
- data/rice/detail/default_allocation_func.ipp +9 -8
- data/rice/detail/from_ruby.hpp +2 -37
- data/rice/detail/from_ruby.ipp +1020 -46
- data/rice/detail/from_ruby_defn.hpp +38 -0
- data/rice/detail/function_traits.hpp +124 -0
- data/rice/detail/method_data.hpp +23 -15
- data/rice/detail/method_data.ipp +53 -0
- data/rice/detail/rice_traits.hpp +116 -0
- data/rice/detail/ruby.hpp +9 -46
- data/rice/detail/to_ruby.hpp +3 -17
- data/rice/detail/to_ruby.ipp +409 -31
- data/rice/detail/to_ruby_defn.hpp +48 -0
- data/rice/forward_declares.ipp +82 -0
- data/rice/global_function.hpp +16 -20
- data/rice/global_function.ipp +8 -17
- data/rice/rice.hpp +59 -0
- data/rice/ruby_mark.hpp +5 -3
- data/rice/ruby_try_catch.hpp +4 -4
- data/rice/stl.hpp +11 -0
- data/sample/callbacks/extconf.rb +3 -0
- data/sample/callbacks/sample_callbacks.cpp +10 -13
- data/sample/enum/extconf.rb +3 -0
- data/sample/enum/sample_enum.cpp +3 -17
- data/sample/enum/test.rb +2 -2
- data/sample/inheritance/animals.cpp +8 -24
- data/sample/inheritance/extconf.rb +3 -0
- data/sample/inheritance/test.rb +1 -1
- data/sample/map/extconf.rb +3 -0
- data/sample/map/map.cpp +10 -18
- data/sample/map/test.rb +1 -1
- data/test/embed_ruby.cpp +18 -5
- data/test/ext/t1/extconf.rb +3 -0
- data/test/ext/t1/t1.cpp +1 -3
- data/test/ext/t2/extconf.rb +3 -0
- data/test/ext/t2/t2.cpp +1 -1
- data/test/extconf.rb +23 -0
- data/test/ruby/test_callbacks_sample.rb +28 -0
- data/test/ruby/test_multiple_extensions.rb +18 -0
- data/test/ruby/test_multiple_extensions_same_class.rb +14 -0
- data/test/ruby/test_multiple_extensions_with_inheritance.rb +20 -0
- data/test/test_Address_Registration_Guard.cpp +23 -10
- data/test/test_Array.cpp +129 -73
- data/test/test_Attribute.cpp +147 -0
- data/test/test_Builtin_Object.cpp +34 -14
- data/test/test_Class.cpp +149 -275
- data/test/test_Constructor.cpp +10 -9
- data/test/test_Data_Object.cpp +133 -192
- data/test/test_Data_Type.cpp +322 -252
- data/test/test_Director.cpp +54 -41
- data/test/test_Enum.cpp +228 -103
- data/test/test_Exception.cpp +5 -6
- data/test/test_Hash.cpp +31 -30
- data/test/test_Identifier.cpp +4 -5
- data/test/test_Inheritance.cpp +221 -0
- data/test/test_Iterator.cpp +161 -0
- data/test/test_Jump_Tag.cpp +1 -1
- data/test/test_Keep_Alive.cpp +161 -0
- data/test/test_Memory_Management.cpp +2 -4
- data/test/test_Module.cpp +167 -110
- data/test/test_Object.cpp +41 -21
- data/test/test_Ownership.cpp +275 -0
- data/test/test_Self.cpp +205 -0
- data/test/test_Stl_Optional.cpp +90 -0
- data/test/test_Stl_Pair.cpp +144 -0
- data/test/test_Stl_SmartPointer.cpp +200 -0
- data/test/test_Stl_String.cpp +74 -0
- data/test/test_Stl_Vector.cpp +652 -0
- data/test/test_String.cpp +1 -2
- data/test/test_Struct.cpp +29 -39
- data/test/test_Symbol.cpp +1 -2
- data/test/test_To_From_Ruby.cpp +249 -285
- data/test/test_global_functions.cpp +39 -19
- data/test/unittest.hpp +0 -4
- metadata +63 -139
- data/Doxyfile +0 -2268
- data/Makefile.am +0 -26
- data/Makefile.in +0 -931
- data/README.mingw +0 -8
- data/aclocal.m4 +0 -1085
- data/ax_cxx_compile_stdcxx.m4 +0 -951
- data/bootstrap +0 -8
- data/config.guess +0 -1421
- data/config.sub +0 -1807
- data/configure +0 -7792
- data/configure.ac +0 -55
- data/depcomp +0 -791
- data/doxygen.ac +0 -314
- data/doxygen.am +0 -186
- data/extconf.rb +0 -70
- data/install-sh +0 -501
- data/missing +0 -215
- data/post-autoconf.rb +0 -22
- data/post-automake.rb +0 -28
- data/rice/Address_Registration_Guard.cpp +0 -22
- data/rice/Arg_impl.hpp +0 -129
- data/rice/Arg_operators.cpp +0 -21
- data/rice/Arg_operators.hpp +0 -19
- data/rice/Array.hpp +0 -214
- data/rice/Array.ipp +0 -256
- data/rice/Builtin_Object.hpp +0 -8
- data/rice/Builtin_Object.ipp +0 -50
- data/rice/Builtin_Object_defn.hpp +0 -50
- data/rice/Class.cpp +0 -57
- data/rice/Class.hpp +0 -8
- data/rice/Class.ipp +0 -6
- data/rice/Class_defn.hpp +0 -84
- data/rice/Data_Type.cpp +0 -54
- data/rice/Data_Type_fwd.hpp +0 -12
- data/rice/Director.cpp +0 -13
- data/rice/Exception.cpp +0 -54
- data/rice/Exception_Base.hpp +0 -8
- data/rice/Exception_Base.ipp +0 -13
- data/rice/Exception_Base_defn.hpp +0 -27
- data/rice/Hash.hpp +0 -230
- data/rice/Hash.ipp +0 -329
- data/rice/Identifier.cpp +0 -8
- data/rice/Jump_Tag.hpp +0 -24
- data/rice/Makefile.am +0 -121
- data/rice/Makefile.in +0 -884
- data/rice/Module.cpp +0 -84
- data/rice/Module.hpp +0 -8
- data/rice/Module.ipp +0 -6
- data/rice/Module_defn.hpp +0 -88
- data/rice/Module_impl.hpp +0 -281
- data/rice/Module_impl.ipp +0 -345
- data/rice/Object.cpp +0 -169
- data/rice/Object.hpp +0 -8
- data/rice/Object.ipp +0 -33
- data/rice/Object_defn.hpp +0 -214
- data/rice/Require_Guard.hpp +0 -21
- data/rice/String.cpp +0 -89
- data/rice/String.hpp +0 -91
- data/rice/Struct.cpp +0 -117
- data/rice/Struct.hpp +0 -162
- data/rice/Struct.ipp +0 -26
- data/rice/Symbol.cpp +0 -25
- data/rice/Symbol.hpp +0 -66
- data/rice/Symbol.ipp +0 -44
- data/rice/config.hpp +0 -47
- data/rice/config.hpp.in +0 -46
- data/rice/detail/Arguments.hpp +0 -118
- data/rice/detail/Auto_Function_Wrapper.hpp +0 -898
- data/rice/detail/Auto_Function_Wrapper.ipp +0 -3181
- data/rice/detail/Auto_Member_Function_Wrapper.hpp +0 -897
- data/rice/detail/Auto_Member_Function_Wrapper.ipp +0 -2501
- data/rice/detail/Caster.hpp +0 -103
- data/rice/detail/Not_Copyable.hpp +0 -25
- data/rice/detail/Wrapped_Function.hpp +0 -33
- data/rice/detail/cfp.hpp +0 -24
- data/rice/detail/cfp.ipp +0 -51
- data/rice/detail/check_ruby_type.cpp +0 -27
- data/rice/detail/check_ruby_type.hpp +0 -23
- data/rice/detail/creation_funcs.hpp +0 -37
- data/rice/detail/creation_funcs.ipp +0 -36
- data/rice/detail/define_method_and_auto_wrap.hpp +0 -31
- data/rice/detail/define_method_and_auto_wrap.ipp +0 -30
- data/rice/detail/demangle.cpp +0 -56
- data/rice/detail/demangle.hpp +0 -19
- data/rice/detail/env.hpp +0 -11
- data/rice/detail/method_data.cpp +0 -92
- data/rice/detail/node.hpp +0 -13
- data/rice/detail/protect.cpp +0 -29
- data/rice/detail/protect.hpp +0 -34
- data/rice/detail/ruby_version_code.hpp +0 -6
- data/rice/detail/ruby_version_code.hpp.in +0 -6
- data/rice/detail/st.hpp +0 -22
- data/rice/detail/win32.hpp +0 -16
- data/rice/detail/wrap_function.hpp +0 -66
- data/rice/protect.hpp +0 -38
- data/rice/protect.ipp +0 -1134
- data/rice/rubypp.rb +0 -97
- data/rice/to_from_ruby.hpp +0 -8
- data/rice/to_from_ruby.ipp +0 -418
- data/rice/to_from_ruby_defn.hpp +0 -70
- data/ruby.ac +0 -135
- data/ruby/Makefile.am +0 -1
- data/ruby/Makefile.in +0 -628
- data/ruby/lib/Makefile.am +0 -3
- data/ruby/lib/Makefile.in +0 -506
- data/ruby/lib/mkmf-rice.rb.in +0 -217
- data/ruby/lib/version.rb +0 -3
- data/sample/Makefile.am +0 -53
- data/sample/Makefile.in +0 -495
- data/test/Makefile.am +0 -73
- data/test/Makefile.in +0 -1219
- data/test/ext/Makefile.am +0 -41
- data/test/ext/Makefile.in +0 -483
- data/test/test_rice.rb +0 -45
@@ -0,0 +1,48 @@
|
|
1
|
+
#ifndef Rice__detail__to_ruby_defn__hpp_
|
2
|
+
#define Rice__detail__to_ruby_defn__hpp_
|
3
|
+
|
4
|
+
#include "rice_traits.hpp"
|
5
|
+
|
6
|
+
namespace Rice
|
7
|
+
{
|
8
|
+
namespace detail
|
9
|
+
{
|
10
|
+
//! Convert a C++ object to Ruby.
|
11
|
+
/*! If x is a pointer, wraps the pointee as a Ruby object. If x is an
|
12
|
+
* Object, returns x.
|
13
|
+
*
|
14
|
+
* If no conversion exists a compile-time error is generated.
|
15
|
+
*
|
16
|
+
* \param x the object to convert.
|
17
|
+
* \return a Ruby representation of the C++ object.
|
18
|
+
*
|
19
|
+
* Example:
|
20
|
+
* \code
|
21
|
+
* rb_p(to_ruby(42));
|
22
|
+
*
|
23
|
+
* Foo * p_foo = new Foo();
|
24
|
+
* rb_p(to_ruby(p_foo));
|
25
|
+
* \endcode
|
26
|
+
*/
|
27
|
+
template <typename T>
|
28
|
+
class To_Ruby;
|
29
|
+
|
30
|
+
// Helper template function that let's users avoid having to specify the template type - its deduced
|
31
|
+
template <typename T>
|
32
|
+
VALUE to_ruby(T&& x)
|
33
|
+
{
|
34
|
+
using Unqualified_T = remove_cv_recursive_t<T>;
|
35
|
+
return To_Ruby<Unqualified_T>().convert(std::forward<T>(x));
|
36
|
+
}
|
37
|
+
|
38
|
+
// Helper template function that let's users avoid having to specify the template type - its deduced
|
39
|
+
template <typename T>
|
40
|
+
VALUE to_ruby(T* x)
|
41
|
+
{
|
42
|
+
using Unqualified_T = remove_cv_recursive_t<T>;
|
43
|
+
return To_Ruby<Unqualified_T*>().convert(x);
|
44
|
+
}
|
45
|
+
} // detail
|
46
|
+
} // Rice
|
47
|
+
|
48
|
+
#endif // Rice__detail__to_ruby_defn__hpp_
|
@@ -0,0 +1,82 @@
|
|
1
|
+
#ifndef Rice__Forward_Declares__ipp_
|
2
|
+
#define Rice__Forward_Declares__ipp_
|
3
|
+
|
4
|
+
namespace Rice
|
5
|
+
{
|
6
|
+
// These methods cannot be defined where they are declared due to circular dependencies
|
7
|
+
inline Class Object::class_of() const
|
8
|
+
{
|
9
|
+
return detail::protect(rb_class_of, value_);
|
10
|
+
}
|
11
|
+
|
12
|
+
inline String Object::to_s() const
|
13
|
+
{
|
14
|
+
return call("to_s");
|
15
|
+
}
|
16
|
+
|
17
|
+
inline String Object::class_name() const
|
18
|
+
{
|
19
|
+
return detail::protect(rb_obj_classname, this->value());
|
20
|
+
}
|
21
|
+
|
22
|
+
inline String Object::inspect() const
|
23
|
+
{
|
24
|
+
return call("inspect");
|
25
|
+
}
|
26
|
+
|
27
|
+
inline Object Object::instance_eval(String const& s)
|
28
|
+
{
|
29
|
+
const VALUE argv[] = { s.value() };
|
30
|
+
return detail::protect(rb_obj_instance_eval, 1, &argv[0], this->value());
|
31
|
+
}
|
32
|
+
|
33
|
+
inline Object Object::vcall(Identifier id, Array args)
|
34
|
+
{
|
35
|
+
std::vector<VALUE> a(args.size());
|
36
|
+
|
37
|
+
Array::const_iterator it = args.begin();
|
38
|
+
Array::const_iterator end = args.end();
|
39
|
+
|
40
|
+
for (int i = 0; it != end; i++, ++it)
|
41
|
+
{
|
42
|
+
a[i] = it->value();
|
43
|
+
}
|
44
|
+
|
45
|
+
return detail::protect(rb_funcall3, this->value(), id.id(), (int)args.size(), (const VALUE*)a.data());
|
46
|
+
}
|
47
|
+
|
48
|
+
inline std::ostream& operator<<(std::ostream& out, Object const& obj)
|
49
|
+
{
|
50
|
+
String s(obj.to_s());
|
51
|
+
out << s.c_str();
|
52
|
+
return out;
|
53
|
+
}
|
54
|
+
|
55
|
+
inline Identifier::Identifier(Symbol const& symbol) : id_(SYM2ID(symbol.value()))
|
56
|
+
{
|
57
|
+
}
|
58
|
+
|
59
|
+
inline String Module::name() const
|
60
|
+
{
|
61
|
+
VALUE name = detail::protect(rb_mod_name, this->value());
|
62
|
+
if (name == Qnil)
|
63
|
+
{
|
64
|
+
return String("");
|
65
|
+
}
|
66
|
+
else
|
67
|
+
{
|
68
|
+
return name;
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
72
|
+
inline Array Module::ancestors() const
|
73
|
+
{
|
74
|
+
return detail::protect(rb_mod_ancestors, this->value());
|
75
|
+
}
|
76
|
+
|
77
|
+
inline Class Module::singleton_class() const
|
78
|
+
{
|
79
|
+
return CLASS_OF(value());
|
80
|
+
}
|
81
|
+
}
|
82
|
+
#endif // Rice__Forward_Declares__ipp_
|
data/rice/global_function.hpp
CHANGED
@@ -5,27 +5,23 @@
|
|
5
5
|
|
6
6
|
namespace Rice
|
7
7
|
{
|
8
|
+
template<typename Function_T>
|
9
|
+
[[deprecated("Please call define_global_function with Arg parameters")]]
|
10
|
+
void define_global_function(char const * name, Function_T&& func, MethodInfo* arguments);
|
8
11
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
template<typename Func_T>
|
23
|
-
void define_global_function(
|
24
|
-
char const * name,
|
25
|
-
Func_T func,
|
26
|
-
Arg const& arg);
|
27
|
-
|
28
|
-
|
12
|
+
//! Define an global function
|
13
|
+
/*! The method's implementation can be any function or static member
|
14
|
+
* function. A wrapper will be generated which will convert the arguments
|
15
|
+
* from ruby types to C++ types before calling the function. The return
|
16
|
+
* value will be converted back to ruby.
|
17
|
+
* \param name the name of the method
|
18
|
+
* \param func the implementation of the function, either a function
|
19
|
+
* pointer or a member function pointer.
|
20
|
+
* \param args a list of Arg instance used to define default parameters (optional)
|
21
|
+
* \return *this
|
22
|
+
*/
|
23
|
+
template<typename Function_T, typename...Arg_Ts>
|
24
|
+
void define_global_function(char const * name, Function_T&& func, Arg_Ts const& ...args);
|
29
25
|
} // Rice
|
30
26
|
|
31
27
|
#include "global_function.ipp"
|
data/rice/global_function.ipp
CHANGED
@@ -1,22 +1,13 @@
|
|
1
|
-
#include "
|
1
|
+
#include "cpp_api/Module.hpp"
|
2
2
|
|
3
|
-
template<typename
|
4
|
-
void Rice::define_global_function(
|
5
|
-
char const * name,
|
6
|
-
Func_T func,
|
7
|
-
Arguments* arguments)
|
3
|
+
template<typename Function_T>
|
4
|
+
void Rice::define_global_function(char const * name, Function_T&& func, MethodInfo* methodInfo)
|
8
5
|
{
|
9
|
-
Module(rb_mKernel).define_module_function(name, func,
|
6
|
+
Module(rb_mKernel).define_module_function(name, std::forward<Function_T>(func), methodInfo);
|
10
7
|
}
|
11
8
|
|
12
|
-
template<typename
|
13
|
-
void Rice::define_global_function(
|
14
|
-
char const * name,
|
15
|
-
Func_T func,
|
16
|
-
Arg const& arg)
|
9
|
+
template<typename Function_T, typename...Arg_Ts>
|
10
|
+
void Rice::define_global_function(char const * name, Function_T&& func, Arg_Ts const& ...args)
|
17
11
|
{
|
18
|
-
|
19
|
-
|
20
|
-
define_global_function(name, func, args);
|
21
|
-
}
|
22
|
-
|
12
|
+
Module(rb_mKernel).define_module_function(name, std::forward<Function_T>(func), args...);
|
13
|
+
}
|
data/rice/rice.hpp
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
#ifndef Rice__hpp_
|
2
|
+
#define Rice__hpp_
|
3
|
+
|
4
|
+
#include "detail/ruby.hpp"
|
5
|
+
#include "detail/rice_traits.hpp"
|
6
|
+
#include "detail/function_traits.hpp"
|
7
|
+
#include "detail/Type.hpp"
|
8
|
+
#include "detail/TypeRegistry.hpp"
|
9
|
+
#include "detail/Wrapper.hpp"
|
10
|
+
#include "detail/default_allocation_func.hpp"
|
11
|
+
#include "detail/Jump_Tag.hpp"
|
12
|
+
#include "Exception_defn.hpp"
|
13
|
+
#include "detail/RubyFunction.hpp"
|
14
|
+
#include "Return.hpp"
|
15
|
+
#include "Arg.hpp"
|
16
|
+
#include "detail/from_ruby.hpp"
|
17
|
+
#include "detail/to_ruby.hpp"
|
18
|
+
#include "detail/MethodInfo.hpp"
|
19
|
+
#include "detail/Exception_Handler.hpp"
|
20
|
+
#include "detail/Iterator.hpp"
|
21
|
+
#include "Exception.ipp"
|
22
|
+
#include "detail/method_data.hpp"
|
23
|
+
#include "ruby_try_catch.hpp"
|
24
|
+
#include "detail/NativeAttribute.hpp"
|
25
|
+
#include "detail/NativeFunction.hpp"
|
26
|
+
|
27
|
+
#include "ruby_mark.hpp"
|
28
|
+
|
29
|
+
#include "Identifier.hpp"
|
30
|
+
|
31
|
+
#include "cpp_api/Object.hpp"
|
32
|
+
#include "cpp_api/Builtin_Object.hpp"
|
33
|
+
#include "cpp_api/String.hpp"
|
34
|
+
#include "cpp_api/Array.hpp"
|
35
|
+
#include "cpp_api/Hash.hpp"
|
36
|
+
#include "cpp_api/Symbol.hpp"
|
37
|
+
|
38
|
+
#include "Address_Registration_Guard.hpp"
|
39
|
+
#include "cpp_api/Module.hpp"
|
40
|
+
#include "global_function.hpp"
|
41
|
+
|
42
|
+
#include "cpp_api/Class.hpp"
|
43
|
+
#include "cpp_api/Struct.hpp"
|
44
|
+
|
45
|
+
#include "Director.hpp"
|
46
|
+
#include "Data_Type.hpp"
|
47
|
+
#include "Constructor.hpp"
|
48
|
+
#include "Data_Object.hpp"
|
49
|
+
#include "detail/Iterator.ipp"
|
50
|
+
|
51
|
+
// Dependent on Data_Object due to the way method metadata is stored in the Ruby class
|
52
|
+
#include "detail/default_allocation_func.ipp"
|
53
|
+
|
54
|
+
#include "Enum.hpp"
|
55
|
+
|
56
|
+
// Dependent on Module, Class, Array and String
|
57
|
+
#include "forward_declares.ipp"
|
58
|
+
|
59
|
+
#endif // Rice__hpp_
|
data/rice/ruby_mark.hpp
CHANGED
@@ -5,9 +5,11 @@
|
|
5
5
|
/*! This function can be specialized for a particular type to override
|
6
6
|
* the default behavior (which is to not mark any additional objects).
|
7
7
|
*/
|
8
|
-
|
9
|
-
void ruby_mark(T * /* obj */)
|
8
|
+
namespace Rice
|
10
9
|
{
|
10
|
+
template<typename T>
|
11
|
+
void ruby_mark(T* data)
|
12
|
+
{
|
13
|
+
}
|
11
14
|
}
|
12
|
-
|
13
15
|
#endif // ruby_mark__hpp
|
data/rice/ruby_try_catch.hpp
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
#ifndef Rice__ruby_try_catch__hpp_
|
2
2
|
#define Rice__ruby_try_catch__hpp_
|
3
3
|
|
4
|
-
#include "Exception_Base_defn.hpp"
|
5
|
-
#include "Jump_Tag.hpp"
|
6
|
-
#include "detail/ruby.hpp"
|
7
4
|
#include <stdexcept>
|
8
5
|
|
6
|
+
#include "detail/Jump_Tag.hpp"
|
7
|
+
#include "Exception_defn.hpp"
|
8
|
+
|
9
9
|
/*! \def RUBY_TRY
|
10
10
|
* \brief Start a block to catch Ruby exceptions and rethrow them.
|
11
11
|
*/
|
@@ -41,7 +41,7 @@
|
|
41
41
|
* \brief End a RUBY_TRY block.
|
42
42
|
*/
|
43
43
|
#define RUBY_CATCH \
|
44
|
-
catch(::Rice::
|
44
|
+
catch(::Rice::Exception const & ex) \
|
45
45
|
{ \
|
46
46
|
RUBY_RETHROW(ex.value()); \
|
47
47
|
} \
|
data/rice/stl.hpp
ADDED
data/sample/callbacks/extconf.rb
CHANGED
@@ -1,24 +1,25 @@
|
|
1
|
-
#include
|
2
|
-
#include "rice/Constructor.hpp"
|
3
|
-
#include "rice/String.hpp"
|
1
|
+
#include <rice/rice.hpp>
|
4
2
|
|
5
3
|
using namespace Rice;
|
6
4
|
|
7
5
|
namespace
|
8
6
|
{
|
9
7
|
|
10
|
-
class CallbackHolder
|
8
|
+
class CallbackHolder
|
9
|
+
{
|
11
10
|
public:
|
12
11
|
|
13
|
-
void registerCallback(Rice::Object cb)
|
14
|
-
|
12
|
+
void registerCallback(Rice::Object cb)
|
13
|
+
{
|
14
|
+
callback_ = cb;
|
15
15
|
}
|
16
16
|
|
17
|
-
Rice::Object fireCallback(Rice::String param)
|
18
|
-
|
17
|
+
Rice::Object fireCallback(Rice::String param)
|
18
|
+
{
|
19
|
+
return callback_.call("call", param);
|
19
20
|
}
|
20
21
|
|
21
|
-
Rice::Object
|
22
|
+
Rice::Object callback_;
|
22
23
|
};
|
23
24
|
|
24
25
|
} // namespace
|
@@ -26,13 +27,9 @@ namespace
|
|
26
27
|
extern "C"
|
27
28
|
void Init_sample_callbacks()
|
28
29
|
{
|
29
|
-
RUBY_TRY
|
30
|
-
{
|
31
30
|
define_class<CallbackHolder>("CallbackHolder")
|
32
31
|
.define_constructor(Constructor<CallbackHolder>())
|
33
32
|
.define_method("register_callback", &CallbackHolder::registerCallback)
|
34
33
|
.define_method("fire_callback", &CallbackHolder::fireCallback);
|
35
|
-
}
|
36
|
-
RUBY_CATCH
|
37
34
|
}
|
38
35
|
|
data/sample/enum/extconf.rb
CHANGED
data/sample/enum/sample_enum.cpp
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
#include
|
2
|
-
#include "rice/ruby_try_catch.hpp"
|
1
|
+
#include <rice/rice.hpp>
|
3
2
|
|
4
3
|
using namespace Rice;
|
5
4
|
|
@@ -13,8 +12,6 @@ enum Sample_Enum
|
|
13
12
|
SE_BAZ = 100,
|
14
13
|
};
|
15
14
|
|
16
|
-
Rice::Enum<Sample_Enum> sample_enum_type;
|
17
|
-
|
18
15
|
char const * description(Sample_Enum e)
|
19
16
|
{
|
20
17
|
switch(e)
|
@@ -28,27 +25,16 @@ char const * description(Sample_Enum e)
|
|
28
25
|
|
29
26
|
} // namespace
|
30
27
|
|
31
|
-
template<>
|
32
|
-
Sample_Enum from_ruby<Sample_Enum>(Object x)
|
33
|
-
{
|
34
|
-
Data_Object<Sample_Enum> d(x, sample_enum_type);
|
35
|
-
return *d;
|
36
|
-
}
|
37
|
-
|
38
28
|
extern "C"
|
39
29
|
void Init_sample_enum()
|
40
30
|
{
|
41
|
-
|
42
|
-
{
|
43
|
-
sample_enum_type =
|
31
|
+
Rice::Enum<Sample_Enum> sample_enum_type =
|
44
32
|
define_enum<Sample_Enum>("Sample_Enum")
|
45
33
|
.define_value("FOO", SE_FOO)
|
46
34
|
.define_value("BAR", SE_BAR)
|
47
35
|
.define_value("BAZ", SE_BAZ);
|
48
|
-
|
36
|
+
|
49
37
|
sample_enum_type
|
50
38
|
.define_method("description", description);
|
51
|
-
}
|
52
|
-
RUBY_CATCH
|
53
39
|
}
|
54
40
|
|