rucy 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.doc/ext/rucy/class.cpp +244 -0
- data/.doc/ext/rucy/exception.cpp +99 -0
- data/.doc/ext/rucy/function.cpp +63 -0
- data/.doc/ext/rucy/struct.cpp +80 -0
- data/.doc/ext/rucy/tester.cpp +41 -184
- data/.doc/ext/rucy/value.cpp +42 -0
- data/.gitignore +22 -0
- data/Rakefile +4 -29
- data/VERSION +1 -1
- data/ext/rucy/class.cpp +262 -0
- data/ext/rucy/class.h +96 -0
- data/ext/rucy/exception.cpp +107 -0
- data/ext/rucy/extconf.rb +9 -8
- data/ext/rucy/function.cpp +68 -0
- data/ext/rucy/struct.cpp +83 -0
- data/ext/rucy/tester.cpp +41 -197
- data/ext/rucy/tester.h +10 -0
- data/ext/rucy/value.cpp +46 -0
- data/include/rucy/defs.h.erb +17 -0
- data/include/rucy/exception.h +2 -0
- data/include/rucy/extension.h +206 -0
- data/include/rucy/rucy.h +25 -2
- data/include/rucy/symbol.h +11 -0
- data/include/rucy/value.h.erb +66 -14
- data/include/rucy.h +1 -1
- data/lib/rucy/module.rb +9 -2
- data/rucy.gemspec +16 -40
- data/src/exception.cpp +17 -25
- data/src/rucy.cpp +2 -2
- data/src/symbol.cpp +24 -0
- data/src/value.cpp.erb +161 -25
- data/task/doc.rake +50 -0
- data/test/helpers.rb +7 -0
- data/test/test_class.rb +161 -0
- data/test/test_exception.rb +39 -0
- data/test/test_function.rb +31 -0
- data/test/test_struct.rb +30 -0
- data/test/test_value.rb +18 -0
- metadata +123 -74
- data/include/rucy/defs.h +0 -101
- data/include/rucy/function.h +0 -245
- data/include/rucy/gc.h +0 -59
- data/include/rucy/module.h +0 -98
- data/include/rucy/value.h +0 -291
- data/src/function.cpp +0 -158
- data/src/gc.cpp +0 -63
- data/src/module.cpp +0 -325
- data/src/value.cpp +0 -511
- data/task/ext.rake +0 -96
- data/test/test_rucy.rb +0 -73
metadata
CHANGED
@@ -1,125 +1,174 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rucy
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.4
|
4
5
|
prerelease:
|
5
|
-
version: 0.1.3
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- snori
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
date: 2013-04-23 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
17
23
|
prerelease: false
|
18
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: xot
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
19
33
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version:
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
24
38
|
type: :runtime
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: rake
|
28
39
|
prerelease: false
|
29
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rake
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
30
49
|
none: false
|
31
|
-
requirements:
|
32
|
-
- -
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version:
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
35
54
|
type: :development
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: gemcutter
|
39
55
|
prerelease: false
|
40
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
57
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version:
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: gemcutter
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
46
70
|
type: :development
|
47
|
-
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
48
78
|
description: This library helps you to develop Ruby Extension by C++.
|
49
79
|
email: snori@xord.org
|
50
|
-
executables:
|
80
|
+
executables:
|
51
81
|
- rucy2rdoc
|
52
|
-
extensions:
|
82
|
+
extensions:
|
53
83
|
- Rakefile
|
54
|
-
extra_rdoc_files:
|
84
|
+
extra_rdoc_files:
|
55
85
|
- README
|
86
|
+
- .doc/ext/rucy/class.cpp
|
87
|
+
- .doc/ext/rucy/exception.cpp
|
88
|
+
- .doc/ext/rucy/function.cpp
|
89
|
+
- .doc/ext/rucy/struct.cpp
|
56
90
|
- .doc/ext/rucy/tester.cpp
|
57
|
-
|
58
|
-
|
91
|
+
- .doc/ext/rucy/value.cpp
|
92
|
+
files:
|
93
|
+
- .gitignore
|
59
94
|
- ChangeLog
|
95
|
+
- README
|
60
96
|
- Rakefile
|
61
|
-
- rucy.gemspec
|
62
97
|
- VERSION
|
63
|
-
-
|
98
|
+
- bin/rucy2rdoc
|
99
|
+
- ext/rucy/class.cpp
|
100
|
+
- ext/rucy/class.h
|
101
|
+
- ext/rucy/exception.cpp
|
64
102
|
- ext/rucy/extconf.rb
|
103
|
+
- ext/rucy/function.cpp
|
104
|
+
- ext/rucy/struct.cpp
|
65
105
|
- ext/rucy/tester.cpp
|
106
|
+
- ext/rucy/tester.h
|
107
|
+
- ext/rucy/value.cpp
|
108
|
+
- include/rucy.h
|
109
|
+
- include/rucy/class.h
|
66
110
|
- include/rucy/defs.h.erb
|
111
|
+
- include/rucy/exception.h
|
112
|
+
- include/rucy/extension.h
|
67
113
|
- include/rucy/function.h.erb
|
68
114
|
- include/rucy/module.h.erb
|
69
|
-
- include/rucy/value.h.erb
|
70
|
-
- include/rucy/class.h
|
71
|
-
- include/rucy/defs.h
|
72
|
-
- include/rucy/exception.h
|
73
|
-
- include/rucy/function.h
|
74
|
-
- include/rucy/gc.h
|
75
|
-
- include/rucy/module.h
|
76
115
|
- include/rucy/rucy.h
|
77
116
|
- include/rucy/symbol.h
|
78
|
-
- include/rucy/value.h
|
79
|
-
- include/rucy.h
|
80
|
-
- lib/rucy/module.rb
|
117
|
+
- include/rucy/value.h.erb
|
81
118
|
- lib/rucy.rb
|
82
|
-
-
|
83
|
-
-
|
84
|
-
- src/value.cpp.erb
|
119
|
+
- lib/rucy/module.rb
|
120
|
+
- rucy.gemspec
|
85
121
|
- src/class.cpp
|
86
122
|
- src/exception.cpp
|
87
|
-
- src/function.cpp
|
88
|
-
- src/
|
89
|
-
- src/module.cpp
|
123
|
+
- src/function.cpp.erb
|
124
|
+
- src/module.cpp.erb
|
90
125
|
- src/rucy.cpp
|
91
126
|
- src/symbol.cpp
|
92
|
-
- src/value.cpp
|
93
|
-
-
|
127
|
+
- src/value.cpp.erb
|
128
|
+
- task/doc.rake
|
129
|
+
- test/helpers.rb
|
130
|
+
- test/test_class.rb
|
131
|
+
- test/test_exception.rb
|
132
|
+
- test/test_function.rb
|
133
|
+
- test/test_struct.rb
|
134
|
+
- test/test_value.rb
|
135
|
+
- .doc/ext/rucy/class.cpp
|
136
|
+
- .doc/ext/rucy/exception.cpp
|
137
|
+
- .doc/ext/rucy/function.cpp
|
138
|
+
- .doc/ext/rucy/struct.cpp
|
94
139
|
- .doc/ext/rucy/tester.cpp
|
95
|
-
-
|
140
|
+
- .doc/ext/rucy/value.cpp
|
96
141
|
homepage: http://github.com/xord/rucy
|
97
142
|
licenses: []
|
98
|
-
|
99
143
|
post_install_message:
|
100
144
|
rdoc_options: []
|
101
|
-
|
102
|
-
require_paths:
|
145
|
+
require_paths:
|
103
146
|
- lib
|
104
|
-
|
105
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
106
148
|
none: false
|
107
|
-
requirements:
|
108
|
-
- -
|
109
|
-
- !ruby/object:Gem::Version
|
149
|
+
requirements:
|
150
|
+
- - ! '>='
|
151
|
+
- !ruby/object:Gem::Version
|
110
152
|
version: 1.9.0
|
111
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
154
|
none: false
|
113
|
-
requirements:
|
114
|
-
- -
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version:
|
155
|
+
requirements:
|
156
|
+
- - ! '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
segments:
|
160
|
+
- 0
|
161
|
+
hash: -3704850249383636708
|
117
162
|
requirements: []
|
118
|
-
|
119
163
|
rubyforge_project:
|
120
|
-
rubygems_version: 1.8.
|
164
|
+
rubygems_version: 1.8.25
|
121
165
|
signing_key:
|
122
166
|
specification_version: 3
|
123
167
|
summary: A Ruby C++ Extension Helper Library.
|
124
|
-
test_files:
|
125
|
-
- test/
|
168
|
+
test_files:
|
169
|
+
- test/helpers.rb
|
170
|
+
- test/test_class.rb
|
171
|
+
- test/test_exception.rb
|
172
|
+
- test/test_function.rb
|
173
|
+
- test/test_struct.rb
|
174
|
+
- test/test_value.rb
|
data/include/rucy/defs.h
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
// -*- c++ -*-
|
2
|
-
#pragma once
|
3
|
-
#ifndef __RUCY_DEFS_H__
|
4
|
-
#define __RUCY_DEFS_H__
|
5
|
-
|
6
|
-
|
7
|
-
#include <ruby.h>
|
8
|
-
#include <xot/string.h>
|
9
|
-
|
10
|
-
|
11
|
-
namespace Rucy
|
12
|
-
{
|
13
|
-
|
14
|
-
|
15
|
-
using Xot::String;
|
16
|
-
|
17
|
-
|
18
|
-
class Value;
|
19
|
-
|
20
|
-
|
21
|
-
typedef VALUE (*RubyFunctionN) (int argc, const Value* argv, Value self);
|
22
|
-
typedef VALUE (*RubyFunction0) (Value self);
|
23
|
-
typedef VALUE (*RubyFunction1) (Value self, Value v1);
|
24
|
-
typedef VALUE (*RubyFunction2) (Value self, Value v1, Value v2);
|
25
|
-
typedef VALUE (*RubyFunction3) (Value self, Value v1, Value v2, Value v3);
|
26
|
-
typedef VALUE (*RubyFunction4) (Value self, Value v1, Value v2, Value v3, Value v4);
|
27
|
-
typedef VALUE (*RubyFunction5) (Value self, Value v1, Value v2, Value v3, Value v4, Value v5);
|
28
|
-
typedef VALUE (*RubyFunction6) (Value self, Value v1, Value v2, Value v3, Value v4, Value v5, Value v6);
|
29
|
-
typedef VALUE (*RubyFunction7) (Value self, Value v1, Value v2, Value v3, Value v4, Value v5, Value v6, Value v7);
|
30
|
-
typedef VALUE (*RubyFunction8) (Value self, Value v1, Value v2, Value v3, Value v4, Value v5, Value v6, Value v7, Value v8);
|
31
|
-
|
32
|
-
|
33
|
-
}// Rucy
|
34
|
-
|
35
|
-
|
36
|
-
#define RUBY_DEF_ALLOC(name, klass) \
|
37
|
-
VALUE name (Value klass) \
|
38
|
-
{ \
|
39
|
-
RUBY_TRY
|
40
|
-
#define RUBY_DEFN(name) \
|
41
|
-
VALUE name (int argc, const Value* argv, Value self) \
|
42
|
-
{ \
|
43
|
-
RUBY_TRY
|
44
|
-
#define RUBY_DEF0(name) \
|
45
|
-
VALUE name (Value self) \
|
46
|
-
{ \
|
47
|
-
RUBY_TRY
|
48
|
-
#define RUBY_DEF1(name, v1) \
|
49
|
-
VALUE name (Value self, Value v1) \
|
50
|
-
{ \
|
51
|
-
RUBY_TRY
|
52
|
-
#define RUBY_DEF2(name, v1, v2) \
|
53
|
-
VALUE name (Value self, Value v1, Value v2) \
|
54
|
-
{ \
|
55
|
-
RUBY_TRY
|
56
|
-
#define RUBY_DEF3(name, v1, v2, v3) \
|
57
|
-
VALUE name (Value self, Value v1, Value v2, Value v3) \
|
58
|
-
{ \
|
59
|
-
RUBY_TRY
|
60
|
-
#define RUBY_DEF4(name, v1, v2, v3, v4) \
|
61
|
-
VALUE name (Value self, Value v1, Value v2, Value v3, Value v4) \
|
62
|
-
{ \
|
63
|
-
RUBY_TRY
|
64
|
-
#define RUBY_DEF5(name, v1, v2, v3, v4, v5) \
|
65
|
-
VALUE name (Value self, Value v1, Value v2, Value v3, Value v4, Value v5) \
|
66
|
-
{ \
|
67
|
-
RUBY_TRY
|
68
|
-
#define RUBY_DEF6(name, v1, v2, v3, v4, v5, v6) \
|
69
|
-
VALUE name (Value self, Value v1, Value v2, Value v3, Value v4, Value v5, Value v6) \
|
70
|
-
{ \
|
71
|
-
RUBY_TRY
|
72
|
-
#define RUBY_DEF7(name, v1, v2, v3, v4, v5, v6, v7) \
|
73
|
-
VALUE name (Value self, Value v1, Value v2, Value v3, Value v4, Value v5, Value v6, Value v7) \
|
74
|
-
{ \
|
75
|
-
RUBY_TRY
|
76
|
-
#define RUBY_DEF8(name, v1, v2, v3, v4, v5, v6, v7, v8) \
|
77
|
-
VALUE name (Value self, Value v1, Value v2, Value v3, Value v4, Value v5, Value v6, Value v7, Value v8) \
|
78
|
-
{ \
|
79
|
-
RUBY_TRY
|
80
|
-
|
81
|
-
#define RUBY_END \
|
82
|
-
RUBY_CATCH \
|
83
|
-
return Qnil; \
|
84
|
-
}
|
85
|
-
|
86
|
-
#ifdef RUCY_USE_DEF
|
87
|
-
#define DEFN RUBY_DEFN
|
88
|
-
#define DEF0 RUBY_DEF0
|
89
|
-
#define DEF1 RUBY_DEF1
|
90
|
-
#define DEF2 RUBY_DEF2
|
91
|
-
#define DEF3 RUBY_DEF3
|
92
|
-
#define DEF4 RUBY_DEF4
|
93
|
-
#define DEF5 RUBY_DEF5
|
94
|
-
#define DEF6 RUBY_DEF6
|
95
|
-
#define DEF7 RUBY_DEF7
|
96
|
-
#define DEF8 RUBY_DEF8
|
97
|
-
#define END RUBY_END
|
98
|
-
#endif
|
99
|
-
|
100
|
-
|
101
|
-
#endif//EOH
|
data/include/rucy/function.h
DELETED
@@ -1,245 +0,0 @@
|
|
1
|
-
// -*- c++ -*-
|
2
|
-
#pragma once
|
3
|
-
#ifndef __RUCY_FUNCTION_H__
|
4
|
-
#define __RUCY_FUNCTION_H__
|
5
|
-
|
6
|
-
|
7
|
-
#include <ruby.h>
|
8
|
-
#include <rucy/defs.h>
|
9
|
-
#include <rucy/value.h>
|
10
|
-
|
11
|
-
|
12
|
-
namespace Rucy
|
13
|
-
{
|
14
|
-
|
15
|
-
|
16
|
-
void define_function (const char* name, RubyFunctionN fun);
|
17
|
-
void define_function (const char* name, RubyFunction0 fun);
|
18
|
-
void define_function (const char* name, RubyFunction1 fun);
|
19
|
-
void define_function (const char* name, RubyFunction2 fun);
|
20
|
-
void define_function (const char* name, RubyFunction3 fun);
|
21
|
-
void define_function (const char* name, RubyFunction4 fun);
|
22
|
-
void define_function (const char* name, RubyFunction5 fun);
|
23
|
-
void define_function (const char* name, RubyFunction6 fun);
|
24
|
-
void define_function (const char* name, RubyFunction7 fun);
|
25
|
-
void define_function (const char* name, RubyFunction8 fun);
|
26
|
-
|
27
|
-
Value call (Symbol name, int argc, const Value* argv);
|
28
|
-
Value call (Symbol name);
|
29
|
-
Value call (Symbol name, Value v1);
|
30
|
-
Value call (Symbol name, Value v1, Value v2);
|
31
|
-
Value call (Symbol name, Value v1, Value v2, Value v3);
|
32
|
-
Value call (Symbol name, Value v1, Value v2, Value v3, Value v4);
|
33
|
-
Value call (Symbol name, Value v1, Value v2, Value v3, Value v4, Value v5);
|
34
|
-
Value call (Symbol name, Value v1, Value v2, Value v3, Value v4, Value v5, Value v6);
|
35
|
-
Value call (Symbol name, Value v1, Value v2, Value v3, Value v4, Value v5, Value v6, Value v7);
|
36
|
-
Value call (Symbol name, Value v1, Value v2, Value v3, Value v4, Value v5, Value v6, Value v7, Value v8);
|
37
|
-
|
38
|
-
Value eval (const char* str);
|
39
|
-
|
40
|
-
|
41
|
-
template <typename F> class Fun0
|
42
|
-
{
|
43
|
-
public:
|
44
|
-
Fun0 (F f) : f(f) {}
|
45
|
-
static VALUE function (Fun0* fun) {return (*fun->f)();}
|
46
|
-
private:
|
47
|
-
F f;
|
48
|
-
};// Fun0
|
49
|
-
template <typename F, typename P1> class Fun1
|
50
|
-
{
|
51
|
-
public:
|
52
|
-
Fun1 (F f, P1 p1) : f(f), p1(p1) {}
|
53
|
-
static VALUE function (Fun1* fun) {return (*fun->f)(fun->p1);}
|
54
|
-
private:
|
55
|
-
F f; P1 p1;
|
56
|
-
};// Fun1
|
57
|
-
template <typename F, typename P1, typename P2> class Fun2
|
58
|
-
{
|
59
|
-
public:
|
60
|
-
Fun2 (F f, P1 p1, P2 p2) : f(f), p1(p1), p2(p2) {}
|
61
|
-
static VALUE function (Fun2* fun) {return (*fun->f)(fun->p1, fun->p2);}
|
62
|
-
private:
|
63
|
-
F f; P1 p1; P2 p2;
|
64
|
-
};// Fun2
|
65
|
-
template <typename F, typename P1, typename P2, typename P3> class Fun3
|
66
|
-
{
|
67
|
-
public:
|
68
|
-
Fun3 (F f, P1 p1, P2 p2, P3 p3) : f(f), p1(p1), p2(p2), p3(p3) {}
|
69
|
-
static VALUE function (Fun3* fun) {return (*fun->f)(fun->p1, fun->p2, fun->p3);}
|
70
|
-
private:
|
71
|
-
F f; P1 p1; P2 p2; P3 p3;
|
72
|
-
};// Fun3
|
73
|
-
template <typename F, typename P1, typename P2, typename P3, typename P4> class Fun4
|
74
|
-
{
|
75
|
-
public:
|
76
|
-
Fun4 (F f, P1 p1, P2 p2, P3 p3, P4 p4) : f(f), p1(p1), p2(p2), p3(p3), p4(p4) {}
|
77
|
-
static VALUE function (Fun4* fun) {return (*fun->f)(fun->p1, fun->p2, fun->p3, fun->p4);}
|
78
|
-
private:
|
79
|
-
F f; P1 p1; P2 p2; P3 p3; P4 p4;
|
80
|
-
};// Fun4
|
81
|
-
template <typename F, typename P1, typename P2, typename P3, typename P4, typename P5> class Fun5
|
82
|
-
{
|
83
|
-
public:
|
84
|
-
Fun5 (F f, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) : f(f), p1(p1), p2(p2), p3(p3), p4(p4), p5(p5) {}
|
85
|
-
static VALUE function (Fun5* fun) {return (*fun->f)(fun->p1, fun->p2, fun->p3, fun->p4, fun->p5);}
|
86
|
-
private:
|
87
|
-
F f; P1 p1; P2 p2; P3 p3; P4 p4; P5 p5;
|
88
|
-
};// Fun5
|
89
|
-
template <typename F, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6> class Fun6
|
90
|
-
{
|
91
|
-
public:
|
92
|
-
Fun6 (F f, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) : f(f), p1(p1), p2(p2), p3(p3), p4(p4), p5(p5), p6(p6) {}
|
93
|
-
static VALUE function (Fun6* fun) {return (*fun->f)(fun->p1, fun->p2, fun->p3, fun->p4, fun->p5, fun->p6);}
|
94
|
-
private:
|
95
|
-
F f; P1 p1; P2 p2; P3 p3; P4 p4; P5 p5; P6 p6;
|
96
|
-
};// Fun6
|
97
|
-
template <typename F, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7> class Fun7
|
98
|
-
{
|
99
|
-
public:
|
100
|
-
Fun7 (F f, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7) : f(f), p1(p1), p2(p2), p3(p3), p4(p4), p5(p5), p6(p6), p7(p7) {}
|
101
|
-
static VALUE function (Fun7* fun) {return (*fun->f)(fun->p1, fun->p2, fun->p3, fun->p4, fun->p5, fun->p6, fun->p7);}
|
102
|
-
private:
|
103
|
-
F f; P1 p1; P2 p2; P3 p3; P4 p4; P5 p5; P6 p6; P7 p7;
|
104
|
-
};// Fun7
|
105
|
-
template <typename F, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8> class Fun8
|
106
|
-
{
|
107
|
-
public:
|
108
|
-
Fun8 (F f, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8) : f(f), p1(p1), p2(p2), p3(p3), p4(p4), p5(p5), p6(p6), p7(p7), p8(p8) {}
|
109
|
-
static VALUE function (Fun8* fun) {return (*fun->f)(fun->p1, fun->p2, fun->p3, fun->p4, fun->p5, fun->p6, fun->p7, fun->p8);}
|
110
|
-
private:
|
111
|
-
F f; P1 p1; P2 p2; P3 p3; P4 p4; P5 p5; P6 p6; P7 p7; P8 p8;
|
112
|
-
};// Fun8
|
113
|
-
|
114
|
-
Value call_protect (VALUE (*fun)(VALUE), VALUE arg);
|
115
|
-
|
116
|
-
template <typename F>
|
117
|
-
inline Value protect (F f)
|
118
|
-
{
|
119
|
-
typedef Fun0<F> FunT;
|
120
|
-
FunT fun(f);
|
121
|
-
return call_protect((VALUE(*)(VALUE)) FunT::function, (VALUE) &fun);
|
122
|
-
}
|
123
|
-
template <typename F, typename P1>
|
124
|
-
inline Value protect (F f, P1 p1)
|
125
|
-
{
|
126
|
-
typedef Fun1<F, P1> FunT;
|
127
|
-
FunT fun(f, p1);
|
128
|
-
return call_protect((VALUE(*)(VALUE)) FunT::function, (VALUE) &fun);
|
129
|
-
}
|
130
|
-
template <typename F, typename P1, typename P2>
|
131
|
-
inline Value protect (F f, P1 p1, P2 p2)
|
132
|
-
{
|
133
|
-
typedef Fun2<F, P1, P2> FunT;
|
134
|
-
FunT fun(f, p1, p2);
|
135
|
-
return call_protect((VALUE(*)(VALUE)) FunT::function, (VALUE) &fun);
|
136
|
-
}
|
137
|
-
template <typename F, typename P1, typename P2, typename P3>
|
138
|
-
inline Value protect (F f, P1 p1, P2 p2, P3 p3)
|
139
|
-
{
|
140
|
-
typedef Fun3<F, P1, P2, P3> FunT;
|
141
|
-
FunT fun(f, p1, p2, p3);
|
142
|
-
return call_protect((VALUE(*)(VALUE)) FunT::function, (VALUE) &fun);
|
143
|
-
}
|
144
|
-
template <typename F, typename P1, typename P2, typename P3, typename P4>
|
145
|
-
inline Value protect (F f, P1 p1, P2 p2, P3 p3, P4 p4)
|
146
|
-
{
|
147
|
-
typedef Fun4<F, P1, P2, P3, P4> FunT;
|
148
|
-
FunT fun(f, p1, p2, p3, p4);
|
149
|
-
return call_protect((VALUE(*)(VALUE)) FunT::function, (VALUE) &fun);
|
150
|
-
}
|
151
|
-
template <typename F, typename P1, typename P2, typename P3, typename P4, typename P5>
|
152
|
-
inline Value protect (F f, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5)
|
153
|
-
{
|
154
|
-
typedef Fun5<F, P1, P2, P3, P4, P5> FunT;
|
155
|
-
FunT fun(f, p1, p2, p3, p4, p5);
|
156
|
-
return call_protect((VALUE(*)(VALUE)) FunT::function, (VALUE) &fun);
|
157
|
-
}
|
158
|
-
template <typename F, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
|
159
|
-
inline Value protect (F f, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6)
|
160
|
-
{
|
161
|
-
typedef Fun6<F, P1, P2, P3, P4, P5, P6> FunT;
|
162
|
-
FunT fun(f, p1, p2, p3, p4, p5, p6);
|
163
|
-
return call_protect((VALUE(*)(VALUE)) FunT::function, (VALUE) &fun);
|
164
|
-
}
|
165
|
-
template <typename F, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
|
166
|
-
inline Value protect (F f, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7)
|
167
|
-
{
|
168
|
-
typedef Fun7<F, P1, P2, P3, P4, P5, P6, P7> FunT;
|
169
|
-
FunT fun(f, p1, p2, p3, p4, p5, p6, p7);
|
170
|
-
return call_protect((VALUE(*)(VALUE)) FunT::function, (VALUE) &fun);
|
171
|
-
}
|
172
|
-
template <typename F, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
|
173
|
-
inline Value protect (F f, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8)
|
174
|
-
{
|
175
|
-
typedef Fun8<F, P1, P2, P3, P4, P5, P6, P7, P8> FunT;
|
176
|
-
FunT fun(f, p1, p2, p3, p4, p5, p6, p7, p8);
|
177
|
-
return call_protect((VALUE(*)(VALUE)) FunT::function, (VALUE) &fun);
|
178
|
-
}
|
179
|
-
|
180
|
-
inline Value protect (const char* method)
|
181
|
-
{
|
182
|
-
return protect(rb_eval_string, method);
|
183
|
-
}
|
184
|
-
template <typename P1>
|
185
|
-
inline Value protect (const char* method, P1 p1)
|
186
|
-
{
|
187
|
-
return protect(rb_eval_string, stringf(
|
188
|
-
"%s(%s)", method,
|
189
|
-
to_str(p1).c_str()).c_str());
|
190
|
-
}
|
191
|
-
template <typename P1, typename P2>
|
192
|
-
inline Value protect (const char* method, P1 p1, P2 p2)
|
193
|
-
{
|
194
|
-
return protect(rb_eval_string, stringf(
|
195
|
-
"%s(%s, %s)", method,
|
196
|
-
to_str(p1).c_str(), to_str(p2).c_str()).c_str());
|
197
|
-
}
|
198
|
-
template <typename P1, typename P2, typename P3>
|
199
|
-
inline Value protect (const char* method, P1 p1, P2 p2, P3 p3)
|
200
|
-
{
|
201
|
-
return protect(rb_eval_string, stringf(
|
202
|
-
"%s(%s, %s, %s)", method,
|
203
|
-
to_str(p1).c_str(), to_str(p2).c_str(), to_str(p3).c_str()).c_str());
|
204
|
-
}
|
205
|
-
template <typename P1, typename P2, typename P3, typename P4>
|
206
|
-
inline Value protect (const char* method, P1 p1, P2 p2, P3 p3, P4 p4)
|
207
|
-
{
|
208
|
-
return protect(rb_eval_string, stringf(
|
209
|
-
"%s(%s, %s, %s, %s)", method,
|
210
|
-
to_str(p1).c_str(), to_str(p2).c_str(), to_str(p3).c_str(), to_str(p4).c_str()).c_str());
|
211
|
-
}
|
212
|
-
template <typename P1, typename P2, typename P3, typename P4, typename P5>
|
213
|
-
inline Value protect (const char* method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5)
|
214
|
-
{
|
215
|
-
return protect(rb_eval_string, stringf(
|
216
|
-
"%s(%s, %s, %s, %s, %s)", method,
|
217
|
-
to_str(p1).c_str(), to_str(p2).c_str(), to_str(p3).c_str(), to_str(p4).c_str(), to_str(p5).c_str()).c_str());
|
218
|
-
}
|
219
|
-
template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
|
220
|
-
inline Value protect (const char* method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6)
|
221
|
-
{
|
222
|
-
return protect(rb_eval_string, stringf(
|
223
|
-
"%s(%s, %s, %s, %s, %s, %s)", method,
|
224
|
-
to_str(p1).c_str(), to_str(p2).c_str(), to_str(p3).c_str(), to_str(p4).c_str(), to_str(p5).c_str(), to_str(p6).c_str()).c_str());
|
225
|
-
}
|
226
|
-
template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7>
|
227
|
-
inline Value protect (const char* method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7)
|
228
|
-
{
|
229
|
-
return protect(rb_eval_string, stringf(
|
230
|
-
"%s(%s, %s, %s, %s, %s, %s, %s)", method,
|
231
|
-
to_str(p1).c_str(), to_str(p2).c_str(), to_str(p3).c_str(), to_str(p4).c_str(), to_str(p5).c_str(), to_str(p6).c_str(), to_str(p7).c_str()).c_str());
|
232
|
-
}
|
233
|
-
template <typename P1, typename P2, typename P3, typename P4, typename P5, typename P6, typename P7, typename P8>
|
234
|
-
inline Value protect (const char* method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8)
|
235
|
-
{
|
236
|
-
return protect(rb_eval_string, stringf(
|
237
|
-
"%s(%s, %s, %s, %s, %s, %s, %s, %s)", method,
|
238
|
-
to_str(p1).c_str(), to_str(p2).c_str(), to_str(p3).c_str(), to_str(p4).c_str(), to_str(p5).c_str(), to_str(p6).c_str(), to_str(p7).c_str(), to_str(p8).c_str()).c_str());
|
239
|
-
}
|
240
|
-
|
241
|
-
|
242
|
-
}// Rucy
|
243
|
-
|
244
|
-
|
245
|
-
#endif//EOH
|
data/include/rucy/gc.h
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
// -*- c++ -*-
|
2
|
-
#pragma once
|
3
|
-
#ifndef __RUCY_GC_H__
|
4
|
-
#define __RUCY_GC_H__
|
5
|
-
|
6
|
-
|
7
|
-
#include <boost/noncopyable.hpp>
|
8
|
-
#include <ruby.h>
|
9
|
-
#include <rucy/value.h>
|
10
|
-
|
11
|
-
|
12
|
-
namespace Rucy
|
13
|
-
{
|
14
|
-
|
15
|
-
|
16
|
-
class GCGuard : public boost::noncopyable
|
17
|
-
{
|
18
|
-
|
19
|
-
public:
|
20
|
-
|
21
|
-
GCGuard (VALUE* v);
|
22
|
-
|
23
|
-
GCGuard (Value* v);
|
24
|
-
|
25
|
-
~GCGuard ();
|
26
|
-
|
27
|
-
private:
|
28
|
-
|
29
|
-
VALUE* pval;
|
30
|
-
|
31
|
-
};// GCGuard
|
32
|
-
|
33
|
-
|
34
|
-
class GlobalValue
|
35
|
-
{
|
36
|
-
|
37
|
-
public:
|
38
|
-
|
39
|
-
GlobalValue (Value v);
|
40
|
-
|
41
|
-
Value value () const;
|
42
|
-
|
43
|
-
operator VALUE () const;
|
44
|
-
|
45
|
-
operator Value () const;
|
46
|
-
|
47
|
-
private:
|
48
|
-
|
49
|
-
Value val;
|
50
|
-
|
51
|
-
GCGuard guard;
|
52
|
-
|
53
|
-
};// GlobalValue
|
54
|
-
|
55
|
-
|
56
|
-
}// Rucy
|
57
|
-
|
58
|
-
|
59
|
-
#endif//EOH
|