rice 2.1.3 → 4.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +121 -0
- data/CONTRIBUTORS.md +19 -0
- data/COPYING +2 -2
- data/Gemfile +3 -0
- data/README.md +45 -1028
- data/Rakefile +95 -12
- data/include/rice/rice.hpp +7766 -0
- data/include/rice/stl.hpp +1113 -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 +30 -376
- 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 +14 -9
- 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 -50
- 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 +6 -0
- data/sample/callbacks/sample_callbacks.cpp +35 -0
- data/sample/callbacks/test.rb +28 -0
- 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 +34 -0
- data/test/embed_ruby.hpp +4 -0
- 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 +25 -11
- data/test/test_Array.cpp +131 -74
- data/test/test_Attribute.cpp +147 -0
- data/test/test_Builtin_Object.cpp +36 -15
- data/test/test_Class.cpp +151 -276
- data/test/test_Constructor.cpp +10 -9
- data/test/test_Data_Object.cpp +135 -193
- data/test/test_Data_Type.cpp +323 -252
- data/test/test_Director.cpp +56 -42
- data/test/test_Enum.cpp +230 -104
- data/test/test_Exception.cpp +7 -7
- data/test/test_Hash.cpp +33 -31
- data/test/test_Identifier.cpp +6 -6
- 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 +4 -5
- data/test/test_Module.cpp +169 -111
- data/test/test_Object.cpp +51 -19
- 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 +3 -3
- data/test/test_Struct.cpp +31 -40
- data/test/test_Symbol.cpp +3 -3
- data/test/test_To_From_Ruby.cpp +283 -218
- data/test/test_global_functions.cpp +41 -20
- data/test/unittest.cpp +34 -8
- data/test/unittest.hpp +0 -4
- metadata +121 -136
- data/Doxyfile +0 -2268
- data/Makefile.am +0 -26
- data/Makefile.in +0 -923
- data/README.mingw +0 -8
- data/aclocal.m4 +0 -1088
- data/bootstrap +0 -8
- data/check_stdcxx_11.ac +0 -103
- data/config.guess +0 -1421
- data/config.sub +0 -1807
- data/configure +0 -7367
- data/configure.ac +0 -55
- data/depcomp +0 -791
- data/doxygen.ac +0 -314
- data/doxygen.am +0 -186
- data/extconf.rb +0 -69
- 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 -83
- 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 -59
- 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 -227
- data/rice/Hash.ipp +0 -329
- data/rice/Identifier.cpp +0 -8
- data/rice/Jump_Tag.hpp +0 -24
- data/rice/Makefile.am +0 -125
- data/rice/Makefile.in +0 -888
- 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 -19
- data/rice/Object_defn.hpp +0 -191
- data/rice/Require_Guard.hpp +0 -21
- data/rice/String.cpp +0 -94
- 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 -3694
- data/rice/detail/Auto_Member_Function_Wrapper.hpp +0 -897
- data/rice/detail/Auto_Member_Function_Wrapper.ipp +0 -2774
- 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 -86
- data/rice/detail/node.hpp +0 -13
- data/rice/detail/object_call.hpp +0 -69
- data/rice/detail/object_call.ipp +0 -131
- 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/traits.hpp +0 -43
- data/rice/detail/win32.hpp +0 -16
- data/rice/detail/wrap_function.hpp +0 -341
- data/rice/detail/wrap_function.ipp +0 -514
- data/rice/protect.hpp +0 -92
- 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 -294
- 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 -47
- data/sample/Makefile.in +0 -489
- data/test/Makefile.am +0 -72
- data/test/Makefile.in +0 -1213
- data/test/ext/Makefile.am +0 -41
- data/test/ext/Makefile.in +0 -483
- data/test/test_rice.rb +0 -41
data/rice/detail/demangle.hpp
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
#ifndef Rice__detail__demangle__hpp_
|
2
|
-
#define Rice__detail__demangle__hpp_
|
3
|
-
|
4
|
-
#include <string>
|
5
|
-
|
6
|
-
namespace Rice
|
7
|
-
{
|
8
|
-
|
9
|
-
namespace detail
|
10
|
-
{
|
11
|
-
|
12
|
-
std::string demangle(char const * mangled_name);
|
13
|
-
std::string demangle(std::string const & mangled_name);
|
14
|
-
|
15
|
-
} // detail
|
16
|
-
|
17
|
-
} // Rice
|
18
|
-
|
19
|
-
#endif // Rice__detail__demangle__hpp_
|
data/rice/detail/env.hpp
DELETED
data/rice/detail/method_data.cpp
DELETED
@@ -1,86 +0,0 @@
|
|
1
|
-
#include "method_data.hpp"
|
2
|
-
#include "ruby.hpp"
|
3
|
-
|
4
|
-
// TODO: This is silly, autoconf...
|
5
|
-
#undef PACKAGE_NAME
|
6
|
-
#undef PACKAGE_STRING
|
7
|
-
#undef PACKAGE_TARNAME
|
8
|
-
#undef PACKAGE_VERSION
|
9
|
-
#include "../config.hpp"
|
10
|
-
|
11
|
-
#define RICE_ID rb_intern("__rice__")
|
12
|
-
|
13
|
-
VALUE
|
14
|
-
Rice::detail::
|
15
|
-
method_data()
|
16
|
-
{
|
17
|
-
ID id;
|
18
|
-
VALUE klass;
|
19
|
-
if (!rb_frame_method_id_and_class(&id, &klass))
|
20
|
-
{
|
21
|
-
rb_raise(
|
22
|
-
rb_eRuntimeError,
|
23
|
-
"Cannot get method id and class for function");
|
24
|
-
}
|
25
|
-
|
26
|
-
if (rb_type(klass) == T_ICLASS) {
|
27
|
-
klass = rb_class_of(klass);
|
28
|
-
}
|
29
|
-
|
30
|
-
VALUE store = rb_ivar_get(klass, RICE_ID);
|
31
|
-
return (store == Qnil) ? Qnil : rb_ivar_get(store, id);
|
32
|
-
}
|
33
|
-
|
34
|
-
|
35
|
-
// Define a method and attach data to it.
|
36
|
-
// The method looks to ruby like a normal aliased CFUNC, with a modified
|
37
|
-
// origin class.
|
38
|
-
//
|
39
|
-
// How this works:
|
40
|
-
//
|
41
|
-
// To store method data and have it registered with the GC, we need a
|
42
|
-
// "slot" to put it in. This "slot" must be recognized and marked by
|
43
|
-
// the garbage collector. There happens to be such a place we can put
|
44
|
-
// data, and it has to do with aliased methods. When Ruby creates an
|
45
|
-
// alias for a method, it stores a reference to the original class in
|
46
|
-
// the method entry. The form of the method entry differs from ruby
|
47
|
-
// version to ruby version, but the concept is the same across all of
|
48
|
-
// them.
|
49
|
-
//
|
50
|
-
// In Rice, we make use of this by attach the data to a dummy object
|
51
|
-
// (store) in the class variables table.
|
52
|
-
//
|
53
|
-
// When Ruby makes a method call, it stores the class Object and method
|
54
|
-
// ID in the current stack frame. When Ruby calls into Rice, we grab
|
55
|
-
// the class and method ID from the stack frame, then pull the data out
|
56
|
-
// of the class. The data item is then used to determine how to convert
|
57
|
-
// arguments and return type, how to handle exceptions, etc.
|
58
|
-
//
|
59
|
-
VALUE
|
60
|
-
Rice::detail::
|
61
|
-
define_method_with_data(
|
62
|
-
VALUE klass, ID id, VALUE (*cfunc)(ANYARGS), int arity, VALUE data)
|
63
|
-
{
|
64
|
-
VALUE store = rb_attr_get(klass, RICE_ID);
|
65
|
-
|
66
|
-
if (store == Qnil) {
|
67
|
-
store = rb_obj_alloc(rb_cObject);
|
68
|
-
// store is stored in the instance variables table with
|
69
|
-
// name "__rice__".
|
70
|
-
// since "__rice__" does not have the @ prefix,
|
71
|
-
// so it can never be read at the Ruby level.
|
72
|
-
rb_ivar_set(klass, RICE_ID, store);
|
73
|
-
}
|
74
|
-
|
75
|
-
rb_ivar_set(store, id, data);
|
76
|
-
|
77
|
-
// Create the aliased method on the origin class
|
78
|
-
rb_define_method(
|
79
|
-
klass,
|
80
|
-
rb_id2name(id),
|
81
|
-
cfunc,
|
82
|
-
arity);
|
83
|
-
|
84
|
-
return Qnil;
|
85
|
-
}
|
86
|
-
|
data/rice/detail/node.hpp
DELETED
data/rice/detail/object_call.hpp
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
// This is a generated file. DO NOT EDIT!!
|
2
|
-
#ifdef DOXYGEN
|
3
|
-
|
4
|
-
//! Call the Ruby method specified by 'id' on object 'obj'.
|
5
|
-
/*! Pass in arguments (arg1, arg2, ...). The arguments will be converted to
|
6
|
-
* Ruby objects with to_ruby<>. The return value will automatically be
|
7
|
-
* converted to type Retval_T with from_ruby<>.
|
8
|
-
*
|
9
|
-
* E.g.:
|
10
|
-
* \code
|
11
|
-
* float y = x.call<float>("foo", z, 42);
|
12
|
-
* \endcode
|
13
|
-
*/
|
14
|
-
template<typename Retval_T>
|
15
|
-
Retval_T call(Identifier id, T1 arg1, T2 arg2, ...) const;
|
16
|
-
|
17
|
-
//! Version of call which defaults to Object return type.
|
18
|
-
Object call(Identifier id, T1 arg1, T2 arg2, ...) const;
|
19
|
-
#else
|
20
|
-
|
21
|
-
Object call(Identifier id) const;
|
22
|
-
|
23
|
-
template<typename T0>
|
24
|
-
Object call(Identifier id, T0 arg0) const;
|
25
|
-
|
26
|
-
template<typename T0, typename T1>
|
27
|
-
Object call(Identifier id, T0 arg0, T1 arg1) const;
|
28
|
-
|
29
|
-
template<typename T0, typename T1, typename T2>
|
30
|
-
Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2) const;
|
31
|
-
|
32
|
-
template<typename T0, typename T1, typename T2, typename T3>
|
33
|
-
Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3) const;
|
34
|
-
|
35
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4>
|
36
|
-
Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) const;
|
37
|
-
|
38
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
|
39
|
-
Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) const;
|
40
|
-
|
41
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
|
42
|
-
Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) const;
|
43
|
-
|
44
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
|
45
|
-
Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) const;
|
46
|
-
|
47
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
|
48
|
-
Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) const;
|
49
|
-
|
50
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
|
51
|
-
Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) const;
|
52
|
-
|
53
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
|
54
|
-
Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10) const;
|
55
|
-
|
56
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
|
57
|
-
Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11) const;
|
58
|
-
|
59
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
|
60
|
-
Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12) const;
|
61
|
-
|
62
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
|
63
|
-
Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13) const;
|
64
|
-
|
65
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14>
|
66
|
-
Object call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14) const;
|
67
|
-
|
68
|
-
|
69
|
-
#endif
|
data/rice/detail/object_call.ipp
DELETED
@@ -1,131 +0,0 @@
|
|
1
|
-
// This is a generated file. DO NOT EDIT!!
|
2
|
-
#include "../protect.hpp"
|
3
|
-
#include "../to_from_ruby.hpp"
|
4
|
-
|
5
|
-
inline Rice::Object Rice::Object::
|
6
|
-
call(Identifier id) const
|
7
|
-
{
|
8
|
-
VALUE args[] = { };
|
9
|
-
return protect(rb_funcall2, value(), id, 0, args);
|
10
|
-
}
|
11
|
-
|
12
|
-
template<typename T0>
|
13
|
-
inline Rice::Object Rice::Object::
|
14
|
-
call(Identifier id, T0 arg0) const
|
15
|
-
{
|
16
|
-
VALUE args[] = { to_ruby(arg0) };
|
17
|
-
return protect(rb_funcall2, value(), id, 1, args);
|
18
|
-
}
|
19
|
-
|
20
|
-
template<typename T0, typename T1>
|
21
|
-
inline Rice::Object Rice::Object::
|
22
|
-
call(Identifier id, T0 arg0, T1 arg1) const
|
23
|
-
{
|
24
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1) };
|
25
|
-
return protect(rb_funcall2, value(), id, 2, args);
|
26
|
-
}
|
27
|
-
|
28
|
-
template<typename T0, typename T1, typename T2>
|
29
|
-
inline Rice::Object Rice::Object::
|
30
|
-
call(Identifier id, T0 arg0, T1 arg1, T2 arg2) const
|
31
|
-
{
|
32
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2) };
|
33
|
-
return protect(rb_funcall2, value(), id, 3, args);
|
34
|
-
}
|
35
|
-
|
36
|
-
template<typename T0, typename T1, typename T2, typename T3>
|
37
|
-
inline Rice::Object Rice::Object::
|
38
|
-
call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3) const
|
39
|
-
{
|
40
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3) };
|
41
|
-
return protect(rb_funcall2, value(), id, 4, args);
|
42
|
-
}
|
43
|
-
|
44
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4>
|
45
|
-
inline Rice::Object Rice::Object::
|
46
|
-
call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) const
|
47
|
-
{
|
48
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4) };
|
49
|
-
return protect(rb_funcall2, value(), id, 5, args);
|
50
|
-
}
|
51
|
-
|
52
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
|
53
|
-
inline Rice::Object Rice::Object::
|
54
|
-
call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) const
|
55
|
-
{
|
56
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5) };
|
57
|
-
return protect(rb_funcall2, value(), id, 6, args);
|
58
|
-
}
|
59
|
-
|
60
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
|
61
|
-
inline Rice::Object Rice::Object::
|
62
|
-
call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) const
|
63
|
-
{
|
64
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6) };
|
65
|
-
return protect(rb_funcall2, value(), id, 7, args);
|
66
|
-
}
|
67
|
-
|
68
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
|
69
|
-
inline Rice::Object Rice::Object::
|
70
|
-
call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) const
|
71
|
-
{
|
72
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7) };
|
73
|
-
return protect(rb_funcall2, value(), id, 8, args);
|
74
|
-
}
|
75
|
-
|
76
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
|
77
|
-
inline Rice::Object Rice::Object::
|
78
|
-
call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) const
|
79
|
-
{
|
80
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8) };
|
81
|
-
return protect(rb_funcall2, value(), id, 9, args);
|
82
|
-
}
|
83
|
-
|
84
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
|
85
|
-
inline Rice::Object Rice::Object::
|
86
|
-
call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) const
|
87
|
-
{
|
88
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8), to_ruby(arg9) };
|
89
|
-
return protect(rb_funcall2, value(), id, 10, args);
|
90
|
-
}
|
91
|
-
|
92
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
|
93
|
-
inline Rice::Object Rice::Object::
|
94
|
-
call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10) const
|
95
|
-
{
|
96
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8), to_ruby(arg9), to_ruby(arg10) };
|
97
|
-
return protect(rb_funcall2, value(), id, 11, args);
|
98
|
-
}
|
99
|
-
|
100
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
|
101
|
-
inline Rice::Object Rice::Object::
|
102
|
-
call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11) const
|
103
|
-
{
|
104
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8), to_ruby(arg9), to_ruby(arg10), to_ruby(arg11) };
|
105
|
-
return protect(rb_funcall2, value(), id, 12, args);
|
106
|
-
}
|
107
|
-
|
108
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
|
109
|
-
inline Rice::Object Rice::Object::
|
110
|
-
call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12) const
|
111
|
-
{
|
112
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8), to_ruby(arg9), to_ruby(arg10), to_ruby(arg11), to_ruby(arg12) };
|
113
|
-
return protect(rb_funcall2, value(), id, 13, args);
|
114
|
-
}
|
115
|
-
|
116
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
|
117
|
-
inline Rice::Object Rice::Object::
|
118
|
-
call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13) const
|
119
|
-
{
|
120
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8), to_ruby(arg9), to_ruby(arg10), to_ruby(arg11), to_ruby(arg12), to_ruby(arg13) };
|
121
|
-
return protect(rb_funcall2, value(), id, 14, args);
|
122
|
-
}
|
123
|
-
|
124
|
-
template<typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13, typename T14>
|
125
|
-
inline Rice::Object Rice::Object::
|
126
|
-
call(Identifier id, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14) const
|
127
|
-
{
|
128
|
-
VALUE args[] = { to_ruby(arg0), to_ruby(arg1), to_ruby(arg2), to_ruby(arg3), to_ruby(arg4), to_ruby(arg5), to_ruby(arg6), to_ruby(arg7), to_ruby(arg8), to_ruby(arg9), to_ruby(arg10), to_ruby(arg11), to_ruby(arg12), to_ruby(arg13), to_ruby(arg14) };
|
129
|
-
return protect(rb_funcall2, value(), id, 15, args);
|
130
|
-
}
|
131
|
-
|
data/rice/detail/protect.cpp
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
#include "protect.hpp"
|
2
|
-
#include "../Exception.hpp"
|
3
|
-
#include "../Jump_Tag.hpp"
|
4
|
-
|
5
|
-
#ifndef TAG_RAISE
|
6
|
-
#define TAG_RAISE 0x6
|
7
|
-
#endif
|
8
|
-
|
9
|
-
VALUE Rice::detail::
|
10
|
-
protect(
|
11
|
-
RUBY_VALUE_FUNC f,
|
12
|
-
VALUE arg)
|
13
|
-
{
|
14
|
-
int state = 0;
|
15
|
-
VALUE retval = rb_protect(f, arg, &state);
|
16
|
-
if(state != 0)
|
17
|
-
{
|
18
|
-
VALUE err = rb_errinfo();
|
19
|
-
if(state == TAG_RAISE && RTEST(err))
|
20
|
-
{
|
21
|
-
// TODO: convert NoMemoryError into bad_alloc?
|
22
|
-
rb_set_errinfo(Rice::Nil);
|
23
|
-
throw Rice::Exception(err);
|
24
|
-
}
|
25
|
-
throw Jump_Tag(state);
|
26
|
-
}
|
27
|
-
return retval;
|
28
|
-
}
|
29
|
-
|
data/rice/detail/protect.hpp
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
#ifndef Rice__detail__protect__hpp_
|
2
|
-
#define Rice__detail__protect__hpp_
|
3
|
-
|
4
|
-
#include "ruby.hpp"
|
5
|
-
|
6
|
-
/*! \file
|
7
|
-
* \brief Functions for making exception-safe calls into Ruby code.
|
8
|
-
* These are the building blocks for building other exception-safe
|
9
|
-
* helper functions.
|
10
|
-
*/
|
11
|
-
|
12
|
-
namespace Rice
|
13
|
-
{
|
14
|
-
|
15
|
-
namespace detail
|
16
|
-
{
|
17
|
-
|
18
|
-
//! Call the given function, converting Ruby exceptions to C++
|
19
|
-
//! exceptions.
|
20
|
-
/*! Call the function f with the parameter arg If f raises a Ruby
|
21
|
-
* exception, then the exception is re-thrown as an Exception. If f
|
22
|
-
* exits with any other non-zero tag (e.g. a Symbol is thrown), then the
|
23
|
-
* tag is re-thrown as a Jump_Tag.
|
24
|
-
*/
|
25
|
-
VALUE protect(
|
26
|
-
RUBY_VALUE_FUNC f,
|
27
|
-
VALUE arg);
|
28
|
-
|
29
|
-
} // namespace detail
|
30
|
-
|
31
|
-
} // namespace Rice
|
32
|
-
|
33
|
-
#endif // Rice__detail__protect__hpp_
|
34
|
-
|
data/rice/detail/st.hpp
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
#ifndef Exc_Ruby___cpp__st__hpp_
|
2
|
-
#define Exc_Ruby___cpp__st__hpp_
|
3
|
-
|
4
|
-
/*! \file
|
5
|
-
* \brief Hacks to allow functions in st.h to be called from C++
|
6
|
-
* programs.
|
7
|
-
*/
|
8
|
-
|
9
|
-
#include "ruby.hpp"
|
10
|
-
|
11
|
-
// Ruby doesn't put extern "C" around st.h
|
12
|
-
|
13
|
-
extern "C"
|
14
|
-
{
|
15
|
-
#ifdef RUBY_VM
|
16
|
-
#include "ruby/st.h"
|
17
|
-
#else
|
18
|
-
#include "st.h"
|
19
|
-
#endif
|
20
|
-
}
|
21
|
-
|
22
|
-
#endif // Exc_Ruby___cpp__st__hpp_
|
data/rice/detail/traits.hpp
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
#ifndef Rice__detail__traits__hpp_
|
2
|
-
#define Rice__detail__traits__hpp_
|
3
|
-
|
4
|
-
namespace Rice
|
5
|
-
{
|
6
|
-
namespace detail
|
7
|
-
{
|
8
|
-
|
9
|
-
/**
|
10
|
-
* Remove const from a type
|
11
|
-
*/
|
12
|
-
template<typename T>
|
13
|
-
struct remove_const { typedef T Type; };
|
14
|
-
|
15
|
-
template<typename T>
|
16
|
-
struct remove_const<const T> { typedef T Type; };
|
17
|
-
|
18
|
-
/**
|
19
|
-
* Remove a reference from a type
|
20
|
-
*/
|
21
|
-
template<typename T>
|
22
|
-
struct remove_ref { typedef T Type; };
|
23
|
-
|
24
|
-
template<typename T>
|
25
|
-
struct remove_ref<T &> { typedef T Type; };
|
26
|
-
|
27
|
-
/**
|
28
|
-
* Do both of the above in one easy step
|
29
|
-
*/
|
30
|
-
template<typename T>
|
31
|
-
struct sanitize
|
32
|
-
{
|
33
|
-
typedef T Type;
|
34
|
-
//typedef typename remove_const<
|
35
|
-
//typename remove_ref<T>::Type
|
36
|
-
//>::Type Type;
|
37
|
-
};
|
38
|
-
|
39
|
-
}
|
40
|
-
}
|
41
|
-
|
42
|
-
|
43
|
-
#endif // Rice__detail__traits__hpp_
|