rucy 0.1.6 → 0.1.7

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.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/.doc/ext/rucy/class.cpp +48 -56
  3. data/.doc/ext/rucy/exception.cpp +1 -1
  4. data/.doc/ext/rucy/function.cpp +14 -2
  5. data/.doc/ext/rucy/struct.cpp +2 -20
  6. data/.doc/ext/rucy/tester.cpp +7 -19
  7. data/.doc/ext/rucy/value.cpp +23 -1
  8. data/{README → README.md} +0 -0
  9. data/Rakefile +7 -5
  10. data/VERSION +1 -1
  11. data/bin/rucy2rdoc +8 -5
  12. data/ext/rucy/class.cpp +78 -87
  13. data/ext/rucy/class.h +12 -6
  14. data/ext/rucy/exception.cpp +17 -17
  15. data/ext/rucy/extconf.rb +11 -52
  16. data/ext/rucy/function.cpp +25 -12
  17. data/ext/rucy/struct.cpp +8 -26
  18. data/ext/rucy/tester.cpp +11 -24
  19. data/ext/rucy/value.cpp +32 -9
  20. data/include/rucy/class.h +5 -3
  21. data/include/rucy/exception.h +17 -71
  22. data/include/rucy/extension.h.erb +489 -0
  23. data/include/rucy/function.h.erb +20 -34
  24. data/include/rucy/module.h.erb +20 -14
  25. data/include/rucy/ruby.h +23 -0
  26. data/include/rucy/rucy.h +7 -66
  27. data/include/rucy/symbol.h +11 -11
  28. data/include/rucy/value.h.erb +98 -176
  29. data/include/rucy.h +9 -1
  30. data/lib/rucy/module.rb +11 -7
  31. data/rucy.gemspec +3 -4
  32. data/src/class.cpp +34 -6
  33. data/src/exception.cpp +69 -54
  34. data/src/extension.cpp +59 -0
  35. data/src/function.cpp.erb +17 -25
  36. data/src/module.cpp.erb +25 -16
  37. data/src/rucy.cpp +15 -25
  38. data/src/symbol.cpp +18 -17
  39. data/src/value.cpp.erb +374 -175
  40. data/task/doc.rake +5 -0
  41. data/test/helper.rb +6 -2
  42. data/test/test_class.rb +27 -20
  43. data/test/test_function.rb +6 -0
  44. data/test/test_value.rb +4 -0
  45. metadata +29 -39
  46. data/.gitignore +0 -22
  47. data/ChangeLog +0 -13
  48. data/include/rucy/defs.h.erb +0 -76
  49. data/include/rucy/extension.h +0 -206
data/ext/rucy/class.cpp CHANGED
@@ -1,19 +1,17 @@
1
1
  #include "class.h"
2
2
 
3
3
 
4
- #include <rucy.h>
4
+ #include "rucy.h"
5
5
 
6
6
 
7
7
  using namespace Rucy;
8
8
 
9
9
 
10
- static Class cBase, cSub, cRubyObj;
11
-
12
-
13
- RUCY_WRAPPER_VALUE_FROM_TO(Base, cBase)
14
- RUCY_WRAPPER_VALUE_FROM_TO(Sub, cSub)
15
- RUCY_WRAPPER_VALUE_FROM_TO(RubyObj, cRubyObj)
10
+ static Class cBase, cSub, cSimpleObj;
16
11
 
12
+ RUCY_WRAPPER_VALUE_FROM_TO(Base, cBase)
13
+ RUCY_WRAPPER_VALUE_FROM_TO(Sub, cSub)
14
+ RUCY_WRAPPER_VALUE_FROM_TO(SimpleObj, cSimpleObj)
17
15
 
18
16
  template <typename T> Class get_class ();
19
17
 
@@ -26,26 +24,32 @@ template <typename T>
26
24
  class RubyBase : public ClassWrapper<T>
