rice 1.3.1 → 1.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Doxyfile +1 -1
- data/Makefile.in +58 -142
- data/aclocal.m4 +112 -201
- data/config.guess +23 -84
- data/config.sub +23 -93
- data/configure +2727 -2406
- data/depcomp +14 -19
- data/install-sh +108 -120
- data/rice/Constructor.hpp +350 -322
- data/rice/Makefile.am +0 -1
- data/rice/Makefile.in +69 -119
- data/rice/config.hpp +2 -8
- data/rice/config.hpp.in +0 -6
- data/rice/detail/Auto_Function_Wrapper.hpp +1 -33
- data/rice/detail/Auto_Function_Wrapper.ipp +1009 -1060
- data/rice/detail/Auto_Member_Function_Wrapper.ipp +608 -672
- data/rice/detail/method_data.cpp +0 -4
- data/rice/detail/object_call.hpp +31 -48
- data/rice/detail/object_call.ipp +45 -61
- data/rice/detail/wrap_function.hpp +70 -74
- data/rice/detail/wrap_function.ipp +126 -143
- data/rice/protect.hpp +30 -30
- data/rice/protect.ipp +770 -696
- data/ruby.ac +0 -14
- data/ruby/Makefile.in +41 -108
- data/ruby/lib/Makefile.in +23 -64
- data/ruby/lib/version.rb +1 -1
- data/sample/Makefile.in +12 -36
- data/test/Makefile.in +59 -148
- data/test/ext/Makefile.in +12 -36
- data/test/test_Constructor.cpp +42 -153
- data/test/test_Module.cpp +4 -4
- metadata +132 -124
- data/rice/generate_code.rb +0 -1328
data/rice/protect.hpp
CHANGED
@@ -36,50 +36,50 @@ VALUE protect(Function f, T1 arg1, T2 arg2, ...);
|
|
36
36
|
template<typename Fun>
|
37
37
|
VALUE protect(Fun fun);
|
38
38
|
|
39
|
-
template<typename Fun, typename
|
40
|
-
VALUE protect(Fun fun,
|
39
|
+
template<typename Fun, typename T0>
|
40
|
+
VALUE protect(Fun fun, T0 const & t0);
|
41
41
|
|
42
|
-
template<typename Fun, typename
|
43
|
-
VALUE protect(Fun fun,
|
42
|
+
template<typename Fun, typename T0, typename T1>
|
43
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1);
|
44
44
|
|
45
|
-
template<typename Fun, typename
|
46
|
-
VALUE protect(Fun fun,
|
45
|
+
template<typename Fun, typename T0, typename T1, typename T2>
|
46
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2);
|
47
47
|
|
48
|
-
template<typename Fun, typename
|
49
|
-
VALUE protect(Fun fun,
|
48
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3>
|
49
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3);
|
50
50
|
|
51
|
-
template<typename Fun, typename T1, typename T2, typename T3, typename T4
|
52
|
-
VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4
|
51
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4>
|
52
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4);
|
53
53
|
|
54
|
-
template<typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5
|
55
|
-
VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5
|
54
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
|
55
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5);
|
56
56
|
|
57
|
-
template<typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6
|
58
|
-
VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6
|
57
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
|
58
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6);
|
59
59
|
|
60
|
-
template<typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7
|
61
|
-
VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7
|
60
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
|
61
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7);
|
62
62
|
|
63
|
-
template<typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8
|
64
|
-
VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8
|
63
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
|
64
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8);
|
65
65
|
|
66
|
-
template<typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9
|
67
|
-
VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9
|
66
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
|
67
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9);
|
68
68
|
|
69
|
-
template<typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10
|
70
|
-
VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10
|
69
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
|
70
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10);
|
71
71
|
|
72
|
-
template<typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11
|
73
|
-
VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11
|
72
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
|
73
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11);
|
74
74
|
|
75
|
-
template<typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12
|
76
|
-
VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12
|
75
|
+
template<typename Fun, 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>
|
76
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12);
|
77
77
|
|
78
|
-
template<typename Fun, 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
|
79
|
-
VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13
|
78
|
+
template<typename Fun, 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>
|
79
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13);
|
80
80
|
|
81
|
-
template<typename Fun, 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
|
82
|
-
VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13, T14 const & t14
|
81
|
+
template<typename Fun, 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>
|
82
|
+
VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13, T14 const & t14);
|
83
83
|
|
84
84
|
#endif // DOXYGEN
|
85
85
|
|
data/rice/protect.ipp
CHANGED
@@ -14,41 +14,41 @@ namespace Rice
|
|
14
14
|
namespace detail
|
15
15
|
{
|
16
16
|
|
17
|
-
template<typename Ret_T, typename Fun>
|
18
|
-
class Ruby_Function_0
|
19
|
-
{
|
20
|
-
public:
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
private:
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
};
|
31
|
-
|
32
|
-
template<typename Ret_T, typename Fun>
|
33
|
-
inline Ruby_Function_0<Ret_T, Fun>::
|
34
|
-
Ruby_Function_0(Fun f)
|
35
|
-
|
36
|
-
{ }
|
37
|
-
|
38
|
-
template<typename Ret_T, typename Fun>
|
39
|
-
inline void Ruby_Function_0<Ret_T, Fun>::
|
40
|
-
operator()()
|
41
|
-
{
|
42
|
-
|
43
|
-
}
|
44
|
-
|
45
|
-
template<typename Ret_T, typename Fun>
|
46
|
-
inline VALUE Ruby_Function_0<Ret_T, Fun>::
|
47
|
-
call(Ruby_Function_0 * f)
|
48
|
-
{
|
49
|
-
|
50
|
-
|
51
|
-
}
|
17
|
+
template<typename Ret_T, typename Fun>
|
18
|
+
class Ruby_Function_0
|
19
|
+
{
|
20
|
+
public:
|
21
|
+
Ruby_Function_0(Fun f);
|
22
|
+
inline void operator()();
|
23
|
+
static inline VALUE call(Ruby_Function_0 * f);
|
24
|
+
Ret_T const & result() const { return result_; }
|
25
|
+
|
26
|
+
private:
|
27
|
+
Fun f_;
|
28
|
+
|
29
|
+
Ret_T result_; // TODO: use placement new
|
30
|
+
};
|
31
|
+
|
32
|
+
template<typename Ret_T, typename Fun>
|
33
|
+
inline Ruby_Function_0<Ret_T, Fun>::
|
34
|
+
Ruby_Function_0(Fun f)
|
35
|
+
: f_(f)
|
36
|
+
{ }
|
37
|
+
|
38
|
+
template<typename Ret_T, typename Fun>
|
39
|
+
inline void Ruby_Function_0<Ret_T, Fun>::
|
40
|
+
operator()()
|
41
|
+
{
|
42
|
+
result_ = f_();
|
43
|
+
}
|
44
|
+
|
45
|
+
template<typename Ret_T, typename Fun>
|
46
|
+
inline VALUE Ruby_Function_0<Ret_T, Fun>::
|
47
|
+
call(Ruby_Function_0 * f)
|
48
|
+
{
|
49
|
+
(*f)();
|
50
|
+
return Qnil;
|
51
|
+
}
|
52
52
|
|
53
53
|
} // namespace detail
|
54
54
|
|
@@ -79,60 +79,66 @@ inline VALUE protect(Fun fun)
|
|
79
79
|
namespace detail
|
80
80
|
{
|
81
81
|
|
82
|
-
template<typename Ret_T, typename Fun, typename
|
83
|
-
class Ruby_Function_1
|
84
|
-
{
|
85
|
-
public:
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
private:
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
};
|
96
|
-
|
97
|
-
template<typename Ret_T, typename Fun, typename
|
98
|
-
inline Ruby_Function_1<Ret_T, Fun,
|
99
|
-
Ruby_Function_1(Fun f,
|
100
|
-
|
101
|
-
{ }
|
102
|
-
|
103
|
-
template<typename Ret_T, typename Fun, typename
|
104
|
-
inline void Ruby_Function_1<Ret_T, Fun,
|
105
|
-
operator()()
|
106
|
-
{
|
107
|
-
|
108
|
-
}
|
109
|
-
|
110
|
-
template<typename Ret_T, typename Fun, typename
|
111
|
-
inline VALUE Ruby_Function_1<Ret_T, Fun,
|
112
|
-
call(Ruby_Function_1 * f)
|
113
|
-
{
|
114
|
-
|
115
|
-
|
116
|
-
}
|
82
|
+
template<typename Ret_T, typename Fun, typename T0>
|
83
|
+
class Ruby_Function_1
|
84
|
+
{
|
85
|
+
public:
|
86
|
+
Ruby_Function_1(Fun f, T0 const & t0);
|
87
|
+
inline void operator()();
|
88
|
+
static inline VALUE call(Ruby_Function_1 * f);
|
89
|
+
Ret_T const & result() const { return result_; }
|
90
|
+
|
91
|
+
private:
|
92
|
+
Fun f_;
|
93
|
+
T0 const & t0_;
|
94
|
+
Ret_T result_; // TODO: use placement new
|
95
|
+
};
|
96
|
+
|
97
|
+
template<typename Ret_T, typename Fun, typename T0>
|
98
|
+
inline Ruby_Function_1<Ret_T, Fun, T0>::
|
99
|
+
Ruby_Function_1(Fun f, T0 const & t0)
|
100
|
+
: f_(f), t0_(t0)
|
101
|
+
{ }
|
102
|
+
|
103
|
+
template<typename Ret_T, typename Fun, typename T0>
|
104
|
+
inline void Ruby_Function_1<Ret_T, Fun, T0>::
|
105
|
+
operator()()
|
106
|
+
{
|
107
|
+
result_ = f_(t0_);
|
108
|
+
}
|
109
|
+
|
110
|
+
template<typename Ret_T, typename Fun, typename T0>
|
111
|
+
inline VALUE Ruby_Function_1<Ret_T, Fun, T0>::
|
112
|
+
call(Ruby_Function_1 * f)
|
113
|
+
{
|
114
|
+
(*f)();
|
115
|
+
return Qnil;
|
116
|
+
}
|
117
117
|
|
118
118
|
} // namespace detail
|
119
119
|
|
120
|
-
|
121
|
-
|
120
|
+
/**
|
121
|
+
* protect on a function with a return type
|
122
|
+
*/
|
123
|
+
template<typename Ret_T, typename Fun, typename T0>
|
124
|
+
inline Ret_T protect(Fun fun, T0 const & t0)
|
122
125
|
{
|
123
|
-
typedef detail::Ruby_Function_1<Ret_T, Fun,
|
124
|
-
RF f(fun,
|
126
|
+
typedef detail::Ruby_Function_1<Ret_T, Fun, T0> RF;
|
127
|
+
RF f(fun, t0);
|
125
128
|
detail::protect(
|
126
129
|
RUBY_VALUE_FUNC(RF::call),
|
127
130
|
reinterpret_cast<VALUE>(&f));
|
128
131
|
return f.result();
|
129
132
|
}
|
130
133
|
|
131
|
-
|
132
|
-
|
134
|
+
/**
|
135
|
+
* protect on a function with VALUE return type
|
136
|
+
*/
|
137
|
+
template<typename Fun, typename T0>
|
138
|
+
inline VALUE protect(Fun fun, T0 const & t0)
|
133
139
|
{
|
134
|
-
typedef detail::Ruby_Function_1<VALUE, Fun,
|
135
|
-
RF f(fun,
|
140
|
+
typedef detail::Ruby_Function_1<VALUE, Fun, T0> RF;
|
141
|
+
RF f(fun, t0);
|
136
142
|
detail::protect(
|
137
143
|
RUBY_VALUE_FUNC(RF::call),
|
138
144
|
reinterpret_cast<VALUE>(&f));
|
@@ -140,64 +146,69 @@ inline VALUE protect(Fun fun, T1 const & t1)
|
|
140
146
|
}
|
141
147
|
|
142
148
|
// ---------------------------------------------------------------------
|
143
|
-
|
144
149
|
namespace detail
|
145
150
|
{
|
146
151
|
|
147
|
-
template<typename Ret_T, typename Fun, typename
|
148
|
-
class Ruby_Function_2
|
149
|
-
{
|
150
|
-
public:
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
private:
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
};
|
161
|
-
|
162
|
-
template<typename Ret_T, typename Fun, typename
|
163
|
-
inline Ruby_Function_2<Ret_T, Fun,
|
164
|
-
Ruby_Function_2(Fun f,
|
165
|
-
|
166
|
-
{ }
|
167
|
-
|
168
|
-
template<typename Ret_T, typename Fun, typename
|
169
|
-
inline void Ruby_Function_2<Ret_T, Fun,
|
170
|
-
operator()()
|
171
|
-
{
|
172
|
-
|
173
|
-
}
|
174
|
-
|
175
|
-
template<typename Ret_T, typename Fun, typename
|
176
|
-
inline VALUE Ruby_Function_2<Ret_T, Fun,
|
177
|
-
call(Ruby_Function_2 * f)
|
178
|
-
{
|
179
|
-
|
180
|
-
|
181
|
-
}
|
152
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1>
|
153
|
+
class Ruby_Function_2
|
154
|
+
{
|
155
|
+
public:
|
156
|
+
Ruby_Function_2(Fun f, T0 const & t0, T1 const & t1);
|
157
|
+
inline void operator()();
|
158
|
+
static inline VALUE call(Ruby_Function_2 * f);
|
159
|
+
Ret_T const & result() const { return result_; }
|
160
|
+
|
161
|
+
private:
|
162
|
+
Fun f_;
|
163
|
+
T0 const & t0_; T1 const & t1_;
|
164
|
+
Ret_T result_; // TODO: use placement new
|
165
|
+
};
|
166
|
+
|
167
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1>
|
168
|
+
inline Ruby_Function_2<Ret_T, Fun, T0, T1>::
|
169
|
+
Ruby_Function_2(Fun f, T0 const & t0, T1 const & t1)
|
170
|
+
: f_(f), t0_(t0), t1_(t1)
|
171
|
+
{ }
|
172
|
+
|
173
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1>
|
174
|
+
inline void Ruby_Function_2<Ret_T, Fun, T0, T1>::
|
175
|
+
operator()()
|
176
|
+
{
|
177
|
+
result_ = f_(t0_, t1_);
|
178
|
+
}
|
179
|
+
|
180
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1>
|
181
|
+
inline VALUE Ruby_Function_2<Ret_T, Fun, T0, T1>::
|
182
|
+
call(Ruby_Function_2 * f)
|
183
|
+
{
|
184
|
+
(*f)();
|
185
|
+
return Qnil;
|
186
|
+
}
|
182
187
|
|
183
188
|
} // namespace detail
|
184
189
|
|
185
|
-
|
186
|
-
|
190
|
+
/**
|
191
|
+
* protect on a function with a return type
|
192
|
+
*/
|
193
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1>
|
194
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1)
|
187
195
|
{
|
188
|
-
typedef detail::Ruby_Function_2<Ret_T, Fun,
|
189
|
-
RF f(fun,
|
196
|
+
typedef detail::Ruby_Function_2<Ret_T, Fun, T0, T1> RF;
|
197
|
+
RF f(fun, t0, t1);
|
190
198
|
detail::protect(
|
191
199
|
RUBY_VALUE_FUNC(RF::call),
|
192
200
|
reinterpret_cast<VALUE>(&f));
|
193
201
|
return f.result();
|
194
202
|
}
|
195
203
|
|
196
|
-
|
197
|
-
|
204
|
+
/**
|
205
|
+
* protect on a function with VALUE return type
|
206
|
+
*/
|
207
|
+
template<typename Fun, typename T0, typename T1>
|
208
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1)
|
198
209
|
{
|
199
|
-
typedef detail::Ruby_Function_2<VALUE, Fun,
|
200
|
-
RF f(fun,
|
210
|
+
typedef detail::Ruby_Function_2<VALUE, Fun, T0, T1> RF;
|
211
|
+
RF f(fun, t0, t1);
|
201
212
|
detail::protect(
|
202
213
|
RUBY_VALUE_FUNC(RF::call),
|
203
214
|
reinterpret_cast<VALUE>(&f));
|
@@ -205,64 +216,69 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2)
|
|
205
216
|
}
|
206
217
|
|
207
218
|
// ---------------------------------------------------------------------
|
208
|
-
|
209
219
|
namespace detail
|
210
220
|
{
|
211
221
|
|
212
|
-
template<typename Ret_T, typename Fun, typename
|
213
|
-
class Ruby_Function_3
|
214
|
-
{
|
215
|
-
public:
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
private:
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
};
|
226
|
-
|
227
|
-
template<typename Ret_T, typename Fun, typename
|
228
|
-
inline Ruby_Function_3<Ret_T, Fun, T1, T2
|
229
|
-
Ruby_Function_3(Fun f,
|
230
|
-
|
231
|
-
{ }
|
232
|
-
|
233
|
-
template<typename Ret_T, typename Fun, typename
|
234
|
-
inline void Ruby_Function_3<Ret_T, Fun, T1, T2
|
235
|
-
operator()()
|
236
|
-
{
|
237
|
-
|
238
|
-
}
|
239
|
-
|
240
|
-
template<typename Ret_T, typename Fun, typename
|
241
|
-
inline VALUE Ruby_Function_3<Ret_T, Fun, T1, T2
|
242
|
-
call(Ruby_Function_3 * f)
|
243
|
-
{
|
244
|
-
|
245
|
-
|
246
|
-
}
|
222
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2>
|
223
|
+
class Ruby_Function_3
|
224
|
+
{
|
225
|
+
public:
|
226
|
+
Ruby_Function_3(Fun f, T0 const & t0, T1 const & t1, T2 const & t2);
|
227
|
+
inline void operator()();
|
228
|
+
static inline VALUE call(Ruby_Function_3 * f);
|
229
|
+
Ret_T const & result() const { return result_; }
|
230
|
+
|
231
|
+
private:
|
232
|
+
Fun f_;
|
233
|
+
T0 const & t0_; T1 const & t1_; T2 const & t2_;
|
234
|
+
Ret_T result_; // TODO: use placement new
|
235
|
+
};
|
236
|
+
|
237
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2>
|
238
|
+
inline Ruby_Function_3<Ret_T, Fun, T0, T1, T2>::
|
239
|
+
Ruby_Function_3(Fun f, T0 const & t0, T1 const & t1, T2 const & t2)
|
240
|
+
: f_(f), t0_(t0), t1_(t1), t2_(t2)
|
241
|
+
{ }
|
242
|
+
|
243
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2>
|
244
|
+
inline void Ruby_Function_3<Ret_T, Fun, T0, T1, T2>::
|
245
|
+
operator()()
|
246
|
+
{
|
247
|
+
result_ = f_(t0_, t1_, t2_);
|
248
|
+
}
|
249
|
+
|
250
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2>
|
251
|
+
inline VALUE Ruby_Function_3<Ret_T, Fun, T0, T1, T2>::
|
252
|
+
call(Ruby_Function_3 * f)
|
253
|
+
{
|
254
|
+
(*f)();
|
255
|
+
return Qnil;
|
256
|
+
}
|
247
257
|
|
248
258
|
} // namespace detail
|
249
259
|
|
250
|
-
|
251
|
-
|
260
|
+
/**
|
261
|
+
* protect on a function with a return type
|
262
|
+
*/
|
263
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2>
|
264
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2)
|
252
265
|
{
|
253
|
-
typedef detail::Ruby_Function_3<Ret_T, Fun, T1, T2
|
254
|
-
RF f(fun, t1, t2
|
266
|
+
typedef detail::Ruby_Function_3<Ret_T, Fun, T0, T1, T2> RF;
|
267
|
+
RF f(fun, t0, t1, t2);
|
255
268
|
detail::protect(
|
256
269
|
RUBY_VALUE_FUNC(RF::call),
|
257
270
|
reinterpret_cast<VALUE>(&f));
|
258
271
|
return f.result();
|
259
272
|
}
|
260
273
|
|
261
|
-
|
262
|
-
|
274
|
+
/**
|
275
|
+
* protect on a function with VALUE return type
|
276
|
+
*/
|
277
|
+
template<typename Fun, typename T0, typename T1, typename T2>
|
278
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2)
|
263
279
|
{
|
264
|
-
typedef detail::Ruby_Function_3<VALUE, Fun, T1, T2
|
265
|
-
RF f(fun, t1, t2
|
280
|
+
typedef detail::Ruby_Function_3<VALUE, Fun, T0, T1, T2> RF;
|
281
|
+
RF f(fun, t0, t1, t2);
|
266
282
|
detail::protect(
|
267
283
|
RUBY_VALUE_FUNC(RF::call),
|
268
284
|
reinterpret_cast<VALUE>(&f));
|
@@ -270,64 +286,69 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3)
|
|
270
286
|
}
|
271
287
|
|
272
288
|
// ---------------------------------------------------------------------
|
273
|
-
|
274
289
|
namespace detail
|
275
290
|
{
|
276
291
|
|
277
|
-
template<typename Ret_T, typename Fun, typename
|
278
|
-
class Ruby_Function_4
|
279
|
-
{
|
280
|
-
public:
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
private:
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
};
|
291
|
-
|
292
|
-
template<typename Ret_T, typename Fun, typename
|
293
|
-
inline Ruby_Function_4<Ret_T, Fun, T1, T2, T3
|
294
|
-
Ruby_Function_4(Fun f,
|
295
|
-
|
296
|
-
{ }
|
297
|
-
|
298
|
-
template<typename Ret_T, typename Fun, typename
|
299
|
-
inline void Ruby_Function_4<Ret_T, Fun, T1, T2, T3
|
300
|
-
operator()()
|
301
|
-
{
|
302
|
-
|
303
|
-
}
|
304
|
-
|
305
|
-
template<typename Ret_T, typename Fun, typename
|
306
|
-
inline VALUE Ruby_Function_4<Ret_T, Fun, T1, T2, T3
|
307
|
-
call(Ruby_Function_4 * f)
|
308
|
-
{
|
309
|
-
|
310
|
-
|
311
|
-
}
|
292
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3>
|
293
|
+
class Ruby_Function_4
|
294
|
+
{
|
295
|
+
public:
|
296
|
+
Ruby_Function_4(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3);
|
297
|
+
inline void operator()();
|
298
|
+
static inline VALUE call(Ruby_Function_4 * f);
|
299
|
+
Ret_T const & result() const { return result_; }
|
300
|
+
|
301
|
+
private:
|
302
|
+
Fun f_;
|
303
|
+
T0 const & t0_; T1 const & t1_; T2 const & t2_; T3 const & t3_;
|
304
|
+
Ret_T result_; // TODO: use placement new
|
305
|
+
};
|
306
|
+
|
307
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3>
|
308
|
+
inline Ruby_Function_4<Ret_T, Fun, T0, T1, T2, T3>::
|
309
|
+
Ruby_Function_4(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3)
|
310
|
+
: f_(f), t0_(t0), t1_(t1), t2_(t2), t3_(t3)
|
311
|
+
{ }
|
312
|
+
|
313
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3>
|
314
|
+
inline void Ruby_Function_4<Ret_T, Fun, T0, T1, T2, T3>::
|
315
|
+
operator()()
|
316
|
+
{
|
317
|
+
result_ = f_(t0_, t1_, t2_, t3_);
|
318
|
+
}
|
319
|
+
|
320
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3>
|
321
|
+
inline VALUE Ruby_Function_4<Ret_T, Fun, T0, T1, T2, T3>::
|
322
|
+
call(Ruby_Function_4 * f)
|
323
|
+
{
|
324
|
+
(*f)();
|
325
|
+
return Qnil;
|
326
|
+
}
|
312
327
|
|
313
328
|
} // namespace detail
|
314
329
|
|
315
|
-
|
316
|
-
|
330
|
+
/**
|
331
|
+
* protect on a function with a return type
|
332
|
+
*/
|
333
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3>
|
334
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3)
|
317
335
|
{
|
318
|
-
typedef detail::Ruby_Function_4<Ret_T, Fun, T1, T2, T3
|
319
|
-
RF f(fun, t1, t2, t3
|
336
|
+
typedef detail::Ruby_Function_4<Ret_T, Fun, T0, T1, T2, T3> RF;
|
337
|
+
RF f(fun, t0, t1, t2, t3);
|
320
338
|
detail::protect(
|
321
339
|
RUBY_VALUE_FUNC(RF::call),
|
322
340
|
reinterpret_cast<VALUE>(&f));
|
323
341
|
return f.result();
|
324
342
|
}
|
325
343
|
|
326
|
-
|
327
|
-
|
344
|
+
/**
|
345
|
+
* protect on a function with VALUE return type
|
346
|
+
*/
|
347
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3>
|
348
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3)
|
328
349
|
{
|
329
|
-
typedef detail::Ruby_Function_4<VALUE, Fun, T1, T2, T3
|
330
|
-
RF f(fun, t1, t2, t3
|
350
|
+
typedef detail::Ruby_Function_4<VALUE, Fun, T0, T1, T2, T3> RF;
|
351
|
+
RF f(fun, t0, t1, t2, t3);
|
331
352
|
detail::protect(
|
332
353
|
RUBY_VALUE_FUNC(RF::call),
|
333
354
|
reinterpret_cast<VALUE>(&f));
|
@@ -335,64 +356,69 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 co
|
|
335
356
|
}
|
336
357
|
|
337
358
|
// ---------------------------------------------------------------------
|
338
|
-
|
339
359
|
namespace detail
|
340
360
|
{
|
341
361
|
|
342
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4
|
343
|
-
class Ruby_Function_5
|
344
|
-
{
|
345
|
-
public:
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
private:
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
};
|
356
|
-
|
357
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4
|
358
|
-
inline Ruby_Function_5<Ret_T, Fun, T1, T2, T3, T4
|
359
|
-
Ruby_Function_5(Fun f, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4
|
360
|
-
|
361
|
-
{ }
|
362
|
-
|
363
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4
|
364
|
-
inline void Ruby_Function_5<Ret_T, Fun, T1, T2, T3, T4
|
365
|
-
operator()()
|
366
|
-
{
|
367
|
-
|
368
|
-
}
|
369
|
-
|
370
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4
|
371
|
-
inline VALUE Ruby_Function_5<Ret_T, Fun, T1, T2, T3, T4
|
372
|
-
call(Ruby_Function_5 * f)
|
373
|
-
{
|
374
|
-
|
375
|
-
|
376
|
-
}
|
362
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4>
|
363
|
+
class Ruby_Function_5
|
364
|
+
{
|
365
|
+
public:
|
366
|
+
Ruby_Function_5(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4);
|
367
|
+
inline void operator()();
|
368
|
+
static inline VALUE call(Ruby_Function_5 * f);
|
369
|
+
Ret_T const & result() const { return result_; }
|
370
|
+
|
371
|
+
private:
|
372
|
+
Fun f_;
|
373
|
+
T0 const & t0_; T1 const & t1_; T2 const & t2_; T3 const & t3_; T4 const & t4_;
|
374
|
+
Ret_T result_; // TODO: use placement new
|
375
|
+
};
|
376
|
+
|
377
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4>
|
378
|
+
inline Ruby_Function_5<Ret_T, Fun, T0, T1, T2, T3, T4>::
|
379
|
+
Ruby_Function_5(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4)
|
380
|
+
: f_(f), t0_(t0), t1_(t1), t2_(t2), t3_(t3), t4_(t4)
|
381
|
+
{ }
|
382
|
+
|
383
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4>
|
384
|
+
inline void Ruby_Function_5<Ret_T, Fun, T0, T1, T2, T3, T4>::
|
385
|
+
operator()()
|
386
|
+
{
|
387
|
+
result_ = f_(t0_, t1_, t2_, t3_, t4_);
|
388
|
+
}
|
389
|
+
|
390
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4>
|
391
|
+
inline VALUE Ruby_Function_5<Ret_T, Fun, T0, T1, T2, T3, T4>::
|
392
|
+
call(Ruby_Function_5 * f)
|
393
|
+
{
|
394
|
+
(*f)();
|
395
|
+
return Qnil;
|
396
|
+
}
|
377
397
|
|
378
398
|
} // namespace detail
|
379
399
|
|
380
|
-
|
381
|
-
|
400
|
+
/**
|
401
|
+
* protect on a function with a return type
|
402
|
+
*/
|
403
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4>
|
404
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4)
|
382
405
|
{
|
383
|
-
typedef detail::Ruby_Function_5<Ret_T, Fun, T1, T2, T3, T4
|
384
|
-
RF f(fun, t1, t2, t3, t4
|
406
|
+
typedef detail::Ruby_Function_5<Ret_T, Fun, T0, T1, T2, T3, T4> RF;
|
407
|
+
RF f(fun, t0, t1, t2, t3, t4);
|
385
408
|
detail::protect(
|
386
409
|
RUBY_VALUE_FUNC(RF::call),
|
387
410
|
reinterpret_cast<VALUE>(&f));
|
388
411
|
return f.result();
|
389
412
|
}
|
390
413
|
|
391
|
-
|
392
|
-
|
414
|
+
/**
|
415
|
+
* protect on a function with VALUE return type
|
416
|
+
*/
|
417
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4>
|
418
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4)
|
393
419
|
{
|
394
|
-
typedef detail::Ruby_Function_5<VALUE, Fun, T1, T2, T3, T4
|
395
|
-
RF f(fun, t1, t2, t3, t4
|
420
|
+
typedef detail::Ruby_Function_5<VALUE, Fun, T0, T1, T2, T3, T4> RF;
|
421
|
+
RF f(fun, t0, t1, t2, t3, t4);
|
396
422
|
detail::protect(
|
397
423
|
RUBY_VALUE_FUNC(RF::call),
|
398
424
|
reinterpret_cast<VALUE>(&f));
|
@@ -400,64 +426,69 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 co
|
|
400
426
|
}
|
401
427
|
|
402
428
|
// ---------------------------------------------------------------------
|
403
|
-
|
404
429
|
namespace detail
|
405
430
|
{
|
406
431
|
|
407
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5
|
408
|
-
class Ruby_Function_6
|
409
|
-
{
|
410
|
-
public:
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
private:
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
};
|
421
|
-
|
422
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5
|
423
|
-
inline Ruby_Function_6<Ret_T, Fun, T1, T2, T3, T4, T5
|
424
|
-
Ruby_Function_6(Fun f, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5
|
425
|
-
|
426
|
-
{ }
|
427
|
-
|
428
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5
|
429
|
-
inline void Ruby_Function_6<Ret_T, Fun, T1, T2, T3, T4, T5
|
430
|
-
operator()()
|
431
|
-
{
|
432
|
-
|
433
|
-
}
|
434
|
-
|
435
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5
|
436
|
-
inline VALUE Ruby_Function_6<Ret_T, Fun, T1, T2, T3, T4, T5
|
437
|
-
call(Ruby_Function_6 * f)
|
438
|
-
{
|
439
|
-
|
440
|
-
|
441
|
-
}
|
432
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
|
433
|
+
class Ruby_Function_6
|
434
|
+
{
|
435
|
+
public:
|
436
|
+
Ruby_Function_6(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5);
|
437
|
+
inline void operator()();
|
438
|
+
static inline VALUE call(Ruby_Function_6 * f);
|
439
|
+
Ret_T const & result() const { return result_; }
|
440
|
+
|
441
|
+
private:
|
442
|
+
Fun f_;
|
443
|
+
T0 const & t0_; T1 const & t1_; T2 const & t2_; T3 const & t3_; T4 const & t4_; T5 const & t5_;
|
444
|
+
Ret_T result_; // TODO: use placement new
|
445
|
+
};
|
446
|
+
|
447
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
|
448
|
+
inline Ruby_Function_6<Ret_T, Fun, T0, T1, T2, T3, T4, T5>::
|
449
|
+
Ruby_Function_6(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5)
|
450
|
+
: f_(f), t0_(t0), t1_(t1), t2_(t2), t3_(t3), t4_(t4), t5_(t5)
|
451
|
+
{ }
|
452
|
+
|
453
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
|
454
|
+
inline void Ruby_Function_6<Ret_T, Fun, T0, T1, T2, T3, T4, T5>::
|
455
|
+
operator()()
|
456
|
+
{
|
457
|
+
result_ = f_(t0_, t1_, t2_, t3_, t4_, t5_);
|
458
|
+
}
|
459
|
+
|
460
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
|
461
|
+
inline VALUE Ruby_Function_6<Ret_T, Fun, T0, T1, T2, T3, T4, T5>::
|
462
|
+
call(Ruby_Function_6 * f)
|
463
|
+
{
|
464
|
+
(*f)();
|
465
|
+
return Qnil;
|
466
|
+
}
|
442
467
|
|
443
468
|
} // namespace detail
|
444
469
|
|
445
|
-
|
446
|
-
|
470
|
+
/**
|
471
|
+
* protect on a function with a return type
|
472
|
+
*/
|
473
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
|
474
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5)
|
447
475
|
{
|
448
|
-
typedef detail::Ruby_Function_6<Ret_T, Fun, T1, T2, T3, T4, T5
|
449
|
-
RF f(fun, t1, t2, t3, t4, t5
|
476
|
+
typedef detail::Ruby_Function_6<Ret_T, Fun, T0, T1, T2, T3, T4, T5> RF;
|
477
|
+
RF f(fun, t0, t1, t2, t3, t4, t5);
|
450
478
|
detail::protect(
|
451
479
|
RUBY_VALUE_FUNC(RF::call),
|
452
480
|
reinterpret_cast<VALUE>(&f));
|
453
481
|
return f.result();
|
454
482
|
}
|
455
483
|
|
456
|
-
|
457
|
-
|
484
|
+
/**
|
485
|
+
* protect on a function with VALUE return type
|
486
|
+
*/
|
487
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
|
488
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5)
|
458
489
|
{
|
459
|
-
typedef detail::Ruby_Function_6<VALUE, Fun, T1, T2, T3, T4, T5
|
460
|
-
RF f(fun, t1, t2, t3, t4, t5
|
490
|
+
typedef detail::Ruby_Function_6<VALUE, Fun, T0, T1, T2, T3, T4, T5> RF;
|
491
|
+
RF f(fun, t0, t1, t2, t3, t4, t5);
|
461
492
|
detail::protect(
|
462
493
|
RUBY_VALUE_FUNC(RF::call),
|
463
494
|
reinterpret_cast<VALUE>(&f));
|
@@ -465,64 +496,69 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 co
|
|
465
496
|
}
|
466
497
|
|
467
498
|
// ---------------------------------------------------------------------
|
468
|
-
|
469
499
|
namespace detail
|
470
500
|
{
|
471
501
|
|
472
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6
|
473
|
-
class Ruby_Function_7
|
474
|
-
{
|
475
|
-
public:
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
private:
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
};
|
486
|
-
|
487
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6
|
488
|
-
inline Ruby_Function_7<Ret_T, Fun, T1, T2, T3, T4, T5, T6
|
489
|
-
Ruby_Function_7(Fun f, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6
|
490
|
-
|
491
|
-
{ }
|
492
|
-
|
493
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6
|
494
|
-
inline void Ruby_Function_7<Ret_T, Fun, T1, T2, T3, T4, T5, T6
|
495
|
-
operator()()
|
496
|
-
{
|
497
|
-
|
498
|
-
}
|
499
|
-
|
500
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6
|
501
|
-
inline VALUE Ruby_Function_7<Ret_T, Fun, T1, T2, T3, T4, T5, T6
|
502
|
-
call(Ruby_Function_7 * f)
|
503
|
-
{
|
504
|
-
|
505
|
-
|
506
|
-
}
|
502
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
|
503
|
+
class Ruby_Function_7
|
504
|
+
{
|
505
|
+
public:
|
506
|
+
Ruby_Function_7(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6);
|
507
|
+
inline void operator()();
|
508
|
+
static inline VALUE call(Ruby_Function_7 * f);
|
509
|
+
Ret_T const & result() const { return result_; }
|
510
|
+
|
511
|
+
private:
|
512
|
+
Fun f_;
|
513
|
+
T0 const & t0_; T1 const & t1_; T2 const & t2_; T3 const & t3_; T4 const & t4_; T5 const & t5_; T6 const & t6_;
|
514
|
+
Ret_T result_; // TODO: use placement new
|
515
|
+
};
|
516
|
+
|
517
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
|
518
|
+
inline Ruby_Function_7<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6>::
|
519
|
+
Ruby_Function_7(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6)
|
520
|
+
: f_(f), t0_(t0), t1_(t1), t2_(t2), t3_(t3), t4_(t4), t5_(t5), t6_(t6)
|
521
|
+
{ }
|
522
|
+
|
523
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
|
524
|
+
inline void Ruby_Function_7<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6>::
|
525
|
+
operator()()
|
526
|
+
{
|
527
|
+
result_ = f_(t0_, t1_, t2_, t3_, t4_, t5_, t6_);
|
528
|
+
}
|
529
|
+
|
530
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
|
531
|
+
inline VALUE Ruby_Function_7<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6>::
|
532
|
+
call(Ruby_Function_7 * f)
|
533
|
+
{
|
534
|
+
(*f)();
|
535
|
+
return Qnil;
|
536
|
+
}
|
507
537
|
|
508
538
|
} // namespace detail
|
509
539
|
|
510
|
-
|
511
|
-
|
540
|
+
/**
|
541
|
+
* protect on a function with a return type
|
542
|
+
*/
|
543
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
|
544
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6)
|
512
545
|
{
|
513
|
-
typedef detail::Ruby_Function_7<Ret_T, Fun, T1, T2, T3, T4, T5, T6
|
514
|
-
RF f(fun, t1, t2, t3, t4, t5, t6
|
546
|
+
typedef detail::Ruby_Function_7<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6> RF;
|
547
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6);
|
515
548
|
detail::protect(
|
516
549
|
RUBY_VALUE_FUNC(RF::call),
|
517
550
|
reinterpret_cast<VALUE>(&f));
|
518
551
|
return f.result();
|
519
552
|
}
|
520
553
|
|
521
|
-
|
522
|
-
|
554
|
+
/**
|
555
|
+
* protect on a function with VALUE return type
|
556
|
+
*/
|
557
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
|
558
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6)
|
523
559
|
{
|
524
|
-
typedef detail::Ruby_Function_7<VALUE, Fun, T1, T2, T3, T4, T5, T6
|
525
|
-
RF f(fun, t1, t2, t3, t4, t5, t6
|
560
|
+
typedef detail::Ruby_Function_7<VALUE, Fun, T0, T1, T2, T3, T4, T5, T6> RF;
|
561
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6);
|
526
562
|
detail::protect(
|
527
563
|
RUBY_VALUE_FUNC(RF::call),
|
528
564
|
reinterpret_cast<VALUE>(&f));
|
@@ -530,64 +566,69 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 co
|
|
530
566
|
}
|
531
567
|
|
532
568
|
// ---------------------------------------------------------------------
|
533
|
-
|
534
569
|
namespace detail
|
535
570
|
{
|
536
571
|
|
537
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7
|
538
|
-
class Ruby_Function_8
|
539
|
-
{
|
540
|
-
public:
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
private:
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
};
|
551
|
-
|
552
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7
|
553
|
-
inline Ruby_Function_8<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7
|
554
|
-
Ruby_Function_8(Fun f, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7
|
555
|
-
|
556
|
-
{ }
|
557
|
-
|
558
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7
|
559
|
-
inline void Ruby_Function_8<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7
|
560
|
-
operator()()
|
561
|
-
{
|
562
|
-
|
563
|
-
}
|
564
|
-
|
565
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7
|
566
|
-
inline VALUE Ruby_Function_8<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7
|
567
|
-
call(Ruby_Function_8 * f)
|
568
|
-
{
|
569
|
-
|
570
|
-
|
571
|
-
}
|
572
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
|
573
|
+
class Ruby_Function_8
|
574
|
+
{
|
575
|
+
public:
|
576
|
+
Ruby_Function_8(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7);
|
577
|
+
inline void operator()();
|
578
|
+
static inline VALUE call(Ruby_Function_8 * f);
|
579
|
+
Ret_T const & result() const { return result_; }
|
580
|
+
|
581
|
+
private:
|
582
|
+
Fun f_;
|
583
|
+
T0 const & t0_; T1 const & t1_; T2 const & t2_; T3 const & t3_; T4 const & t4_; T5 const & t5_; T6 const & t6_; T7 const & t7_;
|
584
|
+
Ret_T result_; // TODO: use placement new
|
585
|
+
};
|
586
|
+
|
587
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
|
588
|
+
inline Ruby_Function_8<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7>::
|
589
|
+
Ruby_Function_8(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7)
|
590
|
+
: f_(f), t0_(t0), t1_(t1), t2_(t2), t3_(t3), t4_(t4), t5_(t5), t6_(t6), t7_(t7)
|
591
|
+
{ }
|
592
|
+
|
593
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
|
594
|
+
inline void Ruby_Function_8<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7>::
|
595
|
+
operator()()
|
596
|
+
{
|
597
|
+
result_ = f_(t0_, t1_, t2_, t3_, t4_, t5_, t6_, t7_);
|
598
|
+
}
|
599
|
+
|
600
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
|
601
|
+
inline VALUE Ruby_Function_8<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7>::
|
602
|
+
call(Ruby_Function_8 * f)
|
603
|
+
{
|
604
|
+
(*f)();
|
605
|
+
return Qnil;
|
606
|
+
}
|
572
607
|
|
573
608
|
} // namespace detail
|
574
609
|
|
575
|
-
|
576
|
-
|
610
|
+
/**
|
611
|
+
* protect on a function with a return type
|
612
|
+
*/
|
613
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
|
614
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7)
|
577
615
|
{
|
578
|
-
typedef detail::Ruby_Function_8<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7
|
579
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7
|
616
|
+
typedef detail::Ruby_Function_8<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7> RF;
|
617
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7);
|
580
618
|
detail::protect(
|
581
619
|
RUBY_VALUE_FUNC(RF::call),
|
582
620
|
reinterpret_cast<VALUE>(&f));
|
583
621
|
return f.result();
|
584
622
|
}
|
585
623
|
|
586
|
-
|
587
|
-
|
624
|
+
/**
|
625
|
+
* protect on a function with VALUE return type
|
626
|
+
*/
|
627
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
|
628
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7)
|
588
629
|
{
|
589
|
-
typedef detail::Ruby_Function_8<VALUE, Fun, T1, T2, T3, T4, T5, T6, T7
|
590
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7
|
630
|
+
typedef detail::Ruby_Function_8<VALUE, Fun, T0, T1, T2, T3, T4, T5, T6, T7> RF;
|
631
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7);
|
591
632
|
detail::protect(
|
592
633
|
RUBY_VALUE_FUNC(RF::call),
|
593
634
|
reinterpret_cast<VALUE>(&f));
|
@@ -595,64 +636,69 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 co
|
|
595
636
|
}
|
596
637
|
|
597
638
|
// ---------------------------------------------------------------------
|
598
|
-
|
599
639
|
namespace detail
|
600
640
|
{
|
601
641
|
|
602
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8
|
603
|
-
class Ruby_Function_9
|
604
|
-
{
|
605
|
-
public:
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
private:
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
};
|
616
|
-
|
617
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8
|
618
|
-
inline Ruby_Function_9<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8
|
619
|
-
Ruby_Function_9(Fun f, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8
|
620
|
-
|
621
|
-
{ }
|
622
|
-
|
623
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8
|
624
|
-
inline void Ruby_Function_9<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8
|
625
|
-
operator()()
|
626
|
-
{
|
627
|
-
|
628
|
-
}
|
629
|
-
|
630
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8
|
631
|
-
inline VALUE Ruby_Function_9<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8
|
632
|
-
call(Ruby_Function_9 * f)
|
633
|
-
{
|
634
|
-
|
635
|
-
|
636
|
-
}
|
642
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
|
643
|
+
class Ruby_Function_9
|
644
|
+
{
|
645
|
+
public:
|
646
|
+
Ruby_Function_9(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8);
|
647
|
+
inline void operator()();
|
648
|
+
static inline VALUE call(Ruby_Function_9 * f);
|
649
|
+
Ret_T const & result() const { return result_; }
|
650
|
+
|
651
|
+
private:
|
652
|
+
Fun f_;
|
653
|
+
T0 const & t0_; T1 const & t1_; T2 const & t2_; T3 const & t3_; T4 const & t4_; T5 const & t5_; T6 const & t6_; T7 const & t7_; T8 const & t8_;
|
654
|
+
Ret_T result_; // TODO: use placement new
|
655
|
+
};
|
656
|
+
|
657
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
|
658
|
+
inline Ruby_Function_9<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8>::
|
659
|
+
Ruby_Function_9(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8)
|
660
|
+
: f_(f), t0_(t0), t1_(t1), t2_(t2), t3_(t3), t4_(t4), t5_(t5), t6_(t6), t7_(t7), t8_(t8)
|
661
|
+
{ }
|
662
|
+
|
663
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
|
664
|
+
inline void Ruby_Function_9<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8>::
|
665
|
+
operator()()
|
666
|
+
{
|
667
|
+
result_ = f_(t0_, t1_, t2_, t3_, t4_, t5_, t6_, t7_, t8_);
|
668
|
+
}
|
669
|
+
|
670
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
|
671
|
+
inline VALUE Ruby_Function_9<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8>::
|
672
|
+
call(Ruby_Function_9 * f)
|
673
|
+
{
|
674
|
+
(*f)();
|
675
|
+
return Qnil;
|
676
|
+
}
|
637
677
|
|
638
678
|
} // namespace detail
|
639
679
|
|
640
|
-
|
641
|
-
|
680
|
+
/**
|
681
|
+
* protect on a function with a return type
|
682
|
+
*/
|
683
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
|
684
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8)
|
642
685
|
{
|
643
|
-
typedef detail::Ruby_Function_9<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8
|
644
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8
|
686
|
+
typedef detail::Ruby_Function_9<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8> RF;
|
687
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8);
|
645
688
|
detail::protect(
|
646
689
|
RUBY_VALUE_FUNC(RF::call),
|
647
690
|
reinterpret_cast<VALUE>(&f));
|
648
691
|
return f.result();
|
649
692
|
}
|
650
693
|
|
651
|
-
|
652
|
-
|
694
|
+
/**
|
695
|
+
* protect on a function with VALUE return type
|
696
|
+
*/
|
697
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
|
698
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8)
|
653
699
|
{
|
654
|
-
typedef detail::Ruby_Function_9<VALUE, Fun, T1, T2, T3, T4, T5, T6, T7, T8
|
655
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8
|
700
|
+
typedef detail::Ruby_Function_9<VALUE, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8> RF;
|
701
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8);
|
656
702
|
detail::protect(
|
657
703
|
RUBY_VALUE_FUNC(RF::call),
|
658
704
|
reinterpret_cast<VALUE>(&f));
|
@@ -660,64 +706,69 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 co
|
|
660
706
|
}
|
661
707
|
|
662
708
|
// ---------------------------------------------------------------------
|
663
|
-
|
664
709
|
namespace detail
|
665
710
|
{
|
666
711
|
|
667
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9
|
668
|
-
class Ruby_Function_10
|
669
|
-
{
|
670
|
-
public:
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
private:
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
};
|
681
|
-
|
682
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9
|
683
|
-
inline Ruby_Function_10<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9
|
684
|
-
Ruby_Function_10(Fun f, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9
|
685
|
-
|
686
|
-
{ }
|
687
|
-
|
688
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9
|
689
|
-
inline void Ruby_Function_10<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9
|
690
|
-
operator()()
|
691
|
-
{
|
692
|
-
|
693
|
-
}
|
694
|
-
|
695
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9
|
696
|
-
inline VALUE Ruby_Function_10<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9
|
697
|
-
call(Ruby_Function_10 * f)
|
698
|
-
{
|
699
|
-
|
700
|
-
|
701
|
-
}
|
712
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
|
713
|
+
class Ruby_Function_10
|
714
|
+
{
|
715
|
+
public:
|
716
|
+
Ruby_Function_10(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9);
|
717
|
+
inline void operator()();
|
718
|
+
static inline VALUE call(Ruby_Function_10 * f);
|
719
|
+
Ret_T const & result() const { return result_; }
|
720
|
+
|
721
|
+
private:
|
722
|
+
Fun f_;
|
723
|
+
T0 const & t0_; T1 const & t1_; T2 const & t2_; T3 const & t3_; T4 const & t4_; T5 const & t5_; T6 const & t6_; T7 const & t7_; T8 const & t8_; T9 const & t9_;
|
724
|
+
Ret_T result_; // TODO: use placement new
|
725
|
+
};
|
726
|
+
|
727
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
|
728
|
+
inline Ruby_Function_10<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::
|
729
|
+
Ruby_Function_10(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9)
|
730
|
+
: f_(f), t0_(t0), t1_(t1), t2_(t2), t3_(t3), t4_(t4), t5_(t5), t6_(t6), t7_(t7), t8_(t8), t9_(t9)
|
731
|
+
{ }
|
732
|
+
|
733
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
|
734
|
+
inline void Ruby_Function_10<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::
|
735
|
+
operator()()
|
736
|
+
{
|
737
|
+
result_ = f_(t0_, t1_, t2_, t3_, t4_, t5_, t6_, t7_, t8_, t9_);
|
738
|
+
}
|
739
|
+
|
740
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
|
741
|
+
inline VALUE Ruby_Function_10<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::
|
742
|
+
call(Ruby_Function_10 * f)
|
743
|
+
{
|
744
|
+
(*f)();
|
745
|
+
return Qnil;
|
746
|
+
}
|
702
747
|
|
703
748
|
} // namespace detail
|
704
749
|
|
705
|
-
|
706
|
-
|
750
|
+
/**
|
751
|
+
* protect on a function with a return type
|
752
|
+
*/
|
753
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
|
754
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9)
|
707
755
|
{
|
708
|
-
typedef detail::Ruby_Function_10<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9
|
709
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8, t9
|
756
|
+
typedef detail::Ruby_Function_10<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> RF;
|
757
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9);
|
710
758
|
detail::protect(
|
711
759
|
RUBY_VALUE_FUNC(RF::call),
|
712
760
|
reinterpret_cast<VALUE>(&f));
|
713
761
|
return f.result();
|
714
762
|
}
|
715
763
|
|
716
|
-
|
717
|
-
|
764
|
+
/**
|
765
|
+
* protect on a function with VALUE return type
|
766
|
+
*/
|
767
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
|
768
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9)
|
718
769
|
{
|
719
|
-
typedef detail::Ruby_Function_10<VALUE, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9
|
720
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8, t9
|
770
|
+
typedef detail::Ruby_Function_10<VALUE, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> RF;
|
771
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9);
|
721
772
|
detail::protect(
|
722
773
|
RUBY_VALUE_FUNC(RF::call),
|
723
774
|
reinterpret_cast<VALUE>(&f));
|
@@ -725,64 +776,69 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 co
|
|
725
776
|
}
|
726
777
|
|
727
778
|
// ---------------------------------------------------------------------
|
728
|
-
|
729
779
|
namespace detail
|
730
780
|
{
|
731
781
|
|
732
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10
|
733
|
-
class Ruby_Function_11
|
734
|
-
{
|
735
|
-
public:
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
private:
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
};
|
746
|
-
|
747
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10
|
748
|
-
inline Ruby_Function_11<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
|
749
|
-
Ruby_Function_11(Fun f, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10
|
750
|
-
|
751
|
-
{ }
|
752
|
-
|
753
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10
|
754
|
-
inline void Ruby_Function_11<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
|
755
|
-
operator()()
|
756
|
-
{
|
757
|
-
|
758
|
-
}
|
759
|
-
|
760
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10
|
761
|
-
inline VALUE Ruby_Function_11<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
|
762
|
-
call(Ruby_Function_11 * f)
|
763
|
-
{
|
764
|
-
|
765
|
-
|
766
|
-
}
|
782
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
|
783
|
+
class Ruby_Function_11
|
784
|
+
{
|
785
|
+
public:
|
786
|
+
Ruby_Function_11(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10);
|
787
|
+
inline void operator()();
|
788
|
+
static inline VALUE call(Ruby_Function_11 * f);
|
789
|
+
Ret_T const & result() const { return result_; }
|
790
|
+
|
791
|
+
private:
|
792
|
+
Fun f_;
|
793
|
+
T0 const & t0_; T1 const & t1_; T2 const & t2_; T3 const & t3_; T4 const & t4_; T5 const & t5_; T6 const & t6_; T7 const & t7_; T8 const & t8_; T9 const & t9_; T10 const & t10_;
|
794
|
+
Ret_T result_; // TODO: use placement new
|
795
|
+
};
|
796
|
+
|
797
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
|
798
|
+
inline Ruby_Function_11<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::
|
799
|
+
Ruby_Function_11(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10)
|
800
|
+
: f_(f), t0_(t0), t1_(t1), t2_(t2), t3_(t3), t4_(t4), t5_(t5), t6_(t6), t7_(t7), t8_(t8), t9_(t9), t10_(t10)
|
801
|
+
{ }
|
802
|
+
|
803
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
|
804
|
+
inline void Ruby_Function_11<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::
|
805
|
+
operator()()
|
806
|
+
{
|
807
|
+
result_ = f_(t0_, t1_, t2_, t3_, t4_, t5_, t6_, t7_, t8_, t9_, t10_);
|
808
|
+
}
|
809
|
+
|
810
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
|
811
|
+
inline VALUE Ruby_Function_11<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::
|
812
|
+
call(Ruby_Function_11 * f)
|
813
|
+
{
|
814
|
+
(*f)();
|
815
|
+
return Qnil;
|
816
|
+
}
|
767
817
|
|
768
818
|
} // namespace detail
|
769
819
|
|
770
|
-
|
771
|
-
|
820
|
+
/**
|
821
|
+
* protect on a function with a return type
|
822
|
+
*/
|
823
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
|
824
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10)
|
772
825
|
{
|
773
|
-
typedef detail::Ruby_Function_11<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
|
774
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10
|
826
|
+
typedef detail::Ruby_Function_11<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> RF;
|
827
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
|
775
828
|
detail::protect(
|
776
829
|
RUBY_VALUE_FUNC(RF::call),
|
777
830
|
reinterpret_cast<VALUE>(&f));
|
778
831
|
return f.result();
|
779
832
|
}
|
780
833
|
|
781
|
-
|
782
|
-
|
834
|
+
/**
|
835
|
+
* protect on a function with VALUE return type
|
836
|
+
*/
|
837
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
|
838
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10)
|
783
839
|
{
|
784
|
-
typedef detail::Ruby_Function_11<VALUE, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
|
785
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10
|
840
|
+
typedef detail::Ruby_Function_11<VALUE, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> RF;
|
841
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
|
786
842
|
detail::protect(
|
787
843
|
RUBY_VALUE_FUNC(RF::call),
|
788
844
|
reinterpret_cast<VALUE>(&f));
|
@@ -790,64 +846,69 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 co
|
|
790
846
|
}
|
791
847
|
|
792
848
|
// ---------------------------------------------------------------------
|
793
|
-
|
794
849
|
namespace detail
|
795
850
|
{
|
796
851
|
|
797
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11
|
798
|
-
class Ruby_Function_12
|
799
|
-
{
|
800
|
-
public:
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
private:
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
};
|
811
|
-
|
812
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11
|
813
|
-
inline Ruby_Function_12<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
|
814
|
-
Ruby_Function_12(Fun f, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11
|
815
|
-
|
816
|
-
{ }
|
817
|
-
|
818
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11
|
819
|
-
inline void Ruby_Function_12<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
|
820
|
-
operator()()
|
821
|
-
{
|
822
|
-
|
823
|
-
}
|
824
|
-
|
825
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11
|
826
|
-
inline VALUE Ruby_Function_12<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
|
827
|
-
call(Ruby_Function_12 * f)
|
828
|
-
{
|
829
|
-
|
830
|
-
|
831
|
-
}
|
852
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
|
853
|
+
class Ruby_Function_12
|
854
|
+
{
|
855
|
+
public:
|
856
|
+
Ruby_Function_12(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11);
|
857
|
+
inline void operator()();
|
858
|
+
static inline VALUE call(Ruby_Function_12 * f);
|
859
|
+
Ret_T const & result() const { return result_; }
|
860
|
+
|
861
|
+
private:
|
862
|
+
Fun f_;
|
863
|
+
T0 const & t0_; T1 const & t1_; T2 const & t2_; T3 const & t3_; T4 const & t4_; T5 const & t5_; T6 const & t6_; T7 const & t7_; T8 const & t8_; T9 const & t9_; T10 const & t10_; T11 const & t11_;
|
864
|
+
Ret_T result_; // TODO: use placement new
|
865
|
+
};
|
866
|
+
|
867
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
|
868
|
+
inline Ruby_Function_12<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::
|
869
|
+
Ruby_Function_12(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11)
|
870
|
+
: f_(f), t0_(t0), t1_(t1), t2_(t2), t3_(t3), t4_(t4), t5_(t5), t6_(t6), t7_(t7), t8_(t8), t9_(t9), t10_(t10), t11_(t11)
|
871
|
+
{ }
|
872
|
+
|
873
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
|
874
|
+
inline void Ruby_Function_12<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::
|
875
|
+
operator()()
|
876
|
+
{
|
877
|
+
result_ = f_(t0_, t1_, t2_, t3_, t4_, t5_, t6_, t7_, t8_, t9_, t10_, t11_);
|
878
|
+
}
|
879
|
+
|
880
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
|
881
|
+
inline VALUE Ruby_Function_12<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>::
|
882
|
+
call(Ruby_Function_12 * f)
|
883
|
+
{
|
884
|
+
(*f)();
|
885
|
+
return Qnil;
|
886
|
+
}
|
832
887
|
|
833
888
|
} // namespace detail
|
834
889
|
|
835
|
-
|
836
|
-
|
890
|
+
/**
|
891
|
+
* protect on a function with a return type
|
892
|
+
*/
|
893
|
+
template<typename Ret_T, typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
|
894
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11)
|
837
895
|
{
|
838
|
-
typedef detail::Ruby_Function_12<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
|
839
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11
|
896
|
+
typedef detail::Ruby_Function_12<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> RF;
|
897
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11);
|
840
898
|
detail::protect(
|
841
899
|
RUBY_VALUE_FUNC(RF::call),
|
842
900
|
reinterpret_cast<VALUE>(&f));
|
843
901
|
return f.result();
|
844
902
|
}
|
845
903
|
|
846
|
-
|
847
|
-
|
904
|
+
/**
|
905
|
+
* protect on a function with VALUE return type
|
906
|
+
*/
|
907
|
+
template<typename Fun, typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
|
908
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11)
|
848
909
|
{
|
849
|
-
typedef detail::Ruby_Function_12<VALUE, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
|
850
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11
|
910
|
+
typedef detail::Ruby_Function_12<VALUE, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> RF;
|
911
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11);
|
851
912
|
detail::protect(
|
852
913
|
RUBY_VALUE_FUNC(RF::call),
|
853
914
|
reinterpret_cast<VALUE>(&f));
|
@@ -855,64 +916,69 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 co
|
|
855
916
|
}
|
856
917
|
|
857
918
|
// ---------------------------------------------------------------------
|
858
|
-
|
859
919
|
namespace detail
|
860
920
|
{
|
861
921
|
|
862
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12
|
863
|
-
class Ruby_Function_13
|
864
|
-
{
|
865
|
-
public:
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
private:
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
};
|
876
|
-
|
877
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12
|
878
|
-
inline Ruby_Function_13<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
|
879
|
-
Ruby_Function_13(Fun f, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12
|
880
|
-
|
881
|
-
{ }
|
882
|
-
|
883
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12
|
884
|
-
inline void Ruby_Function_13<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
|
885
|
-
operator()()
|
886
|
-
{
|
887
|
-
|
888
|
-
}
|
889
|
-
|
890
|
-
template<typename Ret_T, typename Fun, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12
|
891
|
-
inline VALUE Ruby_Function_13<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
|
892
|
-
call(Ruby_Function_13 * f)
|
893
|
-
{
|
894
|
-
|
895
|
-
|
896
|
-
}
|
922
|
+
template<typename Ret_T, typename Fun, 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>
|
923
|
+
class Ruby_Function_13
|
924
|
+
{
|
925
|
+
public:
|
926
|
+
Ruby_Function_13(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12);
|
927
|
+
inline void operator()();
|
928
|
+
static inline VALUE call(Ruby_Function_13 * f);
|
929
|
+
Ret_T const & result() const { return result_; }
|
930
|
+
|
931
|
+
private:
|
932
|
+
Fun f_;
|
933
|
+
T0 const & t0_; T1 const & t1_; T2 const & t2_; T3 const & t3_; T4 const & t4_; T5 const & t5_; T6 const & t6_; T7 const & t7_; T8 const & t8_; T9 const & t9_; T10 const & t10_; T11 const & t11_; T12 const & t12_;
|
934
|
+
Ret_T result_; // TODO: use placement new
|
935
|
+
};
|
936
|
+
|
937
|
+
template<typename Ret_T, typename Fun, 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>
|
938
|
+
inline Ruby_Function_13<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::
|
939
|
+
Ruby_Function_13(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12)
|
940
|
+
: f_(f), t0_(t0), t1_(t1), t2_(t2), t3_(t3), t4_(t4), t5_(t5), t6_(t6), t7_(t7), t8_(t8), t9_(t9), t10_(t10), t11_(t11), t12_(t12)
|
941
|
+
{ }
|
942
|
+
|
943
|
+
template<typename Ret_T, typename Fun, 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>
|
944
|
+
inline void Ruby_Function_13<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::
|
945
|
+
operator()()
|
946
|
+
{
|
947
|
+
result_ = f_(t0_, t1_, t2_, t3_, t4_, t5_, t6_, t7_, t8_, t9_, t10_, t11_, t12_);
|
948
|
+
}
|
949
|
+
|
950
|
+
template<typename Ret_T, typename Fun, 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>
|
951
|
+
inline VALUE Ruby_Function_13<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>::
|
952
|
+
call(Ruby_Function_13 * f)
|
953
|
+
{
|
954
|
+
(*f)();
|
955
|
+
return Qnil;
|
956
|
+
}
|
897
957
|
|
898
958
|
} // namespace detail
|
899
959
|
|
900
|
-
|
901
|
-
|
960
|
+
/**
|
961
|
+
* protect on a function with a return type
|
962
|
+
*/
|
963
|
+
template<typename Ret_T, typename Fun, 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>
|
964
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12)
|
902
965
|
{
|
903
|
-
typedef detail::Ruby_Function_13<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
|
904
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12
|
966
|
+
typedef detail::Ruby_Function_13<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> RF;
|
967
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12);
|
905
968
|
detail::protect(
|
906
969
|
RUBY_VALUE_FUNC(RF::call),
|
907
970
|
reinterpret_cast<VALUE>(&f));
|
908
971
|
return f.result();
|
909
972
|
}
|
910
973
|
|
911
|
-
|
912
|
-
|
974
|
+
/**
|
975
|
+
* protect on a function with VALUE return type
|
976
|
+
*/
|
977
|
+
template<typename Fun, 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>
|
978
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12)
|
913
979
|
{
|
914
|
-
typedef detail::Ruby_Function_13<VALUE, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
|
915
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12
|
980
|
+
typedef detail::Ruby_Function_13<VALUE, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> RF;
|
981
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12);
|
916
982
|
detail::protect(
|
917
983
|
RUBY_VALUE_FUNC(RF::call),
|
918
984
|
reinterpret_cast<VALUE>(&f));
|
@@ -920,64 +986,69 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 co
|
|
920
986
|
}
|
921
987
|
|
922
988
|
// ---------------------------------------------------------------------
|
923
|
-
|
924
989
|
namespace detail
|
925
990
|
{
|
926
991
|
|
927
|
-
template<typename Ret_T, typename Fun, 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
|
928
|
-
class Ruby_Function_14
|
929
|
-
{
|
930
|
-
public:
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
private:
|
937
|
-
|
938
|
-
|
939
|
-
|
940
|
-
};
|
941
|
-
|
942
|
-
template<typename Ret_T, typename Fun, 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
|
943
|
-
inline Ruby_Function_14<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
|
944
|
-
Ruby_Function_14(Fun f, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13
|
945
|
-
|
946
|
-
{ }
|
947
|
-
|
948
|
-
template<typename Ret_T, typename Fun, 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
|
949
|
-
inline void Ruby_Function_14<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
|
950
|
-
operator()()
|
951
|
-
{
|
952
|
-
|
953
|
-
}
|
954
|
-
|
955
|
-
template<typename Ret_T, typename Fun, 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
|
956
|
-
inline VALUE Ruby_Function_14<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
|
957
|
-
call(Ruby_Function_14 * f)
|
958
|
-
{
|
959
|
-
|
960
|
-
|
961
|
-
}
|
992
|
+
template<typename Ret_T, typename Fun, 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>
|
993
|
+
class Ruby_Function_14
|
994
|
+
{
|
995
|
+
public:
|
996
|
+
Ruby_Function_14(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13);
|
997
|
+
inline void operator()();
|
998
|
+
static inline VALUE call(Ruby_Function_14 * f);
|
999
|
+
Ret_T const & result() const { return result_; }
|
1000
|
+
|
1001
|
+
private:
|
1002
|
+
Fun f_;
|
1003
|
+
T0 const & t0_; T1 const & t1_; T2 const & t2_; T3 const & t3_; T4 const & t4_; T5 const & t5_; T6 const & t6_; T7 const & t7_; T8 const & t8_; T9 const & t9_; T10 const & t10_; T11 const & t11_; T12 const & t12_; T13 const & t13_;
|
1004
|
+
Ret_T result_; // TODO: use placement new
|
1005
|
+
};
|
1006
|
+
|
1007
|
+
template<typename Ret_T, typename Fun, 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>
|
1008
|
+
inline Ruby_Function_14<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::
|
1009
|
+
Ruby_Function_14(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13)
|
1010
|
+
: f_(f), t0_(t0), t1_(t1), t2_(t2), t3_(t3), t4_(t4), t5_(t5), t6_(t6), t7_(t7), t8_(t8), t9_(t9), t10_(t10), t11_(t11), t12_(t12), t13_(t13)
|
1011
|
+
{ }
|
1012
|
+
|
1013
|
+
template<typename Ret_T, typename Fun, 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>
|
1014
|
+
inline void Ruby_Function_14<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::
|
1015
|
+
operator()()
|
1016
|
+
{
|
1017
|
+
result_ = f_(t0_, t1_, t2_, t3_, t4_, t5_, t6_, t7_, t8_, t9_, t10_, t11_, t12_, t13_);
|
1018
|
+
}
|
1019
|
+
|
1020
|
+
template<typename Ret_T, typename Fun, 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>
|
1021
|
+
inline VALUE Ruby_Function_14<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>::
|
1022
|
+
call(Ruby_Function_14 * f)
|
1023
|
+
{
|
1024
|
+
(*f)();
|
1025
|
+
return Qnil;
|
1026
|
+
}
|
962
1027
|
|
963
1028
|
} // namespace detail
|
964
1029
|
|
965
|
-
|
966
|
-
|
1030
|
+
/**
|
1031
|
+
* protect on a function with a return type
|
1032
|
+
*/
|
1033
|
+
template<typename Ret_T, typename Fun, 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>
|
1034
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13)
|
967
1035
|
{
|
968
|
-
typedef detail::Ruby_Function_14<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
|
969
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13
|
1036
|
+
typedef detail::Ruby_Function_14<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> RF;
|
1037
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13);
|
970
1038
|
detail::protect(
|
971
1039
|
RUBY_VALUE_FUNC(RF::call),
|
972
1040
|
reinterpret_cast<VALUE>(&f));
|
973
1041
|
return f.result();
|
974
1042
|
}
|
975
1043
|
|
976
|
-
|
977
|
-
|
1044
|
+
/**
|
1045
|
+
* protect on a function with VALUE return type
|
1046
|
+
*/
|
1047
|
+
template<typename Fun, 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>
|
1048
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13)
|
978
1049
|
{
|
979
|
-
typedef detail::Ruby_Function_14<VALUE, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
|
980
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13
|
1050
|
+
typedef detail::Ruby_Function_14<VALUE, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> RF;
|
1051
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13);
|
981
1052
|
detail::protect(
|
982
1053
|
RUBY_VALUE_FUNC(RF::call),
|
983
1054
|
reinterpret_cast<VALUE>(&f));
|
@@ -985,64 +1056,69 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 co
|
|
985
1056
|
}
|
986
1057
|
|
987
1058
|
// ---------------------------------------------------------------------
|
988
|
-
|
989
1059
|
namespace detail
|
990
1060
|
{
|
991
1061
|
|
992
|
-
template<typename Ret_T, typename Fun, 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
|
993
|
-
class Ruby_Function_15
|
994
|
-
{
|
995
|
-
public:
|
996
|
-
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
|
1001
|
-
private:
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
};
|
1006
|
-
|
1007
|
-
template<typename Ret_T, typename Fun, 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
|
1008
|
-
inline Ruby_Function_15<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
1009
|
-
Ruby_Function_15(Fun f, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13, T14 const & t14
|
1010
|
-
|
1011
|
-
{ }
|
1012
|
-
|
1013
|
-
template<typename Ret_T, typename Fun, 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
|
1014
|
-
inline void Ruby_Function_15<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
1015
|
-
operator()()
|
1016
|
-
{
|
1017
|
-
|
1018
|
-
}
|
1019
|
-
|
1020
|
-
template<typename Ret_T, typename Fun, 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
|
1021
|
-
inline VALUE Ruby_Function_15<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
1022
|
-
call(Ruby_Function_15 * f)
|
1023
|
-
{
|
1024
|
-
|
1025
|
-
|
1026
|
-
}
|
1062
|
+
template<typename Ret_T, typename Fun, 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>
|
1063
|
+
class Ruby_Function_15
|
1064
|
+
{
|
1065
|
+
public:
|
1066
|
+
Ruby_Function_15(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13, T14 const & t14);
|
1067
|
+
inline void operator()();
|
1068
|
+
static inline VALUE call(Ruby_Function_15 * f);
|
1069
|
+
Ret_T const & result() const { return result_; }
|
1070
|
+
|
1071
|
+
private:
|
1072
|
+
Fun f_;
|
1073
|
+
T0 const & t0_; T1 const & t1_; T2 const & t2_; T3 const & t3_; T4 const & t4_; T5 const & t5_; T6 const & t6_; T7 const & t7_; T8 const & t8_; T9 const & t9_; T10 const & t10_; T11 const & t11_; T12 const & t12_; T13 const & t13_; T14 const & t14_;
|
1074
|
+
Ret_T result_; // TODO: use placement new
|
1075
|
+
};
|
1076
|
+
|
1077
|
+
template<typename Ret_T, typename Fun, 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>
|
1078
|
+
inline Ruby_Function_15<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::
|
1079
|
+
Ruby_Function_15(Fun f, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13, T14 const & t14)
|
1080
|
+
: f_(f), t0_(t0), t1_(t1), t2_(t2), t3_(t3), t4_(t4), t5_(t5), t6_(t6), t7_(t7), t8_(t8), t9_(t9), t10_(t10), t11_(t11), t12_(t12), t13_(t13), t14_(t14)
|
1081
|
+
{ }
|
1082
|
+
|
1083
|
+
template<typename Ret_T, typename Fun, 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>
|
1084
|
+
inline void Ruby_Function_15<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::
|
1085
|
+
operator()()
|
1086
|
+
{
|
1087
|
+
result_ = f_(t0_, t1_, t2_, t3_, t4_, t5_, t6_, t7_, t8_, t9_, t10_, t11_, t12_, t13_, t14_);
|
1088
|
+
}
|
1089
|
+
|
1090
|
+
template<typename Ret_T, typename Fun, 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>
|
1091
|
+
inline VALUE Ruby_Function_15<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>::
|
1092
|
+
call(Ruby_Function_15 * f)
|
1093
|
+
{
|
1094
|
+
(*f)();
|
1095
|
+
return Qnil;
|
1096
|
+
}
|
1027
1097
|
|
1028
1098
|
} // namespace detail
|
1029
1099
|
|
1030
|
-
|
1031
|
-
|
1100
|
+
/**
|
1101
|
+
* protect on a function with a return type
|
1102
|
+
*/
|
1103
|
+
template<typename Ret_T, typename Fun, 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>
|
1104
|
+
inline Ret_T protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13, T14 const & t14)
|
1032
1105
|
{
|
1033
|
-
typedef detail::Ruby_Function_15<Ret_T, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
1034
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14
|
1106
|
+
typedef detail::Ruby_Function_15<Ret_T, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> RF;
|
1107
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14);
|
1035
1108
|
detail::protect(
|
1036
1109
|
RUBY_VALUE_FUNC(RF::call),
|
1037
1110
|
reinterpret_cast<VALUE>(&f));
|
1038
1111
|
return f.result();
|
1039
1112
|
}
|
1040
1113
|
|
1041
|
-
|
1042
|
-
|
1114
|
+
/**
|
1115
|
+
* protect on a function with VALUE return type
|
1116
|
+
*/
|
1117
|
+
template<typename Fun, 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>
|
1118
|
+
inline VALUE protect(Fun fun, T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11, T12 const & t12, T13 const & t13, T14 const & t14)
|
1043
1119
|
{
|
1044
|
-
typedef detail::Ruby_Function_15<VALUE, Fun, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
1045
|
-
RF f(fun, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14
|
1120
|
+
typedef detail::Ruby_Function_15<VALUE, Fun, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> RF;
|
1121
|
+
RF f(fun, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14);
|
1046
1122
|
detail::protect(
|
1047
1123
|
RUBY_VALUE_FUNC(RF::call),
|
1048
1124
|
reinterpret_cast<VALUE>(&f));
|
@@ -1050,8 +1126,6 @@ inline VALUE protect(Fun fun, T1 const & t1, T2 const & t2, T3 const & t3, T4 co
|
|
1050
1126
|
}
|
1051
1127
|
|
1052
1128
|
// ---------------------------------------------------------------------
|
1053
|
-
|
1054
|
-
|
1055
1129
|
} // namespace Rice
|
1056
1130
|
|
1057
1131
|
|