rice 3.0.0 → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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 +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 +70 -141
- 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/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/ruby.ac +0 -135
- 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
data/rice/Builtin_Object.hpp
DELETED
data/rice/Builtin_Object.ipp
DELETED
|
@@ -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
data/rice/Class.ipp
DELETED
data/rice/Class_defn.hpp
DELETED
|
@@ -1,84 +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
|
-
* \example callbacks/sample_callbacks.cpp
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
namespace Rice
|
|
16
|
-
{
|
|
17
|
-
|
|
18
|
-
//! A helper for defining a Class and its methods.
|
|
19
|
-
/*! This class provides a C++-style interface to ruby's Class class and
|
|
20
|
-
* for defining methods on that class.
|
|
21
|
-
*/
|
|
22
|
-
class Class
|
|
23
|
-
: public Module_impl<Module, Class>
|
|
24
|
-
{
|
|
25
|
-
public:
|
|
26
|
-
//! Default construct a new class wrapper and initialize it to
|
|
27
|
-
//! rb_cObject.
|
|
28
|
-
Class();
|
|
29
|
-
|
|
30
|
-
//! Construct a new class wrapper from a ruby object of type T_CLASS.
|
|
31
|
-
Class(VALUE v);
|
|
32
|
-
|
|
33
|
-
//! Disallow creation of an instance from Ruby code.
|
|
34
|
-
/*! Undefines the singleton method allocate (or new, if using a
|
|
35
|
-
* version of ruby prior to 1.7) and the instance method initialize.
|
|
36
|
-
*/
|
|
37
|
-
Class & undef_creation_funcs();
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
//! Define a new class in the namespace given by module.
|
|
41
|
-
/*! \param module the Module in which to define the class.
|
|
42
|
-
* \param name the name of the class.
|
|
43
|
-
* \param superclass the base class to use.
|
|
44
|
-
* \return the new class.
|
|
45
|
-
*/
|
|
46
|
-
Class define_class_under(
|
|
47
|
-
Object module,
|
|
48
|
-
char const * name,
|
|
49
|
-
Object superclass = rb_cObject);
|
|
50
|
-
|
|
51
|
-
//! Define a new class in the default namespace.
|
|
52
|
-
/*! \param name the name of the class.
|
|
53
|
-
* \param superclass the base class to use.
|
|
54
|
-
* \return the new class.
|
|
55
|
-
*/
|
|
56
|
-
Class define_class(
|
|
57
|
-
char const * name,
|
|
58
|
-
Object superclass = rb_cObject);
|
|
59
|
-
|
|
60
|
-
//! Create a new anonymous class.
|
|
61
|
-
/*! \param superclass the base class to use.
|
|
62
|
-
* \return the new class.
|
|
63
|
-
*/
|
|
64
|
-
Class anonymous_class(
|
|
65
|
-
Object superclass = rb_cObject);
|
|
66
|
-
|
|
67
|
-
} // namespace Rice
|
|
68
|
-
|
|
69
|
-
template<>
|
|
70
|
-
inline
|
|
71
|
-
Rice::Class from_ruby<Rice::Class>(Rice::Object x)
|
|
72
|
-
{
|
|
73
|
-
return Rice::Class(x);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
template<>
|
|
77
|
-
inline
|
|
78
|
-
Rice::Object to_ruby<Rice::Class>(Rice::Class const & x)
|
|
79
|
-
{
|
|
80
|
-
return x;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
#endif // Rice__Class_defn__hpp_
|
|
84
|
-
|
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
|
-
|
data/rice/Data_Type_fwd.hpp
DELETED
data/rice/Director.cpp
DELETED
data/rice/Exception.cpp
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
#include "Exception.hpp"
|
|
2
|
-
#include "protect.hpp"
|
|
3
|
-
#include "to_from_ruby.hpp"
|
|
4
|
-
#include "detail/ruby.hpp"
|
|
5
|
-
|
|
6
|
-
#include <stdarg.h>
|
|
7
|
-
#define va_init_list(a,b) va_start(a,b)
|
|
8
|
-
|
|
9
|
-
Rice::Exception::
|
|
10
|
-
Exception(VALUE e)
|
|
11
|
-
: Exception_Base(e)
|
|
12
|
-
, message_(Qnil)
|
|
13
|
-
, message_guard_(&message_)
|
|
14
|
-
{
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
Rice::Exception::
|
|
18
|
-
Exception(Exception const & other)
|
|
19
|
-
: Exception_Base(other)
|
|
20
|
-
, message_(other.message_)
|
|
21
|
-
, message_guard_(&message_)
|
|
22
|
-
{
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
Rice::Exception::
|
|
26
|
-
Exception(Object exc, char const * fmt, ...)
|
|
27
|
-
: Exception_Base(Qnil)
|
|
28
|
-
, message_(Qnil)
|
|
29
|
-
, message_guard_(&message_)
|
|
30
|
-
{
|
|
31
|
-
va_list args;
|
|
32
|
-
char buf[BUFSIZ];
|
|
33
|
-
|
|
34
|
-
va_init_list(args, fmt);
|
|
35
|
-
vsnprintf(buf, BUFSIZ, fmt, args);
|
|
36
|
-
buf[BUFSIZ - 1] = '\0';
|
|
37
|
-
va_end(args);
|
|
38
|
-
|
|
39
|
-
set_value(protect(rb_exc_new2, exc, buf));
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
Rice::String Rice::Exception::
|
|
43
|
-
message() const
|
|
44
|
-
{
|
|
45
|
-
return protect(rb_funcall, value(), rb_intern("message"), 0);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
char const * Rice::Exception::
|
|
49
|
-
what() const throw()
|
|
50
|
-
{
|
|
51
|
-
message_ = message();
|
|
52
|
-
return from_ruby<char const *>(message_);
|
|
53
|
-
}
|
|
54
|
-
|
data/rice/Exception_Base.hpp
DELETED
data/rice/Exception_Base.ipp
DELETED
|
@@ -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_
|
data/rice/Hash.hpp
DELETED
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
#ifndef Rice__Hash__hpp_
|
|
2
|
-
#define Rice__Hash__hpp_
|
|
3
|
-
|
|
4
|
-
#include "Builtin_Object_defn.hpp"
|
|
5
|
-
#include "Array.hpp"
|
|
6
|
-
#include "to_from_ruby_defn.hpp"
|
|
7
|
-
#include "detail/ruby.hpp"
|
|
8
|
-
#include <iterator>
|
|
9
|
-
#include <type_traits>
|
|
10
|
-
|
|
11
|
-
namespace Rice
|
|
12
|
-
{
|
|
13
|
-
|
|
14
|
-
//! A wrapper for the ruby Hash class.
|
|
15
|
-
//! This class provides a C++-style interface to ruby's Hash class and
|
|
16
|
-
//! its associated rb_hash_* functions.
|
|
17
|
-
//! Example:
|
|
18
|
-
//! \code
|
|
19
|
-
//! Hash h;
|
|
20
|
-
//! h[42] = String("foo");
|
|
21
|
-
//! h[10] = String("bar");
|
|
22
|
-
//! std::cout << String(h[42]) << std::endl;
|
|
23
|
-
//! \endcode
|
|
24
|
-
class Hash
|
|
25
|
-
: public Builtin_Object<T_HASH>
|
|
26
|
-
{
|
|
27
|
-
public:
|
|
28
|
-
//! Construct a new hash.
|
|
29
|
-
Hash();
|
|
30
|
-
|
|
31
|
-
//! Wrap an existing hash.
|
|
32
|
-
/*! \param v the hash to wrap.
|
|
33
|
-
*/
|
|
34
|
-
Hash(Object v);
|
|
35
|
-
|
|
36
|
-
//! Return the number of elements in the hash.
|
|
37
|
-
size_t size() const;
|
|
38
|
-
|
|
39
|
-
private:
|
|
40
|
-
//! A helper class so hash[key]=value can work.
|
|
41
|
-
class Proxy;
|
|
42
|
-
|
|
43
|
-
public:
|
|
44
|
-
//! Get the value for the given key.
|
|
45
|
-
/*! \param key the key whose value should be retrieved from the hash.
|
|
46
|
-
* \return the value associated with the given key.
|
|
47
|
-
*/
|
|
48
|
-
template<typename Key_T>
|
|
49
|
-
Proxy const operator[](Key_T const & key) const;
|
|
50
|
-
|
|
51
|
-
//! Get the value for the given key.
|
|
52
|
-
/*! \param key the key whose value should be retrieved from the hash.
|
|
53
|
-
* \return the value associated with the given key.
|
|
54
|
-
*/
|
|
55
|
-
template<typename Key_T>
|
|
56
|
-
Proxy operator[](Key_T const & key);
|
|
57
|
-
|
|
58
|
-
//! Get the value for the given key
|
|
59
|
-
/*! The returned value is converted to the type given by Value_T.
|
|
60
|
-
* \param key the key whose value should be retrieved from the hash.
|
|
61
|
-
* \return the value associated with the given key, converted to C++
|
|
62
|
-
* type Value_T.
|
|
63
|
-
*/
|
|
64
|
-
template<typename Value_T, typename Key_T>
|
|
65
|
-
Value_T get(Key_T const & key);
|
|
66
|
-
|
|
67
|
-
//! A helper class for dereferencing iterators
|
|
68
|
-
class Entry;
|
|
69
|
-
|
|
70
|
-
//! A helper class for implementing iterators for a Hash.
|
|
71
|
-
template<typename Hash_Ref_T, typename Value_T>
|
|
72
|
-
class Iterator;
|
|
73
|
-
|
|
74
|
-
public:
|
|
75
|
-
//! An iterator.
|
|
76
|
-
typedef Iterator<Hash &, Entry> iterator;
|
|
77
|
-
|
|
78
|
-
//! A const iterator.
|
|
79
|
-
typedef Iterator<Hash const &, Entry const> const_iterator;
|
|
80
|
-
|
|
81
|
-
public:
|
|
82
|
-
//! Return an iterator to the beginning of the hash.
|
|
83
|
-
iterator begin();
|
|
84
|
-
|
|
85
|
-
//! Return a const iterator to the beginning of the hash.
|
|
86
|
-
const_iterator begin() const;
|
|
87
|
-
|
|
88
|
-
//! Return an iterator to the end of the hash.
|
|
89
|
-
iterator end();
|
|
90
|
-
|
|
91
|
-
//! Return a const to the end of the hash.
|
|
92
|
-
const_iterator end() const;
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
//! A helper class so hash[key]=value can work.
|
|
96
|
-
class Hash::Proxy
|
|
97
|
-
{
|
|
98
|
-
public:
|
|
99
|
-
//! Construct a new Proxy.
|
|
100
|
-
Proxy(Hash hash, Object key);
|
|
101
|
-
|
|
102
|
-
//! Implicit conversion to Object.
|
|
103
|
-
operator Object() const;
|
|
104
|
-
|
|
105
|
-
//! Explicit conversion to VALUE.
|
|
106
|
-
VALUE value() const;
|
|
107
|
-
|
|
108
|
-
//! Assignment operator.
|
|
109
|
-
template<typename T>
|
|
110
|
-
Object operator=(T const & value);
|
|
111
|
-
|
|
112
|
-
void swap(Proxy & proxy);
|
|
113
|
-
|
|
114
|
-
private:
|
|
115
|
-
Hash hash_;
|
|
116
|
-
Object key_;
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
//! A helper class for dereferencing iterators
|
|
120
|
-
/*! This class is intended to look similar to an std::pair.
|
|
121
|
-
*/
|
|
122
|
-
class Hash::Entry
|
|
123
|
-
{
|
|
124
|
-
public:
|
|
125
|
-
//! Construct a new Entry.
|
|
126
|
-
Entry(Hash hash, Object key);
|
|
127
|
-
|
|
128
|
-
//! Copy constructor.
|
|
129
|
-
Entry(Entry const & entry);
|
|
130
|
-
|
|
131
|
-
Object const key; //!< The key
|
|
132
|
-
Object const & first; //!< An alias for the key
|
|
133
|
-
|
|
134
|
-
Proxy value; //!< The value
|
|
135
|
-
Proxy & second; //!< An alias for the value
|
|
136
|
-
|
|
137
|
-
Entry & operator=(Entry const & rhs);
|
|
138
|
-
|
|
139
|
-
void swap(Entry & entry);
|
|
140
|
-
|
|
141
|
-
friend bool operator<(Entry const & lhs, Entry const & rhs);
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
bool operator<(Hash::Entry const & lhs, Hash::Entry const & rhs);
|
|
145
|
-
|
|
146
|
-
//! A helper class for implementing iterators for a Hash.
|
|
147
|
-
template<typename Hash_Ref_T, typename Value_T>
|
|
148
|
-
class Hash::Iterator
|
|
149
|
-
{
|
|
150
|
-
public:
|
|
151
|
-
using iterator_category = std::input_iterator_tag;
|
|
152
|
-
using value_type = Value_T;
|
|
153
|
-
using difference_type = long;
|
|
154
|
-
using pointer = Object*;
|
|
155
|
-
using reference = Value_T&;
|
|
156
|
-
|
|
157
|
-
//! Construct a new Iterator.
|
|
158
|
-
Iterator(Hash_Ref_T hash);
|
|
159
|
-
|
|
160
|
-
//! Construct a new Iterator with a given start-at index point
|
|
161
|
-
Iterator(Hash_Ref_T hash, int start_at);
|
|
162
|
-
|
|
163
|
-
//! Copy construct an Iterator.
|
|
164
|
-
Iterator(Iterator const & iterator);
|
|
165
|
-
|
|
166
|
-
//! Construct an Iterator from another Iterator of a different const
|
|
167
|
-
//! qualification.
|
|
168
|
-
template<typename Iterator_T>
|
|
169
|
-
Iterator(Iterator_T const & iterator);
|
|
170
|
-
|
|
171
|
-
//! Assignment operator.
|
|
172
|
-
Iterator & operator=(Iterator const & rhs);
|
|
173
|
-
|
|
174
|
-
//! Preincrement operator.
|
|
175
|
-
Iterator & operator++();
|
|
176
|
-
|
|
177
|
-
//! Postincrement operator.
|
|
178
|
-
Iterator operator++(int);
|
|
179
|
-
|
|
180
|
-
//! Dereference operator.
|
|
181
|
-
Value_T operator*();
|
|
182
|
-
|
|
183
|
-
//! Dereference operator.
|
|
184
|
-
Value_T * operator->();
|
|
185
|
-
|
|
186
|
-
//! Equality operator.
|
|
187
|
-
bool operator==(Iterator const & rhs) const;
|
|
188
|
-
|
|
189
|
-
//! Inequality operator.
|
|
190
|
-
bool operator!=(Iterator const & rhs) const;
|
|
191
|
-
|
|
192
|
-
template<typename Hash_Ref_T_, typename Value_T_>
|
|
193
|
-
friend class Hash::Iterator;
|
|
194
|
-
|
|
195
|
-
//! Swap with another iterator of the same type.
|
|
196
|
-
void swap(Iterator & iterator);
|
|
197
|
-
|
|
198
|
-
protected:
|
|
199
|
-
Object current_key();
|
|
200
|
-
|
|
201
|
-
Array hash_keys();
|
|
202
|
-
|
|
203
|
-
private:
|
|
204
|
-
Hash hash_;
|
|
205
|
-
size_t current_index_;
|
|
206
|
-
VALUE keys_;
|
|
207
|
-
|
|
208
|
-
mutable typename std::remove_const<Value_T>::type tmp_;
|
|
209
|
-
};
|
|
210
|
-
|
|
211
|
-
} // namespace Rice
|
|
212
|
-
|
|
213
|
-
template<>
|
|
214
|
-
inline
|
|
215
|
-
Rice::Hash from_ruby<Rice::Hash>(Rice::Object x)
|
|
216
|
-
{
|
|
217
|
-
return Rice::Hash(x);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
template<>
|
|
221
|
-
inline
|
|
222
|
-
Rice::Object to_ruby<Rice::Hash>(Rice::Hash const & x)
|
|
223
|
-
{
|
|
224
|
-
return x;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
#include "Hash.ipp"
|
|
228
|
-
|
|
229
|
-
#endif // Rice__Hash__hpp_
|
|
230
|
-
|