27
25
  {
28
26
 
29
- typedef ClassWrapper<T> Super;
27
+ public:
30
28
 
31
- RUCY_OVERRIDE_ID_START(name_overridable_faster)
32
- RUCY_OVERRIDE_ID_LAST
29
+ RUCY_OVERRIDE_BEGIN(ClassWrapper<T>)
33
30
 
34
- public:
31
+ RUCY_OVERRIDE_ID(name_overridable_faster)
32
+
33
+ RUCY_OVERRIDE_END
35
34
 
36
35
  virtual const char* name_overridable () const
37
36
  {
38
- RUCY_OVERRIDABLE_METHOD(name_overridable, get_class<T>(), .c_str());
37
+ RUCY_SYM(name_overridable);
38
+ return this->value.call(name_overridable).c_str();
39
39
  }
40
40
 
41
41
  virtual const char* name_overridable_faster () const
42
42
  {
43
- RUCY_OVERRIDABLE_METHOD_FAST(name_overridable_faster, get_class<T>(), .c_str());
43
+ RUCY_SYM(name_overridable_faster);
44
+ if (RUCY_IS_OVERRIDDEN(name_overridable_faster, get_class<T>()))
45
+ return this->value.call(name_overridable_faster).c_str();
46
+ else
47
+ return Super::name_overridable_faster();
44
48
  }
45
49
 
46
50
  bool is_name_overridable_faster_overridden () const
47
51
  {
48
- SYM(name_overridable_faster);
52
+ RUCY_SYM(name_overridable_faster);
49
53
  return RUCY_IS_OVERRIDDEN(name_overridable_faster, get_class<T>());
50
54
  }
51
55
 
@@ -54,171 +58,161 @@ class RubyBase : public ClassWrapper<T>
54
58
 
55
59
  #define THIS(type) to<type*>(self)
56
60
 
57
- #define CHECK(type) RUCY_CHECK_OBJ(self, type, c##type)
61
+ #define CHECK(type) RUCY_CHECK_OBJ(type, c##type, self)
58
62
 
59
- #define CALL(type, obj, fun) RUCY_WRAPPER_CALL(ClassWrapper<type>, obj, fun)
63
+ #define CALL(type, obj, fun) RUCY_WRAPPER_CALL(type, obj, fun)
60
64
 
61
65
 
62
66
  /*
63
67
  alloc function.
64
68
  */
65
69
  static
66
- RUBY_DEF_ALLOC(base_alloc, klass)
70
+ RUCY_DEF_ALLOC(base_alloc, klass)
67
71
  {
68
72
  return value(new RubyBase<Base>, klass);
69
73
  }
70
- RUBY_END
74
+ RUCY_END
71
75
 
72
76
  static
73
- RUBY_DEF0(name)
77
+ RUCY_DEF0(name)
74
78
  {
75
79
  CHECK(Base);
76
80
  return value(THIS(Base)->name());
77
81
  }
78
- RUBY_END
82
+ RUCY_END
79
83
 
80
84
  static
81
- RUBY_DEF0(call_name)
85
+ RUCY_DEF0(call_name)
82
86
  {
83
87
  CHECK(Base);
84
88
  return value(THIS(Base)->name());
85
89
  }
86
- RUBY_END
90
+ RUCY_END
87
91
 
88
92
  static
89
- RUBY_DEF0(base_name_overridable)
93
+ RUCY_DEF0(base_name_overridable)
90
94
  {
91
95
  CHECK(Base);
92
96
  return value(CALL(Base, THIS(Base), name_overridable()));
93
97
  }
94
- RUBY_END
98
+ RUCY_END
95
99
 
96
100
  static
97
- RUBY_DEF0(call_name_overridable)
101
+ RUCY_DEF0(call_name_overridable)
98
102
  {
99
103
  CHECK(Base);
100
104
  return value(THIS(Base)->name_overridable());
101
105
  }
102
- RUBY_END
106
+ RUCY_END
103
107
 
104
108
  static
105
- RUBY_DEF0(base_name_overridable_faster)
109
+ RUCY_DEF0(base_name_overridable_faster)
106
110
  {
107
111
  CHECK(Base);
108
112
  return value(CALL(Base, THIS(Base), name_overridable_faster()));
109
113
  }
110
- RUBY_END
114
+ RUCY_END
111
115
 
112
116
  static
113
- RUBY_DEF0(call_name_overridable_faster)
117
+ RUCY_DEF0(call_name_overridable_faster)
114
118
  {
115
119
  CHECK(Base);
116
120
  return value(THIS(Base)->name_overridable_faster());
117
121
  }
118
- RUBY_END
122
+ RUCY_END
119
123
 
120
124
  template <typename T>
121
125
  static
122
- RUBY_DEF0(is_name_overridable_faster_overridden)
126
+ RUCY_DEF0(is_name_overridable_faster_overridden)
123
127
  {
124
- RUCY_CHECK_OBJ(self, T, get_class<T>());
128
+ RUCY_CHECK_OBJ(T, get_class<T>(), self);
125
129
  RubyBase<T>* obj = dynamic_cast<RubyBase<T>*>(THIS(T));
126
- if (!obj) invalid_object_error("dynamic_cast() failed.");
130
+ if (!obj) invalid_object_error(__FILE__, __LINE__, "dynamic_cast() failed.");
127
131
  return value(obj->is_name_overridable_faster_overridden());
128
132
  }
129
- RUBY_END
133
+ RUCY_END
130
134
 
131
- template <typename T>
132
- static
133
- RUBY_DEF0(clear_override_flags)
134
- {
135
- RUCY_CHECK_OBJ(self, T, get_class<T>());
136
- ClassWrapper<T>* obj = dynamic_cast<ClassWrapper<T>*>(THIS(T));
137
- if (obj) obj->clear_override_flags();
138
- }
139
- RUBY_END
135
+ static RUCY_DEF_clear_override_flags(Base_clear_override_flags, Base, cBase);
136
+ static RUCY_DEF_clear_override_flags(Sub_clear_override_flags, Sub, cSub);
140
137
 
141
- template <bool singleton>
142
138
  static
143
- RUBY_DEF1(method_added_or_removed, method_name)
144
- {
145
- SYMBOL(klass, "class");
146
- SYM(name);
147
- eval(
148
- Xot::stringf(
149
- "ObjectSpace.each_object(%s) {|o| o.clear_override_flags}",
150
- (singleton ? self(klass) : self)(name).c_str()).c_str());
151
- }
152
- RUBY_END
153
-
154
- static
155
- RUBY_DEF0(base_new_raw)
139
+ RUCY_DEF0(base_new_raw)
156
140
  {
157
141
  return value(new Base);
158
142
  }
159
- RUBY_END
143
+ RUCY_END
160
144
 
161
145
 
162
146
  /*
163
147
  alloc function.
164
148
  */
165
149
  static
166
- RUBY_DEF_ALLOC(sub_alloc, klass)
150
+ RUCY_DEF_ALLOC(sub_alloc, klass)
167
151
  {
168
152
  return value(new RubyBase<Sub>, klass);
169
153
  }
170
- RUBY_END
154
+ RUCY_END
171
155
 
172
156
  static
173
- RUBY_DEF0(sub_name_overridable)
157
+ RUCY_DEF0(sub_name_overridable)
174
158
  {
175
159
  CHECK(Sub);
176
160
  return value(CALL(Sub, THIS(Sub), name_overridable()));
177
161
  }
178
- RUBY_END
162
+ RUCY_END
179
163
 
180
164
  static
181
- RUBY_DEF0(sub_name_overridable_faster)
165
+ RUCY_DEF0(sub_name_overridable_faster)
182
166
  {
183
167
  CHECK(Sub);
184
168
  return value(CALL(Sub, THIS(Sub), name_overridable_faster()));
185
169
  }
186
- RUBY_END
170
+ RUCY_END
187
171
 
188
172
  static
189
- RUBY_DEF0(sub_new_raw)
173
+ RUCY_DEF0(sub_new_raw)
190
174
  {
191
175
  return value(new Sub);
192
176
  }
193
- RUBY_END
177
+ RUCY_END
194
178
 
195
179
 
196
180
  /*
197
181
  alloc function.
198
182
  */
199
183
  static
200
- RUBY_DEF_ALLOC(rubyobj_alloc, klass)
184
+ RUCY_DEF_ALLOC(simpleobj_alloc, klass)
185
+ {
186
+ return value(new ClassWrapper<SimpleObj>, klass);
187
+ }
188
+ RUCY_END
189
+
190
+ static
191
+ RUCY_DEF1(simpleobj_initialize, name)
201
192
  {
202
- return value(new ClassWrapper<RubyObj>, klass);
193
+ CHECK(SimpleObj);
194
+ THIS(SimpleObj)->init(name.c_str());
203
195
  }
204
- RUBY_END
196
+ RUCY_END
205
197
 
206
- static Xot::Ref<RubyObj> rubyobj_ref;
198
+ static std::vector<Xot::Ref<SimpleObj> > simpleobj_refs;
207
199
 
208
200
  static
209
- RUBY_DEF1(rubyobj_set_ref, obj)
201
+ RUCY_DEF1(simpleobj_set_refs, objs)
210
202
  {
211
- rubyobj_ref = to<RubyObj*>(obj);
212
- return obj;
203
+ int size = objs.size();
204
+ for (int i = 0; i < size; ++i)
205
+ simpleobj_refs.push_back(to<SimpleObj*>(objs[i]));
206
+ return objs;
213
207
  }
214
- RUBY_END
208
+ RUCY_END
215
209
 
216
210
  static
217
- RUBY_DEF0(rubyobj_clear_ref)
211
+ RUCY_DEF0(simpleobj_clear_refs)
218
212
  {
219
- rubyobj_ref.reset();
213
+ simpleobj_refs.clear();
220
214
  }
221
- RUBY_END
215
+ RUCY_END
222
216
 
223
217
 
224
218
  void
@@ -238,12 +232,8 @@ Init_class ()
238
232
  cBase.define_method(
239
233
  "is_name_overridable_faster_overridden",
240
234
  is_name_overridable_faster_overridden<Base>);
241
- cBase.define_method("clear_override_flags", clear_override_flags<Base>);
242
- cBase.define_method("singleton_method_added", method_added_or_removed<true>);
243
- cBase.define_method("singleton_method_removed", method_added_or_removed<true>);
244
- cBase.define_singleton_method("method_added", method_added_or_removed<false>);
245
- cBase.define_singleton_method("method_removed", method_added_or_removed<false>);
246
235
  cBase.define_singleton_method("new_raw", base_new_raw);
236
+ cBase.define_clear_override_flags(Base_clear_override_flags);
247
237
 
248
238
  cSub = mTester.define_class("Sub", cBase);
249
239
  cSub.define_alloc_func(sub_alloc);
@@ -252,11 +242,12 @@ Init_class ()
252
242
  cSub.define_method(
253
243
  "is_name_overridable_faster_overridden",
254
244
  is_name_overridable_faster_overridden<Sub>);
255
- cSub.define_method("clear_override_flags", clear_override_flags<Sub>);
256
245
  cSub.define_singleton_method("new_raw", sub_new_raw);
246
+ cSub.define_clear_override_flags(Sub_clear_override_flags);
257
247
 
258
- cRubyObj = mTester.define_class("RubyObj");
259
- cRubyObj.define_alloc_func(rubyobj_alloc);
260
- cRubyObj.define_function("set_ref", rubyobj_set_ref);
261
- cRubyObj.define_function("clear_ref", rubyobj_clear_ref);
248
+ cSimpleObj = mTester.define_class("SimpleObj");
249
+ cSimpleObj.define_alloc_func(simpleobj_alloc);
250
+ cSimpleObj.define_private_method("initialize", simpleobj_initialize);
251
+ cSimpleObj.define_function("set_refs", simpleobj_set_refs);
252
+ cSimpleObj.define_function("clear_refs", simpleobj_clear_refs);
262
253
  }
