rucy 0.1.12 → 0.1.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.doc/ext/rucy/class.cpp +10 -73
- data/README.md +2 -2
- data/Rakefile +10 -15
- data/VERSION +1 -1
- data/ext/rucy/class.cpp +17 -84
- data/ext/rucy/class.h +0 -10
- data/ext/rucy/extconf.rb +2 -3
- data/include/rucy/debug.h +22 -0
- data/include/rucy/extension.h.erb +85 -172
- data/include/rucy/value.h.erb +30 -15
- data/include/rucy.h +4 -1
- data/lib/rucy/module.rb +4 -19
- data/lib/rucy/rake.rb +62 -0
- data/rucy.gemspec +4 -6
- data/src/value.cpp.erb +36 -41
- data/test/test_class.rb +2 -34
- metadata +20 -47
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6d3ce58764689285aa279b96609e26efad68af0cab0442e6744b6262a5a0cd76
|
4
|
+
data.tar.gz: 7783aa48c1e2d61522b95986a643cc110010406ba212a5c3392078e460a2bd96
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7c183577638ad519cf64ef5cd8f495cd1f0ead80d10dff1618096383b758f74e550e9245c51010fd6037ab2b1f34afc23b05e777aa96ea715d49b9e99046bc7
|
7
|
+
data.tar.gz: c781f568268be25430ed45243c4241e6b5550f9cf1b213d9da8f7f460872d91cbdbdecc2f75bf87bcd1a5e0a4224ef7d5d864ef4fb1ae4bf952b2afdd9d29a51
|
data/.doc/ext/rucy/class.cpp
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#include "class.h"
|
2
2
|
|
3
3
|
|
4
|
+
#include <vector>
|
4
5
|
#include "rucy.h"
|
5
6
|
|
6
7
|
|
@@ -30,46 +31,27 @@ template <typename T>
|
|
30
31
|
class RubyBase : public ClassWrapper<T>
|
31
32
|
{
|
32
33
|
|
33
|
-
|
34
|
-
|
35
|
-
RUCY_OVERRIDE_BEGIN(ClassWrapper<T>)
|
34
|
+
typedef ClassWrapper<T> Super;
|
36
35
|
|
37
|
-
|
38
|
-
|
39
|
-
RUCY_OVERRIDE_END
|
36
|
+
public:
|
40
37
|
|
41
38
|
virtual const char* name_overridable () const
|
42
39
|
{
|
43
40
|
RUCY_SYM(name_overridable);
|
44
|
-
if (
|
41
|
+
if (this->is_overridable())
|
45
42
|
return this->value.call(name_overridable).c_str();
|
46
43
|
else
|
47
44
|
return Super::name_overridable();
|
48
45
|
}
|
49
46
|
|
50
|
-
virtual const char* name_overridable_faster () const
|
51
|
-
{
|
52
|
-
RUCY_SYM(name_overridable_faster);
|
53
|
-
if (RUCY_IS_OVERRIDDEN(name_overridable_faster))
|
54
|
-
return this->value.call(name_overridable_faster).c_str();
|
55
|
-
else
|
56
|
-
return Super::name_overridable_faster();
|
57
|
-
}
|
58
|
-
|
59
|
-
bool is_name_overridable_faster_overridden () const
|
60
|
-
{
|
61
|
-
RUCY_SYM(name_overridable_faster);
|
62
|
-
return RUCY_IS_OVERRIDDEN(name_overridable_faster);
|
63
|
-
}
|
64
|
-
|
65
47
|
};// RubyBase
|
66
48
|
|
67
49
|
|
68
|
-
#define THIS(type)
|
50
|
+
#define THIS(type) to<type*>(self)
|
69
51
|
|
70
|
-
#define CHECK(type)
|
52
|
+
#define CHECK(type) RUCY_CHECK_OBJ(type, self)
|
71
53
|
|
72
|
-
#define CALL(
|
54
|
+
#define CALL(obj, fun) RUCY_CALL_SUPER(obj, fun)
|
73
55
|
|
74
56
|
|
75
57
|
/*
|
@@ -99,7 +81,7 @@ static
|
|
99
81
|
VALUE base_name_overridable(VALUE self)
|
100
82
|
{
|
101
83
|
CHECK(Base);
|
102
|
-
return value(CALL(
|
84
|
+
return value(CALL(THIS(Base), name_overridable()));
|
103
85
|
}
|
104
86
|
|
105
87
|
static
|
@@ -109,33 +91,6 @@ VALUE call_name_overridable(VALUE self)
|
|
109
91
|
return value(THIS(Base)->name_overridable());
|
110
92
|
}
|
111
93
|
|
112
|
-
static
|
113
|
-
VALUE base_name_overridable_faster(VALUE self)
|
114
|
-
{
|
115
|
-
CHECK(Base);
|
116
|
-
return value(CALL(Base, THIS(Base), name_overridable_faster()));
|
117
|
-
}
|
118
|
-
|
119
|
-
static
|
120
|
-
VALUE call_name_overridable_faster(VALUE self)
|
121
|
-
{
|
122
|
-
CHECK(Base);
|
123
|
-
return value(THIS(Base)->name_overridable_faster());
|
124
|
-
}
|
125
|
-
|
126
|
-
template <typename T>
|
127
|
-
static
|
128
|
-
VALUE is_name_overridable_faster_overridden(VALUE self)
|
129
|
-
{
|
130
|
-
RUCY_CHECK_OBJ(T, self);
|
131
|
-
RubyBase<T>* obj = dynamic_cast<RubyBase<T>*>(THIS(T));
|
132
|
-
if (!obj) invalid_object_error(__FILE__, __LINE__, "dynamic_cast() failed.");
|
133
|
-
return value(obj->is_name_overridable_faster_overridden());
|
134
|
-
}
|
135
|
-
|
136
|
-
static RUCY_DEF_clear_override_flags(Base_clear_override_flags, Base);
|
137
|
-
static RUCY_DEF_clear_override_flags(Sub_clear_override_flags, Sub);
|
138
|
-
|
139
94
|
static
|
140
95
|
VALUE base_new_raw(VALUE self)
|
141
96
|
{
|
@@ -156,14 +111,7 @@ static
|
|
156
111
|
VALUE sub_name_overridable(VALUE self)
|
157
112
|
{
|
158
113
|
CHECK(Sub);
|
159
|
-
return value(CALL(
|
160
|
-
}
|
161
|
-
|
162
|
-
static
|
163
|
-
VALUE sub_name_overridable_faster(VALUE self)
|
164
|
-
{
|
165
|
-
CHECK(Sub);
|
166
|
-
return value(CALL(Sub, THIS(Sub), name_overridable_faster()));
|
114
|
+
return value(CALL(THIS(Sub), name_overridable()));
|
167
115
|
}
|
168
116
|
|
169
117
|
static
|
@@ -189,7 +137,7 @@ VALUE simpleobj_initialize(VALUE self, VALUE name)
|
|
189
137
|
THIS(SimpleObj)->init(name.c_str());
|
190
138
|
}
|
191
139
|
|
192
|
-
static std::vector<Xot::Ref<SimpleObj
|
140
|
+
static std::vector<Xot::Ref<SimpleObj>> simpleobj_refs;
|
193
141
|
|
194
142
|
static
|
195
143
|
VALUE simpleobj_set_refs(VALUE self, VALUE objs)
|
@@ -217,25 +165,14 @@ Init_class ()
|
|
217
165
|
rb_define_alloc_func(cBase, base_alloc);
|
218
166
|
rb_define_method(cBase, "name", RUBY_METHOD_FUNC(name), 0);
|
219
167
|
rb_define_method(cBase, "name_overridable", RUBY_METHOD_FUNC(base_name_overridable), 0);
|
220
|
-
rb_define_method(cBase, "name_overridable_faster", RUBY_METHOD_FUNC(base_name_overridable_faster), 0);
|
221
168
|
rb_define_method(cBase, "call_name", RUBY_METHOD_FUNC(call_name), 0);
|
222
169
|
rb_define_method(cBase, "call_name_overridable", RUBY_METHOD_FUNC(call_name_overridable), 0);
|
223
|
-
rb_define_method(cBase, "call_name_overridable_faster", RUBY_METHOD_FUNC(call_name_overridable_faster), 0);
|
224
|
-
cBase.define_method(
|
225
|
-
"is_name_overridable_faster_overridden",
|
226
|
-
is_name_overridable_faster_overridden<Base>);
|
227
170
|
rb_define_singleton_method(cBase, "new_raw", RUBY_METHOD_FUNC(base_new_raw), 0);
|
228
|
-
|
229
171
|
|
230
172
|
cSub = rb_define_class_under(mTester, "Sub", cBase);
|
231
173
|
rb_define_alloc_func(cSub, sub_alloc);
|
232
174
|
rb_define_method(cSub, "name_overridable", RUBY_METHOD_FUNC(sub_name_overridable), 0);
|
233
|
-
rb_define_method(cSub, "name_overridable_faster", RUBY_METHOD_FUNC(sub_name_overridable_faster), 0);
|
234
|
-
cSub.define_method(
|
235
|
-
"is_name_overridable_faster_overridden",
|
236
|
-
is_name_overridable_faster_overridden<Sub>);
|
237
175
|
rb_define_singleton_method(cSub, "new_raw", RUBY_METHOD_FUNC(sub_new_raw), 0);
|
238
|
-
|
239
176
|
|
240
177
|
cSimpleObj = rb_define_class_under(mTester, "SimpleObj", rb_cObject);
|
241
178
|
rb_define_alloc_func(cSimpleObj, simpleobj_alloc);
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
# Rucy - A Ruby C++ Extension Helper Library.
|
3
3
|
|
4
|
-
by
|
4
|
+
by xordog@gmail.com
|
5
5
|
|
6
6
|
|
7
7
|
## What is this library?
|
@@ -28,4 +28,4 @@ see ext/rucy/tester.cpp.
|
|
28
28
|
## Contact information.
|
29
29
|
|
30
30
|
Web: http://blog.xord.org/
|
31
|
-
Mail:
|
31
|
+
Mail: xordog@gmail.com
|
data/Rakefile
CHANGED
@@ -2,28 +2,23 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
%w[../xot .]
|
5
|
-
.map {|s| File.expand_path "
|
5
|
+
.map {|s| File.expand_path "#{s}/lib", __dir__}
|
6
6
|
.each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
|
7
7
|
|
8
|
-
require '
|
8
|
+
require 'rucy/rake'
|
9
|
+
|
9
10
|
require 'xot/module'
|
10
11
|
require 'rucy/module'
|
11
12
|
|
12
|
-
include Xot::Rake
|
13
|
-
|
14
13
|
|
15
|
-
MODULES = [Xot, Rucy]
|
16
|
-
MODULE = MODULES.last
|
17
|
-
DLNAME = 'tester'
|
18
|
-
INCDIRS = ruby_incdirs
|
19
|
-
RUCY2RDOC = 'bin/rucy2rdoc'
|
14
|
+
MODULES = [Xot, Rucy]
|
20
15
|
NPARAM_MAX = 8
|
21
16
|
NTIMES = (0..NPARAM_MAX)
|
22
17
|
|
18
|
+
build_native_library
|
19
|
+
build_ruby_extension dlname: :tester
|
20
|
+
test_ruby_extension
|
21
|
+
generate_documents
|
22
|
+
build_ruby_gem
|
23
23
|
|
24
|
-
task :default => :
|
25
|
-
|
26
|
-
task :build => :lib
|
27
|
-
|
28
|
-
|
29
|
-
MODULES.each {|m| m.load_tasks :lib, :ext, :test, :doc, :gem}
|
24
|
+
task :default => :test
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.13
|
data/ext/rucy/class.cpp
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#include "class.h"
|
2
2
|
|
3
3
|
|
4
|
+
#include <vector>
|
4
5
|
#include "rucy.h"
|
5
6
|
|
6
7
|
|
@@ -30,46 +31,27 @@ template <typename T>
|
|
30
31
|
class RubyBase : public ClassWrapper<T>
|
31
32
|
{
|
32
33
|
|
33
|
-
|
34
|
-
|
35
|
-
RUCY_OVERRIDE_BEGIN(ClassWrapper<T>)
|
36
|
-
|
37
|
-
RUCY_OVERRIDE_ID(name_overridable_faster)
|
34
|
+
typedef ClassWrapper<T> Super;
|
38
35
|
|
39
|
-
|
36
|
+
public:
|
40
37
|
|
41
38
|
virtual const char* name_overridable () const
|
42
39
|
{
|
43
40
|
RUCY_SYM(name_overridable);
|
44
|
-
if (
|
41
|
+
if (this->is_overridable())
|
45
42
|
return this->value.call(name_overridable).c_str();
|
46
43
|
else
|
47
44
|
return Super::name_overridable();
|
48
45
|
}
|
49
46
|
|
50
|
-
virtual const char* name_overridable_faster () const
|
51
|
-
{
|
52
|
-
RUCY_SYM(name_overridable_faster);
|
53
|
-
if (RUCY_IS_OVERRIDDEN(name_overridable_faster))
|
54
|
-
return this->value.call(name_overridable_faster).c_str();
|
55
|
-
else
|
56
|
-
return Super::name_overridable_faster();
|
57
|
-
}
|
58
|
-
|
59
|
-
bool is_name_overridable_faster_overridden () const
|
60
|
-
{
|
61
|
-
RUCY_SYM(name_overridable_faster);
|
62
|
-
return RUCY_IS_OVERRIDDEN(name_overridable_faster);
|
63
|
-
}
|
64
|
-
|
65
47
|
};// RubyBase
|
66
48
|
|
67
49
|
|
68
|
-
#define THIS(type)
|
50
|
+
#define THIS(type) to<type*>(self)
|
69
51
|
|
70
|
-
#define CHECK(type)
|
52
|
+
#define CHECK(type) RUCY_CHECK_OBJ(type, self)
|
71
53
|
|
72
|
-
#define CALL(
|
54
|
+
#define CALL(obj, fun) RUCY_CALL_SUPER(obj, fun)
|
73
55
|
|
74
56
|
|
75
57
|
/*
|
@@ -102,7 +84,7 @@ static
|
|
102
84
|
RUCY_DEF0(base_name_overridable)
|
103
85
|
{
|
104
86
|
CHECK(Base);
|
105
|
-
return value(CALL(
|
87
|
+
return value(CALL(THIS(Base), name_overridable()));
|
106
88
|
}
|
107
89
|
RUCY_END
|
108
90
|
|
@@ -114,36 +96,6 @@ RUCY_DEF0(call_name_overridable)
|
|
114
96
|
}
|
115
97
|
RUCY_END
|
116
98
|
|
117
|
-
static
|
118
|
-
RUCY_DEF0(base_name_overridable_faster)
|
119
|
-
{
|
120
|
-
CHECK(Base);
|
121
|
-
return value(CALL(Base, THIS(Base), name_overridable_faster()));
|
122
|
-
}
|
123
|
-
RUCY_END
|
124
|
-
|
125
|
-
static
|
126
|
-
RUCY_DEF0(call_name_overridable_faster)
|
127
|
-
{
|
128
|
-
CHECK(Base);
|
129
|
-
return value(THIS(Base)->name_overridable_faster());
|
130
|
-
}
|
131
|
-
RUCY_END
|
132
|
-
|
133
|
-
template <typename T>
|
134
|
-
static
|
135
|
-
RUCY_DEF0(is_name_overridable_faster_overridden)
|
136
|
-
{
|
137
|
-
RUCY_CHECK_OBJ(T, self);
|
138
|
-
RubyBase<T>* obj = dynamic_cast<RubyBase<T>*>(THIS(T));
|
139
|
-
if (!obj) invalid_object_error(__FILE__, __LINE__, "dynamic_cast() failed.");
|
140
|
-
return value(obj->is_name_overridable_faster_overridden());
|
141
|
-
}
|
142
|
-
RUCY_END
|
143
|
-
|
144
|
-
static RUCY_DEF_clear_override_flags(Base_clear_override_flags, Base);
|
145
|
-
static RUCY_DEF_clear_override_flags(Sub_clear_override_flags, Sub);
|
146
|
-
|
147
99
|
static
|
148
100
|
RUCY_DEF0(base_new_raw)
|
149
101
|
{
|
@@ -166,15 +118,7 @@ static
|
|
166
118
|
RUCY_DEF0(sub_name_overridable)
|
167
119
|
{
|
168
120
|
CHECK(Sub);
|
169
|
-
return value(CALL(
|
170
|
-
}
|
171
|
-
RUCY_END
|
172
|
-
|
173
|
-
static
|
174
|
-
RUCY_DEF0(sub_name_overridable_faster)
|
175
|
-
{
|
176
|
-
CHECK(Sub);
|
177
|
-
return value(CALL(Sub, THIS(Sub), name_overridable_faster()));
|
121
|
+
return value(CALL(THIS(Sub), name_overridable()));
|
178
122
|
}
|
179
123
|
RUCY_END
|
180
124
|
|
@@ -204,7 +148,7 @@ RUCY_DEF1(simpleobj_initialize, name)
|
|
204
148
|
}
|
205
149
|
RUCY_END
|
206
150
|
|
207
|
-
static std::vector<Xot::Ref<SimpleObj
|
151
|
+
static std::vector<Xot::Ref<SimpleObj>> simpleobj_refs;
|
208
152
|
|
209
153
|
static
|
210
154
|
RUCY_DEF1(simpleobj_set_refs, objs)
|
@@ -232,27 +176,16 @@ Init_class ()
|
|
232
176
|
|
233
177
|
cBase = mTester.define_class("Base");
|
234
178
|
cBase.define_alloc_func(base_alloc);
|
235
|
-
cBase.define_method( "name",
|
236
|
-
cBase.define_method( "name_overridable",
|
237
|
-
cBase.define_method(
|
238
|
-
cBase.define_method("
|
239
|
-
cBase.
|
240
|
-
cBase.define_method("call_name_overridable_faster", call_name_overridable_faster);
|
241
|
-
cBase.define_method(
|
242
|
-
"is_name_overridable_faster_overridden",
|
243
|
-
is_name_overridable_faster_overridden<Base>);
|
244
|
-
cBase.define_singleton_method("new_raw", base_new_raw);
|
245
|
-
cBase.define_clear_override_flags(Base_clear_override_flags);
|
179
|
+
cBase.define_method( "name", name);
|
180
|
+
cBase.define_method( "name_overridable", base_name_overridable);
|
181
|
+
cBase.define_method("call_name", call_name);
|
182
|
+
cBase.define_method("call_name_overridable", call_name_overridable);
|
183
|
+
cBase.define_singleton_method("new_raw", base_new_raw);
|
246
184
|
|
247
185
|
cSub = mTester.define_class("Sub", cBase);
|
248
186
|
cSub.define_alloc_func(sub_alloc);
|
249
|
-
cSub.define_method("name_overridable",
|
250
|
-
cSub.
|
251
|
-
cSub.define_method(
|
252
|
-
"is_name_overridable_faster_overridden",
|
253
|
-
is_name_overridable_faster_overridden<Sub>);
|
254
|
-
cSub.define_singleton_method("new_raw", sub_new_raw);
|
255
|
-
cSub.define_clear_override_flags(Sub_clear_override_flags);
|
187
|
+
cSub.define_method("name_overridable", sub_name_overridable);
|
188
|
+
cSub.define_singleton_method("new_raw", sub_new_raw);
|
256
189
|
|
257
190
|
cSimpleObj = mTester.define_class("SimpleObj");
|
258
191
|
cSimpleObj.define_alloc_func(simpleobj_alloc);
|
data/ext/rucy/class.h
CHANGED
@@ -35,11 +35,6 @@ class Base : public Xot::RefCountable<>
|
|
35
35
|
return "Base::name_overridable";
|
36
36
|
}
|
37
37
|
|
38
|
-
virtual const char* name_overridable_faster () const
|
39
|
-
{
|
40
|
-
return "Base::name_overridable_faster";
|
41
|
-
}
|
42
|
-
|
43
38
|
};// Base
|
44
39
|
|
45
40
|
|
@@ -68,11 +63,6 @@ class Sub : public Base
|
|
68
63
|
return "Sub::name_overridable";
|
69
64
|
}
|
70
65
|
|
71
|
-
virtual const char* name_overridable_faster () const
|
72
|
-
{
|
73
|
-
return "Sub::name_overridable_faster";
|
74
|
-
}
|
75
|
-
|
76
66
|
};// Sub
|
77
67
|
|
78
68
|
|
data/ext/rucy/extconf.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
%w[../xot .]
|
5
|
-
.map {|s| File.expand_path "
|
5
|
+
.map {|s| File.expand_path "../../#{s}/lib", __dir__}
|
6
6
|
.each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
|
7
7
|
|
8
8
|
require 'mkmf'
|
@@ -13,10 +13,9 @@ require 'rucy/module'
|
|
13
13
|
|
14
14
|
Xot::ExtConf.new Xot, Rucy do
|
15
15
|
setup do
|
16
|
-
headers << '
|
16
|
+
headers << 'ruby.h'
|
17
17
|
local_libs << 'rucy'
|
18
18
|
end
|
19
19
|
|
20
|
-
dir_config 'boost'
|
21
20
|
create_makefile 'rucy/tester'
|
22
21
|
end
|