rice 2.1.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/COPYING +2 -2
- data/Doxyfile +4 -16
- data/Makefile.am +2 -2
- data/Makefile.in +28 -17
- data/{README → README.md} +323 -328
- data/aclocal.m4 +104 -107
- data/ax_cxx_compile_stdcxx.m4 +951 -0
- data/configure +549 -238
- data/configure.ac +3 -3
- data/extconf.rb +11 -10
- data/rice/Array.hpp +16 -16
- data/rice/Array.ipp +11 -11
- data/rice/Class_defn.hpp +1 -0
- data/rice/Constructor.hpp +27 -371
- data/rice/Data_Object_defn.hpp +3 -3
- data/rice/Director.hpp +3 -3
- data/rice/Enum.ipp +1 -1
- data/rice/Exception.cpp +2 -7
- data/rice/Hash.hpp +8 -5
- data/rice/Hash.ipp +2 -2
- data/rice/Makefile.am +1 -4
- data/rice/Makefile.in +80 -35
- data/rice/Module_impl.ipp +1 -1
- data/rice/Object.cpp +1 -1
- data/rice/Object.ipp +15 -1
- data/rice/Object_defn.hpp +24 -1
- data/rice/String.cpp +2 -7
- data/rice/Struct.cpp +2 -2
- data/rice/Struct.hpp +1 -1
- data/rice/Struct.ipp +1 -1
- data/rice/config.hpp +2 -2
- data/rice/config.hpp.in +2 -2
- data/rice/detail/Arguments.hpp +1 -1
- data/rice/detail/Auto_Function_Wrapper.ipp +512 -1025
- data/rice/detail/Auto_Member_Function_Wrapper.ipp +272 -545
- data/rice/detail/Iterator.hpp +2 -2
- data/rice/detail/method_data.cpp +8 -2
- data/rice/detail/ruby.hpp +1 -4
- data/rice/detail/ruby_version_code.hpp +1 -1
- data/rice/detail/wrap_function.hpp +32 -307
- data/rice/protect.hpp +3 -57
- data/rice/to_from_ruby.ipp +128 -4
- data/ruby/Makefile.in +11 -8
- data/ruby/lib/Makefile.in +10 -7
- data/ruby/lib/version.rb +1 -1
- data/sample/Makefile.am +10 -4
- data/sample/Makefile.in +20 -11
- data/sample/callbacks/extconf.rb +3 -0
- data/sample/callbacks/sample_callbacks.cpp +38 -0
- data/sample/callbacks/test.rb +28 -0
- data/test/Makefile.am +1 -0
- data/test/Makefile.in +118 -49
- data/test/embed_ruby.cpp +21 -0
- data/test/embed_ruby.hpp +4 -0
- data/test/ext/Makefile.in +10 -7
- data/test/test_Address_Registration_Guard.cpp +2 -1
- data/test/test_Array.cpp +2 -1
- data/test/test_Builtin_Object.cpp +2 -1
- data/test/test_Class.cpp +7 -4
- data/test/test_Data_Object.cpp +2 -1
- data/test/test_Data_Type.cpp +2 -1
- data/test/test_Director.cpp +2 -1
- data/test/test_Enum.cpp +24 -3
- data/test/test_Exception.cpp +2 -1
- data/test/test_Hash.cpp +2 -1
- data/test/test_Identifier.cpp +2 -1
- data/test/test_Memory_Management.cpp +2 -1
- data/test/test_Module.cpp +2 -1
- data/test/test_Object.cpp +13 -1
- data/test/test_String.cpp +2 -1
- data/test/test_Struct.cpp +2 -1
- data/test/test_Symbol.cpp +2 -1
- data/test/test_To_From_Ruby.cpp +102 -1
- data/test/test_global_functions.cpp +2 -1
- data/test/test_rice.rb +4 -0
- data/test/unittest.cpp +35 -9
- metadata +72 -16
- data/check_stdcxx_11.ac +0 -142
- data/rice/detail/object_call.hpp +0 -69
- data/rice/detail/object_call.ipp +0 -131
- data/rice/detail/traits.hpp +0 -43
- data/rice/detail/wrap_function.ipp +0 -514
data/rice/Data_Object_defn.hpp
CHANGED
@@ -62,7 +62,7 @@ public:
|
|
62
62
|
typedef void (*Ruby_Data_Func)(T * obj);
|
63
63
|
|
64
64
|
//! Wrap a C++ object.
|
65
|
-
/*! This constructor is
|
65
|
+
/*! This constructor is analogous to calling Data_Wrap_Struct. Be
|
66
66
|
* careful not to call this function more than once for the same
|
67
67
|
* pointer (in general, it should only be called for newly
|
68
68
|
* constructed objects that need to be managed by Ruby's garbage
|
@@ -82,7 +82,7 @@ public:
|
|
82
82
|
Ruby_Data_Func free_func = Default_Free_Function<T>::free);
|
83
83
|
|
84
84
|
//! Unwrap a Ruby object.
|
85
|
-
/*! This constructor is
|
85
|
+
/*! This constructor is analogous to calling Data_Get_Struct. Uses
|
86
86
|
* Data_Type<T>::klass as the class of the object.
|
87
87
|
* \param value the Ruby object to unwrap.
|
88
88
|
*/
|
@@ -90,7 +90,7 @@ public:
|
|
90
90
|
Object value);
|
91
91
|
|
92
92
|
//! Unwrap a Ruby object.
|
93
|
-
/*! This constructor is
|
93
|
+
/*! This constructor is analogous to calling Data_Get_Struct. Will
|
94
94
|
* throw an exception if the class of the object differs from the
|
95
95
|
* specified class.
|
96
96
|
* \param value the Ruby object to unwrap.
|
data/rice/Director.hpp
CHANGED
@@ -10,10 +10,10 @@ namespace Rice {
|
|
10
10
|
* You use this class to help build proxy classes so that polymorphism
|
11
11
|
* works from C++ into Ruby. See the main README for how this class works.
|
12
12
|
*/
|
13
|
-
class Director
|
13
|
+
class Director
|
14
14
|
{
|
15
15
|
public:
|
16
|
-
//! Construct new Director. Needs the Ruby object so that the
|
16
|
+
//! Construct new Director. Needs the Ruby object so that the
|
17
17
|
// proxy class can call methods on that object.
|
18
18
|
Director(Object self);
|
19
19
|
|
@@ -21,7 +21,7 @@ namespace Rice {
|
|
21
21
|
|
22
22
|
//! Raise a ruby exception when a call comes through for a pure virtual method
|
23
23
|
/*! If a Ruby script calls 'super' on a method that's otherwise a pure virtual
|
24
|
-
* method, use this method to throw an exception in this case.
|
24
|
+
* method, use this method to throw an exception in this case.
|
25
25
|
*/
|
26
26
|
void raisePureVirtual() const;
|
27
27
|
|
data/rice/Enum.ipp
CHANGED
@@ -75,7 +75,7 @@ initialize(
|
|
75
75
|
.define_method("to_i", to_i)
|
76
76
|
.define_method("inspect", inspect)
|
77
77
|
.define_method("<=>", compare)
|
78
|
-
|
78
|
+
.define_method("hash", hash)
|
79
79
|
.define_method("eql?", eql)
|
80
80
|
.define_method("==", eql)
|
81
81
|
.define_method("===", eql)
|
data/rice/Exception.cpp
CHANGED
@@ -3,13 +3,8 @@
|
|
3
3
|
#include "to_from_ruby.hpp"
|
4
4
|
#include "detail/ruby.hpp"
|
5
5
|
|
6
|
-
#ifdef HAVE_STDARG_PROTOTYPES
|
7
6
|
#include <stdarg.h>
|
8
7
|
#define va_init_list(a,b) va_start(a,b)
|
9
|
-
#else
|
10
|
-
#include <varargs.h>
|
11
|
-
#define va_init_list(a,b) va_start(a)
|
12
|
-
#endif
|
13
8
|
|
14
9
|
Rice::Exception::
|
15
10
|
Exception(VALUE e)
|
@@ -35,7 +30,7 @@ Exception(Object exc, char const * fmt, ...)
|
|
35
30
|
{
|
36
31
|
va_list args;
|
37
32
|
char buf[BUFSIZ];
|
38
|
-
|
33
|
+
|
39
34
|
va_init_list(args, fmt);
|
40
35
|
vsnprintf(buf, BUFSIZ, fmt, args);
|
41
36
|
buf[BUFSIZ - 1] = '\0';
|
@@ -54,6 +49,6 @@ char const * Rice::Exception::
|
|
54
49
|
what() const throw()
|
55
50
|
{
|
56
51
|
message_ = message();
|
57
|
-
return from_ruby<
|
52
|
+
return from_ruby<char const *>(message_);
|
58
53
|
}
|
59
54
|
|
data/rice/Hash.hpp
CHANGED
@@ -5,8 +5,8 @@
|
|
5
5
|
#include "Array.hpp"
|
6
6
|
#include "to_from_ruby_defn.hpp"
|
7
7
|
#include "detail/ruby.hpp"
|
8
|
-
#include "detail/traits.hpp"
|
9
8
|
#include <iterator>
|
9
|
+
#include <type_traits>
|
10
10
|
|
11
11
|
namespace Rice
|
12
12
|
{
|
@@ -146,11 +146,14 @@ bool operator<(Hash::Entry const & lhs, Hash::Entry const & rhs);
|
|
146
146
|
//! A helper class for implementing iterators for a Hash.
|
147
147
|
template<typename Hash_Ref_T, typename Value_T>
|
148
148
|
class Hash::Iterator
|
149
|
-
: public std::iterator<
|
150
|
-
std::input_iterator_tag,
|
151
|
-
Value_T>
|
152
149
|
{
|
153
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
|
+
|
154
157
|
//! Construct a new Iterator.
|
155
158
|
Iterator(Hash_Ref_T hash);
|
156
159
|
|
@@ -202,7 +205,7 @@ private:
|
|
202
205
|
size_t current_index_;
|
203
206
|
VALUE keys_;
|
204
207
|
|
205
|
-
mutable typename
|
208
|
+
mutable typename std::remove_const<Value_T>::type tmp_;
|
206
209
|
};
|
207
210
|
|
208
211
|
} // namespace Rice
|
data/rice/Hash.ipp
CHANGED
@@ -292,13 +292,13 @@ begin() const
|
|
292
292
|
inline Rice::Hash::iterator Rice::Hash::
|
293
293
|
end()
|
294
294
|
{
|
295
|
-
return iterator(*this, size());
|
295
|
+
return iterator(*this, (int)size());
|
296
296
|
}
|
297
297
|
|
298
298
|
inline Rice::Hash::const_iterator Rice::Hash::
|
299
299
|
end() const
|
300
300
|
{
|
301
|
-
return const_iterator(*this, size());
|
301
|
+
return const_iterator(*this, (int)size());
|
302
302
|
}
|
303
303
|
|
304
304
|
inline bool Rice::
|
data/rice/Makefile.am
CHANGED
@@ -78,6 +78,7 @@ to_from_ruby.hpp \
|
|
78
78
|
to_from_ruby.ipp \
|
79
79
|
to_from_ruby_defn.hpp \
|
80
80
|
ruby_mark.hpp \
|
81
|
+
config.hpp \
|
81
82
|
detail/Auto_Function_Wrapper.hpp \
|
82
83
|
detail/Auto_Function_Wrapper.ipp \
|
83
84
|
detail/Auto_Member_Function_Wrapper.hpp \
|
@@ -103,17 +104,13 @@ detail/from_ruby.hpp \
|
|
103
104
|
detail/from_ruby.ipp \
|
104
105
|
detail/method_data.hpp \
|
105
106
|
detail/node.hpp \
|
106
|
-
detail/object_call.hpp \
|
107
|
-
detail/object_call.ipp \
|
108
107
|
detail/protect.hpp \
|
109
108
|
detail/ruby.hpp \
|
110
109
|
detail/st.hpp \
|
111
|
-
detail/traits.hpp \
|
112
110
|
detail/to_ruby.hpp \
|
113
111
|
detail/to_ruby.ipp \
|
114
112
|
detail/win32.hpp \
|
115
113
|
detail/wrap_function.hpp \
|
116
|
-
detail/wrap_function.ipp \
|
117
114
|
detail/ruby_version_code.hpp
|
118
115
|
|
119
116
|
includedir = ${prefix}/include/rice
|
data/rice/Makefile.in
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
# Makefile.in generated by automake 1.
|
1
|
+
# Makefile.in generated by automake 1.16.3 from Makefile.am.
|
2
2
|
# @configure_input@
|
3
3
|
|
4
|
-
# Copyright (C) 1994-
|
4
|
+
# Copyright (C) 1994-2020 Free Software Foundation, Inc.
|
5
5
|
|
6
6
|
# This Makefile.in is free software; the Free Software Foundation
|
7
7
|
# gives unlimited permission to copy and/or distribute it,
|
@@ -91,7 +91,7 @@ build_triplet = @build@
|
|
91
91
|
host_triplet = @host@
|
92
92
|
subdir = rice
|
93
93
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
94
|
-
am__aclocal_m4_deps = $(top_srcdir)/
|
94
|
+
am__aclocal_m4_deps = $(top_srcdir)/ax_cxx_compile_stdcxx.m4 \
|
95
95
|
$(top_srcdir)/ruby.ac $(top_srcdir)/doxygen.ac \
|
96
96
|
$(top_srcdir)/configure.ac
|
97
97
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
@@ -162,7 +162,16 @@ am__v_at_0 = @
|
|
162
162
|
am__v_at_1 =
|
163
163
|
DEFAULT_INCLUDES = -I.@am__isrc@
|
164
164
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
165
|
-
|
165
|
+
am__maybe_remake_depfiles = depfiles
|
166
|
+
am__depfiles_remade = ./$(DEPDIR)/Address_Registration_Guard.Po \
|
167
|
+
./$(DEPDIR)/Arg_operators.Po ./$(DEPDIR)/Class.Po \
|
168
|
+
./$(DEPDIR)/Data_Type.Po ./$(DEPDIR)/Director.Po \
|
169
|
+
./$(DEPDIR)/Exception.Po ./$(DEPDIR)/Identifier.Po \
|
170
|
+
./$(DEPDIR)/Module.Po ./$(DEPDIR)/Object.Po \
|
171
|
+
./$(DEPDIR)/String.Po ./$(DEPDIR)/Struct.Po \
|
172
|
+
./$(DEPDIR)/Symbol.Po detail/$(DEPDIR)/check_ruby_type.Po \
|
173
|
+
detail/$(DEPDIR)/demangle.Po detail/$(DEPDIR)/method_data.Po \
|
174
|
+
detail/$(DEPDIR)/protect.Po
|
166
175
|
am__mv = mv -f
|
167
176
|
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
168
177
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
@@ -185,8 +194,8 @@ am__can_run_installinfo = \
|
|
185
194
|
*) (install-info --version) >/dev/null 2>&1;; \
|
186
195
|
esac
|
187
196
|
HEADERS = $(nobase_include_HEADERS)
|
188
|
-
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
|
189
|
-
|
197
|
+
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
|
198
|
+
config.hpp.in
|
190
199
|
# Read a list of newline-separated strings from the standard input,
|
191
200
|
# and print each of them once, without duplicates. Input order is
|
192
201
|
# *not* preserved.
|
@@ -250,7 +259,7 @@ ECHO_C = @ECHO_C@
|
|
250
259
|
ECHO_N = @ECHO_N@
|
251
260
|
ECHO_T = @ECHO_T@
|
252
261
|
EXEEXT = @EXEEXT@
|
253
|
-
|
262
|
+
HAVE_CXX14 = @HAVE_CXX14@
|
254
263
|
INSTALL = @INSTALL@
|
255
264
|
INSTALL_DATA = @INSTALL_DATA@
|
256
265
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
@@ -420,6 +429,7 @@ to_from_ruby.hpp \
|
|
420
429
|
to_from_ruby.ipp \
|
421
430
|
to_from_ruby_defn.hpp \
|
422
431
|
ruby_mark.hpp \
|
432
|
+
config.hpp \
|
423
433
|
detail/Auto_Function_Wrapper.hpp \
|
424
434
|
detail/Auto_Function_Wrapper.ipp \
|
425
435
|
detail/Auto_Member_Function_Wrapper.hpp \
|
@@ -445,17 +455,13 @@ detail/from_ruby.hpp \
|
|
445
455
|
detail/from_ruby.ipp \
|
446
456
|
detail/method_data.hpp \
|
447
457
|
detail/node.hpp \
|
448
|
-
detail/object_call.hpp \
|
449
|
-
detail/object_call.ipp \
|
450
458
|
detail/protect.hpp \
|
451
459
|
detail/ruby.hpp \
|
452
460
|
detail/st.hpp \
|
453
|
-
detail/traits.hpp \
|
454
461
|
detail/to_ruby.hpp \
|
455
462
|
detail/to_ruby.ipp \
|
456
463
|
detail/win32.hpp \
|
457
464
|
detail/wrap_function.hpp \
|
458
|
-
detail/wrap_function.ipp \
|
459
465
|
detail/ruby_version_code.hpp
|
460
466
|
|
461
467
|
AM_CPPFLAGS = @RUBY_CPPFLAGS@
|
@@ -482,8 +488,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
482
488
|
*config.status*) \
|
483
489
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
484
490
|
*) \
|
485
|
-
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(
|
486
|
-
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(
|
491
|
+
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
|
492
|
+
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
|
487
493
|
esac;
|
488
494
|
|
489
495
|
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
@@ -567,22 +573,28 @@ mostlyclean-compile:
|
|
567
573
|
distclean-compile:
|
568
574
|
-rm -f *.tab.c
|
569
575
|
|
570
|
-
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Address_Registration_Guard.Po@am__quote@
|
571
|
-
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Arg_operators.Po@am__quote@
|
572
|
-
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Class.Po@am__quote@
|
573
|
-
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Data_Type.Po@am__quote@
|
574
|
-
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Director.Po@am__quote@
|
575
|
-
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Exception.Po@am__quote@
|
576
|
-
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Identifier.Po@am__quote@
|
577
|
-
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Module.Po@am__quote@
|
578
|
-
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Object.Po@am__quote@
|
579
|
-
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/String.Po@am__quote@
|
580
|
-
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Struct.Po@am__quote@
|
581
|
-
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Symbol.Po@am__quote@
|
582
|
-
@AMDEP_TRUE@@am__include@ @am__quote@detail/$(DEPDIR)/check_ruby_type.Po@am__quote@
|
583
|
-
@AMDEP_TRUE@@am__include@ @am__quote@detail/$(DEPDIR)/demangle.Po@am__quote@
|
584
|
-
@AMDEP_TRUE@@am__include@ @am__quote@detail/$(DEPDIR)/method_data.Po@am__quote@
|
585
|
-
@AMDEP_TRUE@@am__include@ @am__quote@detail/$(DEPDIR)/protect.Po@am__quote@
|
576
|
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Address_Registration_Guard.Po@am__quote@ # am--include-marker
|
577
|
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Arg_operators.Po@am__quote@ # am--include-marker
|
578
|
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Class.Po@am__quote@ # am--include-marker
|
579
|
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Data_Type.Po@am__quote@ # am--include-marker
|
580
|
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Director.Po@am__quote@ # am--include-marker
|
581
|
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Exception.Po@am__quote@ # am--include-marker
|
582
|
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Identifier.Po@am__quote@ # am--include-marker
|
583
|
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Module.Po@am__quote@ # am--include-marker
|
584
|
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Object.Po@am__quote@ # am--include-marker
|
585
|
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/String.Po@am__quote@ # am--include-marker
|
586
|
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Struct.Po@am__quote@ # am--include-marker
|
587
|
+
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Symbol.Po@am__quote@ # am--include-marker
|
588
|
+
@AMDEP_TRUE@@am__include@ @am__quote@detail/$(DEPDIR)/check_ruby_type.Po@am__quote@ # am--include-marker
|
589
|
+
@AMDEP_TRUE@@am__include@ @am__quote@detail/$(DEPDIR)/demangle.Po@am__quote@ # am--include-marker
|
590
|
+
@AMDEP_TRUE@@am__include@ @am__quote@detail/$(DEPDIR)/method_data.Po@am__quote@ # am--include-marker
|
591
|
+
@AMDEP_TRUE@@am__include@ @am__quote@detail/$(DEPDIR)/protect.Po@am__quote@ # am--include-marker
|
592
|
+
|
593
|
+
$(am__depfiles_remade):
|
594
|
+
@$(MKDIR_P) $(@D)
|
595
|
+
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
|
596
|
+
|
597
|
+
am--depfiles: $(am__depfiles_remade)
|
586
598
|
|
587
599
|
.cpp.o:
|
588
600
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
|
@@ -676,7 +688,10 @@ cscopelist-am: $(am__tagged_files)
|
|
676
688
|
distclean-tags:
|
677
689
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
678
690
|
|
679
|
-
distdir: $(
|
691
|
+
distdir: $(BUILT_SOURCES)
|
692
|
+
$(MAKE) $(AM_MAKEFLAGS) distdir-am
|
693
|
+
|
694
|
+
distdir-am: $(DISTFILES)
|
680
695
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
681
696
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
682
697
|
list='$(DISTFILES)'; \
|
@@ -750,7 +765,22 @@ clean: clean-am
|
|
750
765
|
clean-am: clean-generic clean-libLIBRARIES mostlyclean-am
|
751
766
|
|
752
767
|
distclean: distclean-am
|
753
|
-
|
768
|
+
-rm -f ./$(DEPDIR)/Address_Registration_Guard.Po
|
769
|
+
-rm -f ./$(DEPDIR)/Arg_operators.Po
|
770
|
+
-rm -f ./$(DEPDIR)/Class.Po
|
771
|
+
-rm -f ./$(DEPDIR)/Data_Type.Po
|
772
|
+
-rm -f ./$(DEPDIR)/Director.Po
|
773
|
+
-rm -f ./$(DEPDIR)/Exception.Po
|
774
|
+
-rm -f ./$(DEPDIR)/Identifier.Po
|
775
|
+
-rm -f ./$(DEPDIR)/Module.Po
|
776
|
+
-rm -f ./$(DEPDIR)/Object.Po
|
777
|
+
-rm -f ./$(DEPDIR)/String.Po
|
778
|
+
-rm -f ./$(DEPDIR)/Struct.Po
|
779
|
+
-rm -f ./$(DEPDIR)/Symbol.Po
|
780
|
+
-rm -f detail/$(DEPDIR)/check_ruby_type.Po
|
781
|
+
-rm -f detail/$(DEPDIR)/demangle.Po
|
782
|
+
-rm -f detail/$(DEPDIR)/method_data.Po
|
783
|
+
-rm -f detail/$(DEPDIR)/protect.Po
|
754
784
|
-rm -f Makefile
|
755
785
|
distclean-am: clean-am distclean-compile distclean-generic \
|
756
786
|
distclean-hdr distclean-tags
|
@@ -796,7 +826,22 @@ install-ps-am:
|
|
796
826
|
installcheck-am:
|
797
827
|
|
798
828
|
maintainer-clean: maintainer-clean-am
|
799
|
-
|
829
|
+
-rm -f ./$(DEPDIR)/Address_Registration_Guard.Po
|
830
|
+
-rm -f ./$(DEPDIR)/Arg_operators.Po
|
831
|
+
-rm -f ./$(DEPDIR)/Class.Po
|
832
|
+
-rm -f ./$(DEPDIR)/Data_Type.Po
|
833
|
+
-rm -f ./$(DEPDIR)/Director.Po
|
834
|
+
-rm -f ./$(DEPDIR)/Exception.Po
|
835
|
+
-rm -f ./$(DEPDIR)/Identifier.Po
|
836
|
+
-rm -f ./$(DEPDIR)/Module.Po
|
837
|
+
-rm -f ./$(DEPDIR)/Object.Po
|
838
|
+
-rm -f ./$(DEPDIR)/String.Po
|
839
|
+
-rm -f ./$(DEPDIR)/Struct.Po
|
840
|
+
-rm -f ./$(DEPDIR)/Symbol.Po
|
841
|
+
-rm -f detail/$(DEPDIR)/check_ruby_type.Po
|
842
|
+
-rm -f detail/$(DEPDIR)/demangle.Po
|
843
|
+
-rm -f detail/$(DEPDIR)/method_data.Po
|
844
|
+
-rm -f detail/$(DEPDIR)/protect.Po
|
800
845
|
-rm -f Makefile
|
801
846
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
802
847
|
|
@@ -816,9 +861,9 @@ uninstall-am: uninstall-libLIBRARIES uninstall-nobase_includeHEADERS
|
|
816
861
|
|
817
862
|
.MAKE: all install-am install-strip
|
818
863
|
|
819
|
-
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean
|
820
|
-
clean-libLIBRARIES cscopelist-am ctags ctags-am
|
821
|
-
distclean-compile distclean-generic distclean-hdr \
|
864
|
+
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
|
865
|
+
clean-generic clean-libLIBRARIES cscopelist-am ctags ctags-am \
|
866
|
+
distclean distclean-compile distclean-generic distclean-hdr \
|
822
867
|
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
823
868
|
install install-am install-data install-data-am install-dvi \
|
824
869
|
install-dvi-am install-exec install-exec-am install-html \
|
data/rice/Module_impl.ipp
CHANGED
data/rice/Object.cpp
CHANGED
data/rice/Object.ipp
CHANGED
@@ -3,8 +3,22 @@
|
|
3
3
|
|
4
4
|
#include "protect.hpp"
|
5
5
|
#include "detail/ruby.hpp"
|
6
|
+
#include "to_from_ruby.hpp"
|
6
7
|
|
7
|
-
#include
|
8
|
+
#include <vector>
|
9
|
+
|
10
|
+
template<typename ...ArgT>
|
11
|
+
inline Rice::Object Rice::Object::
|
12
|
+
call(Identifier id, ArgT... args) const
|
13
|
+
{
|
14
|
+
auto asList = this->convert_args<ArgT...>(args...);
|
15
|
+
return protect(rb_funcall2, value(), id, (int)asList.size(), asList.data());
|
16
|
+
}
|
17
|
+
|
18
|
+
template<typename ...ArgT>
|
19
|
+
std::vector<VALUE> Rice::Object::convert_args(ArgT&... args) const {
|
20
|
+
return std::vector<VALUE>{ to_ruby(args)... };
|
21
|
+
}
|
8
22
|
|
9
23
|
template<typename T>
|
10
24
|
void Rice::Object::
|
data/rice/Object_defn.hpp
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
#include "detail/ruby.hpp"
|
9
9
|
|
10
10
|
#include <iosfwd>
|
11
|
+
#include <vector>
|
11
12
|
|
12
13
|
namespace Rice
|
13
14
|
{
|
@@ -151,7 +152,25 @@ public:
|
|
151
152
|
Object attr_get(
|
152
153
|
Identifier name) const;
|
153
154
|
|
154
|
-
|
155
|
+
//! Call the Ruby method specified by 'id' on object 'obj'.
|
156
|
+
/*! Pass in arguments (arg1, arg2, ...). The arguments will be converted to
|
157
|
+
* Ruby objects with to_ruby<>.
|
158
|
+
*
|
159
|
+
* E.g.:
|
160
|
+
* \code
|
161
|
+
* Rice::Object obj = x.call("foo", "one", 2);
|
162
|
+
* \endcode
|
163
|
+
*
|
164
|
+
* If a return type is specified, the return value will automatically be
|
165
|
+
* converted to that type as long as 'from_ruby' exists for that type.
|
166
|
+
*
|
167
|
+
* E.g.:
|
168
|
+
* \code
|
169
|
+
* float ret = x.call<float>("foo", z, 42);
|
170
|
+
* \endcode
|
171
|
+
*/
|
172
|
+
template<typename ...ArgT>
|
173
|
+
Object call(Identifier id, ArgT... args) const;
|
155
174
|
|
156
175
|
//! Vectorized call.
|
157
176
|
/*! Calls the method identified by id with the list of arguments
|
@@ -169,6 +188,10 @@ protected:
|
|
169
188
|
//! Set the encapsulated value.
|
170
189
|
void set_value(VALUE v);
|
171
190
|
|
191
|
+
//! Unpack the provided arguments and convert them all to Ruby types.
|
192
|
+
template<typename ...ArgT>
|
193
|
+
std::vector<VALUE> convert_args(ArgT&... args) const;
|
194
|
+
|
172
195
|
private:
|
173
196
|
volatile VALUE value_;
|
174
197
|
};
|