data/ext/rucy/class.h CHANGED
@@ -5,6 +5,7 @@
5
5
 
6
6
 
7
7
  #include <xot/ref.h>
8
+ #include <xot/string.h>
8
9
  #include <rucy/extension.h>
9
10
  #include "tester.h"
10
11
 
@@ -75,22 +76,27 @@ class Sub : public Base
75
76
  };// Sub
76
77
 
77
78
 
78
- class RubyObj : public Xot::RefCountable<>
79
+ class SimpleObj : public Xot::RefCountable<>
79
80
  {
80
81
 
81
82
  public:
82
83
 
83
- RubyObj ()
84
+ void init (const char* name_)
84
85
  {
85
- log("RubyObj()");
86
+ name = name_;
87
+ log("SimpleObj(" + name + ")");
86
88
  }
87
89
 
88
- ~RubyObj ()
90
+ ~SimpleObj ()
89
91
  {
90
- log("~RubyObj()");
92
+ log("~SimpleObj(" + name + ")");
91
93
  }
92
94
 
93
- };// Obj
95
+ private:
96
+
97
+ Xot::String name;
98
+
99
+ };// SimpleObj
94
100
 
95
101
 
96
102
  #endif//EOH
@@ -1,4 +1,4 @@
1
- #include <rucy.h>
1
+ #include "rucy.h"
2
2
 
