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/Struct.ipp
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
namespace Rice
|
|
2
|
-
{
|
|
3
|
-
|
|
4
|
-
template<typename T>
|
|
5
|
-
inline Object Struct::Instance::
|
|
6
|
-
operator[](T index)
|
|
7
|
-
{
|
|
8
|
-
return rb_struct_aref(value(), ULONG2NUM(index));
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
template<>
|
|
12
|
-
inline Object Struct::Instance::
|
|
13
|
-
operator[]<Identifier>(Identifier member)
|
|
14
|
-
{
|
|
15
|
-
unsigned long index = type_.offset_of(member);
|
|
16
|
-
return (*this)[index];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
template<>
|
|
20
|
-
inline Object Struct::Instance::
|
|
21
|
-
operator[]<char const *>(char const * name)
|
|
22
|
-
{
|
|
23
|
-
return (*this)[Identifier(name)];
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
} // Rice
|
data/rice/Symbol.cpp
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
#include "Symbol.hpp"
|
|
2
|
-
|
|
3
|
-
namespace
|
|
4
|
-
{
|
|
5
|
-
VALUE check_type(Rice::Object value, int type)
|
|
6
|
-
{
|
|
7
|
-
rb_check_type(value, type);
|
|
8
|
-
return Qnil;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
Rice::Symbol::
|
|
13
|
-
Symbol(VALUE v)
|
|
14
|
-
: Object(v)
|
|
15
|
-
{
|
|
16
|
-
protect(check_type, v, T_SYMBOL);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
Rice::Symbol::
|
|
20
|
-
Symbol(Object v)
|
|
21
|
-
: Object(v)
|
|
22
|
-
{
|
|
23
|
-
protect(check_type, v, T_SYMBOL);
|
|
24
|
-
}
|
|
25
|
-
|
data/rice/Symbol.hpp
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
#ifndef Rice__Symbol__hpp_
|
|
2
|
-
#define Rice__Symbol__hpp_
|
|
3
|
-
|
|
4
|
-
#include "Identifier.hpp"
|
|
5
|
-
#include "Object.hpp"
|
|
6
|
-
#include "detail/ruby.hpp"
|
|
7
|
-
#include <string>
|
|
8
|
-
|
|
9
|
-
namespace Rice
|
|
10
|
-
{
|
|
11
|
-
|
|
12
|
-
//! A wrapper for ruby's Symbol class.
|
|
13
|
-
/*! Symbols are internal identifiers in ruby. They are singletons and
|
|
14
|
-
* can be thought of as frozen strings. They differ from an Identifier
|
|
15
|
-
* in that they are in fact real Objects, but they can be converted
|
|
16
|
-
* back and forth between Identifier and Symbol.
|
|
17
|
-
*/
|
|
18
|
-
class Symbol
|
|
19
|
-
: public Object
|
|
20
|
-
{
|
|
21
|
-
public:
|
|
22
|
-
//! Wrap an existing symbol.
|
|
23
|
-
Symbol(VALUE v);
|
|
24
|
-
|
|
25
|
-
//! Wrap an existing symbol.
|
|
26
|
-
Symbol(Object v);
|
|
27
|
-
|
|
28
|
-
//! Construct a Symbol from an Identifier.
|
|
29
|
-
Symbol(Identifier id);
|
|
30
|
-
|
|
31
|
-
//! Construct a Symbol from a null-terminated C string.
|
|
32
|
-
Symbol(char const * s = "");
|
|
33
|
-
|
|
34
|
-
//! Construct a Symbol from an std::string.
|
|
35
|
-
Symbol(std::string const & s);
|
|
36
|
-
|
|
37
|
-
//! Return a string representation of the Symbol.
|
|
38
|
-
char const * c_str() const;
|
|
39
|
-
|
|
40
|
-
//! Return a string representation of the Symbol.
|
|
41
|
-
std::string str() const;
|
|
42
|
-
|
|
43
|
-
//! Return the Symbol as an Identifier.
|
|
44
|
-
Identifier to_id() const;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
} // namespace Rice
|
|
48
|
-
|
|
49
|
-
template<>
|
|
50
|
-
inline
|
|
51
|
-
Rice::Symbol from_ruby<Rice::Symbol>(Rice::Object x)
|
|
52
|
-
{
|
|
53
|
-
return Rice::Symbol(x);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
template<>
|
|
57
|
-
inline
|
|
58
|
-
Rice::Object to_ruby<Rice::Symbol>(Rice::Symbol const & x)
|
|
59
|
-
{
|
|
60
|
-
return x;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
#include "Symbol.ipp"
|
|
64
|
-
|
|
65
|
-
#endif // Rice__Symbol__hpp_
|
|
66
|
-
|
data/rice/Symbol.ipp
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
#ifndef Rice__Symbol__ipp_
|
|
2
|
-
#define Rice__Symbol__ipp_
|
|
3
|
-
|
|
4
|
-
#include "protect.hpp"
|
|
5
|
-
#include "detail/ruby.hpp"
|
|
6
|
-
|
|
7
|
-
inline Rice::Symbol::
|
|
8
|
-
Symbol(char const * s)
|
|
9
|
-
: Object(ID2SYM(rb_intern(s)))
|
|
10
|
-
{
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
inline Rice::Symbol::
|
|
14
|
-
Symbol(std::string const & s)
|
|
15
|
-
: Object(ID2SYM(rb_intern(s.c_str())))
|
|
16
|
-
{
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
inline Rice::Symbol::
|
|
20
|
-
Symbol(Identifier id)
|
|
21
|
-
: Object(ID2SYM(id))
|
|
22
|
-
{
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
inline char const * Rice::Symbol::
|
|
26
|
-
c_str() const
|
|
27
|
-
{
|
|
28
|
-
return to_id().c_str();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
inline std::string Rice::Symbol::
|
|
32
|
-
str() const
|
|
33
|
-
{
|
|
34
|
-
return to_id().str();
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
inline Rice::Identifier Rice::Symbol::
|
|
38
|
-
to_id() const
|
|
39
|
-
{
|
|
40
|
-
return rb_to_id(value());
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
#endif // Rice__Symbol__ipp_
|
|
44
|
-
|
data/rice/config.hpp
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/* rice/config.hpp. Generated from config.hpp.in by configure. */
|
|
2
|
-
/* rice/config.hpp.in. Generated from configure.ac by autoheader. */
|
|
3
|
-
|
|
4
|
-
/* define if the compiler supports basic C++14 syntax */
|
|
5
|
-
#define HAVE_CXX14 1
|
|
6
|
-
|
|
7
|
-
/* Define to 1 if you have the <env.h> header file. */
|
|
8
|
-
/* #undef HAVE_ENV_H */
|
|
9
|
-
|
|
10
|
-
/* Define to 1 if you have the <node.h> header file. */
|
|
11
|
-
/* #undef HAVE_NODE_H */
|
|
12
|
-
|
|
13
|
-
/* Define to 1 if you have the <ruby.h> header file. */
|
|
14
|
-
#define HAVE_RUBY_H 1
|
|
15
|
-
|
|
16
|
-
/* Define to 1 if you have the <ruby/node.h> header file. */
|
|
17
|
-
/* #undef HAVE_RUBY_NODE_H */
|
|
18
|
-
|
|
19
|
-
/* Define to 1 if you have the <version.h> header file. */
|
|
20
|
-
/* #undef HAVE_VERSION_H */
|
|
21
|
-
|
|
22
|
-
/* Name of package */
|
|
23
|
-
#define PACKAGE "rice"
|
|
24
|
-
|
|
25
|
-
/* Define to the address where bug reports for this package should be sent. */
|
|
26
|
-
#define PACKAGE_BUGREPORT ""
|
|
27
|
-
|
|
28
|
-
/* Define to the full name of this package. */
|
|
29
|
-
#define PACKAGE_NAME "rice"
|
|
30
|
-
|
|
31
|
-
/* Define to the full name and version of this package. */
|
|
32
|
-
#define PACKAGE_STRING "rice 1.1"
|
|
33
|
-
|
|
34
|
-
/* Define to the one symbol short name of this package. */
|
|
35
|
-
#define PACKAGE_TARNAME "rice"
|
|
36
|
-
|
|
37
|
-
/* Define to the home page for this package. */
|
|
38
|
-
#define PACKAGE_URL ""
|
|
39
|
-
|
|
40
|
-
/* Define to the version of this package. */
|
|
41
|
-
#define PACKAGE_VERSION "1.1"
|
|
42
|
-
|
|
43
|
-
/* Define this macro to use ruby/node.h */
|
|
44
|
-
/* #undef REALLY_HAVE_RUBY_NODE_H */
|
|
45
|
-
|
|
46
|
-
/* Version number of package */
|
|
47
|
-
#define VERSION "1.1"
|
data/rice/config.hpp.in
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/* rice/config.hpp.in. Generated from configure.ac by autoheader. */
|
|
2
|
-
|
|
3
|
-
/* define if the compiler supports basic C++14 syntax */
|
|
4
|
-
#undef HAVE_CXX14
|
|
5
|
-
|
|
6
|
-
/* Define to 1 if you have the <env.h> header file. */
|
|
7
|
-
#undef HAVE_ENV_H
|
|
8
|
-
|
|
9
|
-
/* Define to 1 if you have the <node.h> header file. */
|
|
10
|
-
#undef HAVE_NODE_H
|
|
11
|
-
|
|
12
|
-
/* Define to 1 if you have the <ruby.h> header file. */
|
|
13
|
-
#undef HAVE_RUBY_H
|
|
14
|
-
|
|
15
|
-
/* Define to 1 if you have the <ruby/node.h> header file. */
|
|
16
|
-
#undef HAVE_RUBY_NODE_H
|
|
17
|
-
|
|
18
|
-
/* Define to 1 if you have the <version.h> header file. */
|
|
19
|
-
#undef HAVE_VERSION_H
|
|
20
|
-
|
|
21
|
-
/* Name of package */
|
|
22
|
-
#undef PACKAGE
|
|
23
|
-
|
|
24
|
-
/* Define to the address where bug reports for this package should be sent. */
|
|
25
|
-
#undef PACKAGE_BUGREPORT
|
|
26
|
-
|
|
27
|
-
/* Define to the full name of this package. */
|
|
28
|
-
#undef PACKAGE_NAME
|
|
29
|
-
|
|
30
|
-
/* Define to the full name and version of this package. */
|
|
31
|
-
#undef PACKAGE_STRING
|
|
32
|
-
|
|
33
|
-
/* Define to the one symbol short name of this package. */
|
|
34
|
-
#undef PACKAGE_TARNAME
|
|
35
|
-
|
|
36
|
-
/* Define to the home page for this package. */
|
|
37
|
-
#undef PACKAGE_URL
|
|
38
|
-
|
|
39
|
-
/* Define to the version of this package. */
|
|
40
|
-
#undef PACKAGE_VERSION
|
|
41
|
-
|
|
42
|
-
/* Define this macro to use ruby/node.h */
|
|
43
|
-
#undef REALLY_HAVE_RUBY_NODE_H
|
|
44
|
-
|
|
45
|
-
/* Version number of package */
|
|
46
|
-
#undef VERSION
|
data/rice/detail/Arguments.hpp
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
#ifndef Rice__Arguments__hpp_
|
|
2
|
-
#define Rice__Arguments__hpp_
|
|
3
|
-
|
|
4
|
-
#include "../Arg_impl.hpp"
|
|
5
|
-
#include <sstream>
|
|
6
|
-
#include <vector>
|
|
7
|
-
#include "../to_from_ruby_defn.hpp"
|
|
8
|
-
|
|
9
|
-
namespace Rice {
|
|
10
|
-
|
|
11
|
-
class Arguments
|
|
12
|
-
{
|
|
13
|
-
public:
|
|
14
|
-
Arguments() {
|
|
15
|
-
required_ = 0;
|
|
16
|
-
optional_ = 0;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
~Arguments() {
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Get the full argument count of this
|
|
24
|
-
* list of arguments.
|
|
25
|
-
* Returns -1 no defined arguments
|
|
26
|
-
*/
|
|
27
|
-
int count() {
|
|
28
|
-
if(required_ == 0 && optional_ == 0) {
|
|
29
|
-
return -1;
|
|
30
|
-
} else {
|
|
31
|
-
return required_ + optional_;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Get the rb_scan_args format string for this
|
|
37
|
-
* list of arguments.
|
|
38
|
-
* In the case of no Args (default case), this
|
|
39
|
-
* method uses the passed in full argument count
|
|
40
|
-
*/
|
|
41
|
-
std::string formatString(size_t fullArgCount)
|
|
42
|
-
{
|
|
43
|
-
std::stringstream s;
|
|
44
|
-
if(required_ == 0 && optional_ == 0)
|
|
45
|
-
{
|
|
46
|
-
s << fullArgCount << 0;
|
|
47
|
-
}
|
|
48
|
-
else
|
|
49
|
-
{
|
|
50
|
-
s << required_ << optional_;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return s.str();
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Add a defined Arg to this list of Arguments
|
|
58
|
-
*/
|
|
59
|
-
void add(const Arg& arg)
|
|
60
|
-
{
|
|
61
|
-
args_.push_back(arg);
|
|
62
|
-
|
|
63
|
-
if(arg.hasDefaultValue())
|
|
64
|
-
{
|
|
65
|
-
optional_++;
|
|
66
|
-
}
|
|
67
|
-
else
|
|
68
|
-
{
|
|
69
|
-
required_++;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Is the argument at the request location an optional
|
|
75
|
-
* argument?
|
|
76
|
-
*/
|
|
77
|
-
bool isOptional(unsigned int pos)
|
|
78
|
-
{
|
|
79
|
-
if(required_ == 0 && optional_ == 0)
|
|
80
|
-
{
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
if(pos >= args_.size())
|
|
84
|
-
{
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
return args_[pos].hasDefaultValue();
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Given a position, a type, and a ruby VALUE, figure out
|
|
92
|
-
* what argument value we need to return according to
|
|
93
|
-
* defaults and if that VALUE is nil or not
|
|
94
|
-
*/
|
|
95
|
-
template<typename Arg_T>
|
|
96
|
-
Arg_T getArgumentOrDefault(int pos, VALUE in)
|
|
97
|
-
{
|
|
98
|
-
if(isOptional(pos) && NIL_P(in))
|
|
99
|
-
{
|
|
100
|
-
return args_[pos].getDefaultValue<Arg_T>();
|
|
101
|
-
}
|
|
102
|
-
else
|
|
103
|
-
{
|
|
104
|
-
return from_ruby<Arg_T>(in);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
private:
|
|
109
|
-
std::vector<Arg> args_;
|
|
110
|
-
|
|
111
|
-
/** Keep counts of required and optional parameters */
|
|
112
|
-
int required_;
|
|
113
|
-
int optional_;
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
#endif // Rice__Arguments__hpp_
|