rucy 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
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