3
3
 
4
4
  using namespace Rucy;
@@ -8,51 +8,51 @@ using namespace Rucy;
8
8
  raise ruby's exception.
9
9
  */
10
10
  static
11
- RUBY_DEF0(raise_ruby_exception)
11
+ RUCY_DEF0(raise_ruby_exception)
12
12
  {
13
13
  throw RubyException(rb_eStandardError, "raise_ruby_exception");
14
14
  }
15
- RUBY_END
15
+ RUCY_END
16
16
 
17
17
  /*
18
18
  raise in eval.
19
19
  */
20
20
  static
21
- RUBY_DEF0(raise_in_eval)
21
+ RUCY_DEF0(raise_in_eval)
22
22
  {
23
23
  eval("raise 'raise_in_eval'");
24
24
  }
25
- RUBY_END
25
+ RUCY_END
26
26
 
27
27
  /*
28
28
  throw nothing.
29
29
  */
30
30
  static
31
- RUBY_DEF0(throw_nothing)
31
+ RUCY_DEF0(throw_nothing)
32
32
  {
33
33
  throw;
34
34
  }
35
- RUBY_END
35
+ RUCY_END
36
36
 
37
37
  /*
38
38
  throw std::exception.
39
39
  */
40
40
  static
41
- RUBY_DEF0(throw_std_exception)
41
+ RUCY_DEF0(throw_std_exception)
42
42
  {
43
43
  throw std::exception();
44
44
  }
