rucy 0.1.12 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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
|