45
- RUBY_END
45
+ RUCY_END
46
46
 
47
47
  /*
48
48
  throw std::runtime_error.
49
49
  */
50
50
  static
51
- RUBY_DEF0(throw_std_runtime_error)
51
+ RUCY_DEF0(throw_std_runtime_error)
52
52
  {
53
53
  throw std::runtime_error("std::runtime_error");
54
54
  }
55
- RUBY_END
55
+ RUCY_END
56
56
 
57
57
  struct MyException : public std::runtime_error
58
58
  {
@@ -63,31 +63,31 @@ struct MyException : public std::runtime_error
63
63
  throw custom exception class.
64
64
  */
65
65
  static
66
- RUBY_DEF0(throw_custom_exception)
66
+ RUCY_DEF0(throw_custom_exception)
67
67
  {
68
68
  throw MyException();
69
69
  }
70
- RUBY_END
70
+ RUCY_END
71
71
 
72
72
  /*
73
73
  throw std::string.
74
74
  */
75
75
  static
76
- RUBY_DEF0(throw_std_string)
76
+ RUCY_DEF0(throw_std_string)
77
77
  {
78
78
  throw std::string("std::string");
79
79
  }
80
- RUBY_END
80
+ RUCY_END
81
81
 
82
82
  /*
83
83
  throw char*.
84
84
  */
85
85
  static
86
- RUBY_DEF0(throw_cstring)
86
+ RUCY_DEF0(throw_cstring)
87
87
  {
88
88
  throw "cstring";
89
89
  }
90
- RUBY_END
90
+ RUCY_END
91
91
 
92
92
 
93
93
  void
data/ext/rucy/extconf.rb CHANGED
@@ -1,63 +1,22 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
 
4
- require 'xot/load_path'
5
- Xot::LoadPath.unshift File.expand_path('../../../lib', __FILE__)
4
+ %w[../xot .]
5
+ .map {|s| File.expand_path "../../../#{s}/lib", __FILE__}
6
+ .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
6
7
 
7
8
  require 'mkmf'
8
- require 'xot/rake'
9
+ require 'xot/extconf'
9
10
  require 'xot/module'
10
11
  require 'rucy/module'
11
12
 
12
- include Xot::Rake
13
13
 
14
+ Xot::ExtConf.new Xot, Rucy do
15
+ setup do
16
+ headers << 'boost/noncopyable.hpp' << 'ruby.h'
17
+ local_libs << 'rucy'
18
+ end
14
19
 
15
- debug = env :DEBUG, false
16
-
17
-
18
- DEFS = []
19
- INCDIRS = %w[
20
- /opt/local/include
21
- /opt/include
22
- ]
23
- LIBDIRS = []
24
-
25
- HEADERS = %w[
26
- boost/noncopyable.hpp
27
- ruby.h
28
- xot.h
29
- rucy.h
30
- ]
31
- LIBS = %w[
32
- stdc++
33
- xot
34
- rucy
35
- ]
36
-
37
-
38
- DEFS << '_DEBUG' if debug
39
- DEFS << 'NDEBUG' unless debug
40
- DEFS << 'WINDOWS' << 'WIN32' if win32?
41
- DEFS << 'COCOA' if cocoa?
42
- DEFS << $~[0].upcase if RUBY_PLATFORM =~ /mswin|ming|cygwin|darwin/i
43
-
44
- $CPPFLAGS << DEFS.map {|s| " -D#{s}"}.join
45
- $CPPFLAGS << INCDIRS.map {|s| " -I#{s}"}.join
46
- $LDFLAGS << LIBDIRS.map {|s| " -L#{s}"}.join
47
- $CFLAGS << ' --stdlib=libc++' if clang?
48
- $LOCAL_LIBS << ' -lrucy'
49
-
50
- RbConfig::CONFIG.each do |key, val|
51
- {'gcc' => 'g++', 'clang' => 'clang++'}.each {|from, to| val.gsub! from, to}
20
+ dir_config 'boost'
21
+ create_makefile 'rucy/tester'
52
22
  end
53
-
54
-
55
- dir_config 'boost'
56
- dir_config 'xot', Xot.root_dir
57
- dir_config 'rucy', Rucy.root_dir
58
-
59
- exit 1 unless HEADERS.all? {|s| have_header(s)}
60
- exit 1 unless LIBS.all? {|s| have_library(s)}
61
-
62
-
63
- create_makefile 'rucy/tester'
@@ -1,4 +1,4 @@
1
- #include <rucy.h>
1
+ #include "rucy.h"
2
2
 
3
3
 
4
4
  using namespace Rucy;
@@ -8,50 +8,62 @@ using namespace Rucy;
8
8
  do nothing.
9
9
  */
10
10
  static
11
- RUBY_DEFN(do_nothing)
11
+ RUCY_DEFN(do_nothing)
12
12
  {
13
13
  }
14
- RUBY_END
14
+ RUCY_END
15
15
 
16
16
  /*
17
17
  return nil.
18
18
  */
19
19
  static
20
- RUBY_DEF0(return_nil)
20
+ RUCY_DEF0(return_nil)
21
21
  {
22
- return Qnil;
22
+ return nil();
23
23
  }
24
- RUBY_END
24
+ RUCY_END
25
25
 
26
26
  /*
27
27
  return int.
28
28
  */
29
29
  static
30
- RUBY_DEF0(return_int)
30
+ RUCY_DEF0(return_int)
31
31
  {
32
32
  return value(1);
33
33
  }
34
- RUBY_END
34
+ RUCY_END
35
35
 
36
36
  /*
37
37
  return flaot.
38
38
  */
39
39
  static
40
- RUBY_DEF0(return_float)
40
+ RUCY_DEF0(return_float)
41
41
  {
42
42
  return value(1.0f);
43
43
  }
44
- RUBY_END
44
+ RUCY_END
45
45
 
46
46
  /*
47
47
  return string.
48
48
  */
49
49
  static
50
- RUBY_DEF0(return_string)
50
+ RUCY_DEF0(return_string)
51
51
  {
52
52
  return value("");
53
53
  }
54
- RUBY_END
54
+ RUCY_END
55
+
56
+ /*
57
+ check_arg_count
58
+ */
59
+ static
60
+ RUCY_DEFN(arg_count_must_1)
61
+ {
62
+ check_arg_count(__FILE__, __LINE__, "arg_count_must_1", argc, 1);
63
+ RUCY_SYM(ok);
64
+ return ok.value();
65
+ }
66
+ RUCY_END
55
67
 
56
68
 
57
69
  void
@@ -65,4 +77,5 @@ Init_function ()
65
77
  mTester.define_method("return_int", return_int);
66
78
  mTester.define_method("return_float", return_float);
67
79
  mTester.define_method("return_string", return_string);
80
+ mTester.define_method("arg_count_must_1", arg_count_must_1);
68
81
  }
data/ext/rucy/struct.cpp CHANGED
@@ -1,4 +1,4 @@
1
- #include <rucy.h>
1
+ #include "rucy.h"
2
2
 
3
3
 
4
4
  using namespace Rucy;
@@ -16,58 +16,40 @@ struct Struct
16
16
 
17
17
  static Class cStruct;
18
18
 
19
-
20
- namespace Rucy
21
- {
22
-
23
-
24
- static Value
25
- value (const Struct& obj)
26
- {
27
- return new_type(cStruct, new Struct(obj));
28
- }
29
-
30
- template <> inline Struct*
31
- value_to<Struct*> (Value val, bool)
32
- {
33
- return get_type_ptr<Struct>(val, cStruct);
34
- }
35
-
36
-
37
- }// Rucy
19
+ RUCY_VALUE_FROM_TO(Struct, cStruct)
38
20
 
39
21
 
40
22
  /*
41
23
  alloc function.
42
24
  */
43
25
  static
44
- RUBY_DEF_ALLOC(alloc, klass)
26
+ RUCY_DEF_ALLOC(alloc, klass)
45
27
  {
46
28
  return new_type<Struct>(klass);
47
29
  }
48
- RUBY_END
30
+ RUCY_END
49
31
 
50
32
  /*
51
33
  get num.
52
34
  */
53
35
  static
54
- RUBY_DEF0(get_num)
36
+ RUCY_DEF0(get_num)
55
37
  {
56
38
  Struct* obj = to<Struct*>(self);
57
39
  if (obj) return value(obj->num);
58
40
  }
59
- RUBY_END
41
+ RUCY_END
60
42
 
61
43
  /*
62
44
  set num.
63
45
  */
64
46
  static
65
- RUBY_DEF1(set_num, num)
47
+ RUCY_DEF1(set_num, num)
66
48
  {
67
49
  Struct* obj = to<Struct*>(self);
68
50
  if (obj) obj->num = to<int>(num);
69
51
  }
70
- RUBY_END
52
+ RUCY_END
71
53
 
72
54
 
73
55
  void