rucy 0.1.2 → 0.1.3
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/tester.cpp +222 -0
- data/ChangeLog +5 -0
- data/README +28 -1
- data/Rakefile +13 -38
- data/VERSION +1 -1
- data/bin/rucy2rdoc +113 -0
- data/ext/rucy/extconf.rb +23 -14
- data/ext/rucy/tester.cpp +153 -17
- data/include/rucy/class.h +0 -3
- data/include/rucy/defs.h +4 -0
- data/include/rucy/defs.h.erb +4 -1
- data/include/rucy/exception.h +31 -35
- data/include/rucy/function.h.erb +0 -1
- data/include/rucy/module.h +4 -2
- data/include/rucy/module.h.erb +4 -3
- data/include/rucy/rucy.h +12 -4
- data/include/rucy/value.h.erb +0 -1
- data/include/rucy.h +4 -4
- data/lib/rucy/module.rb +10 -2
- data/rucy.gemspec +23 -9
- data/src/class.cpp +0 -7
- data/src/exception.cpp +28 -52
- data/src/function.cpp +1 -0
- data/src/function.cpp.erb +1 -1
- data/src/module.cpp +8 -4
- data/src/module.cpp.erb +8 -5
- data/src/rucy.cpp +38 -17
- data/src/value.cpp.erb +0 -1
- data/task/ext.rake +74 -15
- data/test/test_rucy.rb +13 -0
- metadata +28 -20
- data/include/rucy/string.h +0 -28
- data/src/string.cpp +0 -78
- data/support.rb +0 -64
- data/task/gem.rake +0 -33
- data/task/git.rake +0 -22
- data/task/lib.rake +0 -62
data/src/exception.cpp
CHANGED
@@ -4,7 +4,6 @@
|
|
4
4
|
|
5
5
|
#include <ruby.h>
|
6
6
|
#include <rucy/rucy.h>
|
7
|
-
#include <rucy/string.h>
|
8
7
|
|
9
8
|
#ifdef WIN32
|
10
9
|
#include <windows.h>
|
@@ -19,7 +18,7 @@
|
|
19
18
|
{ \
|
20
19
|
va_list args; \
|
21
20
|
va_start(args, format); \
|
22
|
-
result = stringf(format, args); \
|
21
|
+
result = Xot::stringf(format, args); \
|
23
22
|
va_end(args); \
|
24
23
|
} \
|
25
24
|
} \
|
@@ -30,34 +29,43 @@ namespace Rucy
|
|
30
29
|
{
|
31
30
|
|
32
31
|
|
33
|
-
|
34
|
-
|
32
|
+
RubyException::RubyException (Value exception)
|
33
|
+
: Super(""), val(exception)
|
34
|
+
{
|
35
|
+
}
|
36
|
+
|
37
|
+
RubyException::RubyException (Value type, const char* format, ...)
|
38
|
+
: Super(""), val(Qnil)
|
35
39
|
{
|
36
|
-
|
37
|
-
|
38
|
-
|
40
|
+
VA_STRING(format, s);
|
41
|
+
val = rb_exc_new2(type, s.c_str());
|
42
|
+
}
|
43
|
+
|
44
|
+
const char*
|
45
|
+
RubyException::what () const throw()
|
46
|
+
{
|
47
|
+
SYM(message);
|
48
|
+
return value().call(message).c_str();
|
39
49
|
}
|
40
50
|
|
41
|
-
|
42
|
-
|
51
|
+
Value
|
52
|
+
RubyException::value () const
|
43
53
|
{
|
44
|
-
|
45
|
-
rucy_module().define_class("SystemError", native_error_class());
|
46
|
-
return c;
|
54
|
+
return val;
|
47
55
|
}
|
48
56
|
|
49
|
-
|
50
|
-
|
57
|
+
|
58
|
+
RubyJumptag::RubyJumptag (int tag)
|
59
|
+
: tag(tag)
|
51
60
|
{
|
52
|
-
static Class c =
|
53
|
-
rucy_module().define_class("InvalidObjectError", native_error_class());
|
54
|
-
return c;
|
55
61
|
}
|
56
62
|
|
57
63
|
|
58
64
|
void
|
59
|
-
|
65
|
+
raise (const char* format, ...)
|
60
66
|
{
|
67
|
+
if (!format) throw;
|
68
|
+
|
61
69
|
VA_STRING(format, message);
|
62
70
|
throw message;
|
63
71
|
}
|
@@ -90,13 +98,13 @@ namespace Rucy
|
|
90
98
|
int n1, int n2, int n3, int n4, int n5,
|
91
99
|
int n6, int n7, int n8, int n9, int n10)
|
92
100
|
{
|
93
|
-
String message = stringf(
|
101
|
+
String message = Xot::stringf(
|
94
102
|
"wrong number of arguments for %s: %d for %d",
|
95
103
|
method, nargs, nargs_expected);
|
96
104
|
|
97
105
|
int n[10] = {n1, n2, n3, n4, n5, n6, n7, n8, n9, n10};
|
98
106
|
for (int i = 0; i < 5 && n[i] >= 0; ++i)
|
99
|
-
message += stringf(" or %d", n[i]);
|
107
|
+
message += Xot::stringf(" or %d", n[i]);
|
100
108
|
|
101
109
|
message += ".";
|
102
110
|
argument_error(message.c_str());
|
@@ -146,36 +154,4 @@ namespace Rucy
|
|
146
154
|
}
|
147
155
|
|
148
156
|
|
149
|
-
RubyException::RubyException (Value exception)
|
150
|
-
: Super(""), val(exception)
|
151
|
-
{
|
152
|
-
}
|
153
|
-
|
154
|
-
RubyException::RubyException (Value type, const char* format, ...)
|
155
|
-
: Super(""), val(Qnil)
|
156
|
-
{
|
157
|
-
VA_STRING(format, message);
|
158
|
-
val = rb_exc_new2(type, message.c_str());
|
159
|
-
}
|
160
|
-
|
161
|
-
const char*
|
162
|
-
RubyException::what () const throw()
|
163
|
-
{
|
164
|
-
SYM(message);
|
165
|
-
return value().call(message).c_str();
|
166
|
-
}
|
167
|
-
|
168
|
-
Value
|
169
|
-
RubyException::value () const
|
170
|
-
{
|
171
|
-
return val;
|
172
|
-
}
|
173
|
-
|
174
|
-
|
175
|
-
RubyJumptag::RubyJumptag (int tag)
|
176
|
-
: tag(tag)
|
177
|
-
{
|
178
|
-
}
|
179
|
-
|
180
|
-
|
181
157
|
}// Rucy
|
data/src/function.cpp
CHANGED
data/src/function.cpp.erb
CHANGED
data/src/module.cpp
CHANGED
@@ -309,12 +309,16 @@ namespace Rucy
|
|
309
309
|
return rb_define_module(name);
|
310
310
|
}
|
311
311
|
|
312
|
+
Class
|
313
|
+
define_class (const char* name, Value super)
|
314
|
+
{
|
315
|
+
return rb_define_class(name, super);
|
316
|
+
}
|
312
317
|
|
313
|
-
|
314
|
-
|
318
|
+
void
|
319
|
+
define_const (const char* name, Value val)
|
315
320
|
{
|
316
|
-
|
317
|
-
return m;
|
321
|
+
rb_define_global_const(name, val);
|
318
322
|
}
|
319
323
|
|
320
324
|
|
data/src/module.cpp.erb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
// -*- c++ -*-
|
2
|
-
% require 'support'
|
3
2
|
#include "rucy/module.h"
|
4
3
|
|
5
4
|
|
@@ -91,12 +90,16 @@ namespace Rucy
|
|
91
90
|
return rb_define_module(name);
|
92
91
|
}
|
93
92
|
|
93
|
+
Class
|
94
|
+
define_class (const char* name, Value super)
|
95
|
+
{
|
96
|
+
return rb_define_class(name, super);
|
97
|
+
}
|
94
98
|
|
95
|
-
|
96
|
-
|
99
|
+
void
|
100
|
+
define_const (const char* name, Value val)
|
97
101
|
{
|
98
|
-
|
99
|
-
return m;
|
102
|
+
rb_define_global_const(name, val);
|
100
103
|
}
|
101
104
|
|
102
105
|
|
data/src/rucy.cpp
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
#include "rucy/rucy.h"
|
3
3
|
|
4
4
|
|
5
|
-
#include <rucy/module.h>
|
6
5
|
#include <rucy/exception.h>
|
7
6
|
|
8
7
|
|
@@ -19,27 +18,16 @@ namespace Rucy
|
|
19
18
|
|
20
19
|
rucy_module();
|
21
20
|
native_error_class();
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
Value
|
27
|
-
require (const char* name)
|
28
|
-
{
|
29
|
-
return rb_require(name);
|
30
|
-
}
|
21
|
+
system_error_class();
|
22
|
+
invalid_object_error_class();
|
31
23
|
|
32
|
-
|
33
|
-
define_const (const char* name, Value val)
|
34
|
-
{
|
35
|
-
rb_define_global_const(name, val);
|
24
|
+
return true;
|
36
25
|
}
|
37
26
|
|
38
|
-
|
39
27
|
bool
|
40
|
-
check_class (Value obj, Value
|
28
|
+
check_class (Value obj, Value klass)
|
41
29
|
{
|
42
|
-
return
|
30
|
+
return klass && obj.is_kind_of(klass);
|
43
31
|
|
44
32
|
#if 0
|
45
33
|
SYMBOL(klass, "class");
|
@@ -53,4 +41,37 @@ namespace Rucy
|
|
53
41
|
}
|
54
42
|
|
55
43
|
|
44
|
+
Module
|
45
|
+
rucy_module ()
|
46
|
+
{
|
47
|
+
static Module m = define_module("Rucy");
|
48
|
+
return m;
|
49
|
+
}
|
50
|
+
|
51
|
+
|
52
|
+
Class
|
53
|
+
native_error_class ()
|
54
|
+
{
|
55
|
+
static Class c =
|
56
|
+
rucy_module().define_class("NativeError", rb_eRuntimeError);
|
57
|
+
return c;
|
58
|
+
}
|
59
|
+
|
60
|
+
Class
|
61
|
+
system_error_class ()
|
62
|
+
{
|
63
|
+
static Class c =
|
64
|
+
rucy_module().define_class("SystemError", native_error_class());
|
65
|
+
return c;
|
66
|
+
}
|
67
|
+
|
68
|
+
Class
|
69
|
+
invalid_object_error_class ()
|
70
|
+
{
|
71
|
+
static Class c =
|
72
|
+
rucy_module().define_class("InvalidObjectError", native_error_class());
|
73
|
+
return c;
|
74
|
+
}
|
75
|
+
|
76
|
+
|
56
77
|
}// Rucy
|
data/src/value.cpp.erb
CHANGED
data/task/ext.rake
CHANGED
@@ -1,37 +1,96 @@
|
|
1
1
|
# -*- mode: ruby; coding: utf-8 -*-
|
2
2
|
|
3
3
|
|
4
|
+
require 'rbconfig'
|
5
|
+
require 'rucy/module'
|
6
|
+
|
7
|
+
|
4
8
|
namespace :ext do
|
5
9
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
+
|
11
|
+
rbconf = RbConfig::CONFIG
|
12
|
+
|
13
|
+
mod = MODULE
|
14
|
+
name = env :NAME, MODULE.name.downcase
|
15
|
+
extdir = env :EXTDIR, 'ext'
|
16
|
+
docdir = env :DOCDIR, 'doc'
|
17
|
+
dlext = env :DLEXT, rbconf['DLEXT'] || 'so'
|
18
|
+
ruby = env :RUBY, 'ruby'
|
19
|
+
make = env :MAKE, 'make'
|
20
|
+
cc = env :CC, rbconf['CC'] || 'g++'
|
21
|
+
rdoc = env :RDOC, 'rdoc'# 'yardoc'
|
22
|
+
rucy2rdoc = env :RUCY2RDOC, 'rucy2rdoc'
|
23
|
+
defs = env :DEFS, []
|
24
|
+
incdirs = env(:INCDIRS) ? env(:INCDIRS) : []
|
25
|
+
cflags = env(:CFLAGS, '-Wall -O -g').dup
|
26
|
+
|
27
|
+
dir = "#{extdir}/#{name}"
|
28
|
+
modname = "#{name}/native"
|
29
|
+
outname = "#{name}.#{dlext}"
|
30
|
+
out = File.join extdir, outname
|
31
|
+
|
32
|
+
srcs = FileList["#{dir}/**/*.cpp"]
|
33
|
+
|
34
|
+
incroot = rbconf['rubyhdrdir']
|
35
|
+
incdirs.concat mod.include_dirs + Rucy.include_dirs + [
|
36
|
+
incroot,
|
37
|
+
"#{incroot}/#{RUBY_PLATFORM}",
|
38
|
+
'/opt/local/include',
|
39
|
+
'/opt/include'
|
40
|
+
]
|
41
|
+
incdirs.uniq!
|
42
|
+
|
43
|
+
defs << 'WIN32' if win32?
|
44
|
+
defs << 'COCOA' if cocoa?
|
45
|
+
cflags << defs.map{|s| " -D#{s}"}.join
|
46
|
+
cflags << incdirs.map{|s| " -I#{s}"}.join
|
10
47
|
|
11
48
|
extconf = File.join dir, "extconf.rb"
|
12
49
|
makefile = File.join dir, "Makefile"
|
13
50
|
depend = File.join dir, "depend"
|
14
51
|
|
15
|
-
|
52
|
+
rdocdir = ".doc/#{dir}"
|
53
|
+
rdocs = Hash[srcs.map{|path| [path, "#{rdocdir}/#{File.basename path}"]}]
|
54
|
+
docindex = "#{docdir}/index.html"
|
16
55
|
|
17
|
-
|
18
|
-
|
19
|
-
|
56
|
+
|
57
|
+
task :build => out
|
58
|
+
|
59
|
+
task :rdoc => rdocs.values
|
60
|
+
|
61
|
+
task :doc => docindex
|
20
62
|
|
21
63
|
task :clean do
|
22
|
-
sh %( cd #{dir} && #{
|
23
|
-
sh %( rm -
|
64
|
+
sh %( cd #{dir} && #{make} clean ) if File.exist? makefile
|
65
|
+
sh %( rm -rf #{makefile} #{depend} #{docdir} #{rdocs.values.join ' '} )
|
66
|
+
end
|
67
|
+
|
68
|
+
file out => makefile do
|
69
|
+
sh %( cd #{dir} && #{make} )
|
24
70
|
end
|
25
71
|
|
26
72
|
file makefile => [extconf, depend] do
|
27
|
-
sh %( cd #{dir} && #{
|
73
|
+
sh %( cd #{dir} && #{ruby} #{File.basename extconf} )
|
28
74
|
end
|
29
75
|
|
30
|
-
file depend => ["lib:build"] +
|
31
|
-
|
32
|
-
|
76
|
+
file depend => ["lib:build"] + srcs do
|
77
|
+
inc = incdirs.map{|s| " -I#{s}"}.join
|
78
|
+
src = srcs.map{|cpp| File.basename cpp}.join ' '
|
33
79
|
dep = File.basename depend
|
34
|
-
sh %( cd #{dir} && #{
|
80
|
+
sh %( cd #{dir} && #{cc} -M #{cflags} #{inc} #{src} > #{dep} )
|
81
|
+
end
|
82
|
+
|
83
|
+
file docindex => "ext:rdoc" do
|
84
|
+
sh %( #{rdoc} #{rdocs.values.join ' '} )
|
85
|
+
end
|
86
|
+
|
87
|
+
rdocs.each do |(cpp, rdoc)|
|
88
|
+
file rdoc => [cpp, rdocdir] do
|
89
|
+
sh %( #{rucy2rdoc} #{cpp} > #{rdoc} )
|
90
|
+
end
|
35
91
|
end
|
36
92
|
|
93
|
+
directory rdocdir
|
94
|
+
|
95
|
+
|
37
96
|
end# :ext
|
data/test/test_rucy.rb
CHANGED
@@ -17,6 +17,15 @@ class TestTester < Test::Unit::TestCase
|
|
17
17
|
assert_equal nil, @t.do_nothing
|
18
18
|
end
|
19
19
|
|
20
|
+
def test_set_get ()
|
21
|
+
@t.value = 100
|
22
|
+
assert_equal 100, @t.value
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_no_return_returns_nil ()
|
26
|
+
assert_equal nil, @t.do_nothing
|
27
|
+
end
|
28
|
+
|
20
29
|
def test_returns_nil ()
|
21
30
|
assert_equal nil, @t.return_nil
|
22
31
|
end
|
@@ -49,6 +58,10 @@ class TestTester < Test::Unit::TestCase
|
|
49
58
|
assert_raise(Rucy::NativeError) {@t.throw_std_runtime_error}
|
50
59
|
end
|
51
60
|
|
61
|
+
def test_throw_custom_exception ()
|
62
|
+
assert_raise(Rucy::NativeError) {@t.throw_custom_exception}
|
63
|
+
end
|
64
|
+
|
52
65
|
def test_throw_std_string ()
|
53
66
|
assert_raise(Rucy::NativeError) {@t.throw_std_string}
|
54
67
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rucy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- snori
|
@@ -10,10 +10,10 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-09-19 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: xot
|
17
17
|
prerelease: false
|
18
18
|
requirement: &id001 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: "0"
|
24
|
-
type: :
|
24
|
+
type: :runtime
|
25
25
|
version_requirements: *id001
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
|
-
name:
|
27
|
+
name: rake
|
28
28
|
prerelease: false
|
29
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
@@ -34,27 +34,39 @@ dependencies:
|
|
34
34
|
version: "0"
|
35
35
|
type: :development
|
36
36
|
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: gemcutter
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: "0"
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id003
|
37
48
|
description: This library helps you to develop Ruby Extension by C++.
|
38
49
|
email: snori@xord.org
|
39
|
-
executables:
|
40
|
-
|
50
|
+
executables:
|
51
|
+
- rucy2rdoc
|
41
52
|
extensions:
|
42
53
|
- Rakefile
|
43
54
|
extra_rdoc_files:
|
44
55
|
- README
|
56
|
+
- .doc/ext/rucy/tester.cpp
|
45
57
|
files:
|
46
58
|
- README
|
47
59
|
- ChangeLog
|
48
60
|
- Rakefile
|
49
|
-
- support.rb
|
50
61
|
- rucy.gemspec
|
51
62
|
- VERSION
|
52
63
|
- task/ext.rake
|
53
|
-
- task/gem.rake
|
54
|
-
- task/git.rake
|
55
|
-
- task/lib.rake
|
56
64
|
- ext/rucy/extconf.rb
|
57
65
|
- ext/rucy/tester.cpp
|
66
|
+
- include/rucy/defs.h.erb
|
67
|
+
- include/rucy/function.h.erb
|
68
|
+
- include/rucy/module.h.erb
|
69
|
+
- include/rucy/value.h.erb
|
58
70
|
- include/rucy/class.h
|
59
71
|
- include/rucy/defs.h
|
60
72
|
- include/rucy/exception.h
|
@@ -62,29 +74,25 @@ files:
|
|
62
74
|
- include/rucy/gc.h
|
63
75
|
- include/rucy/module.h
|
64
76
|
- include/rucy/rucy.h
|
65
|
-
- include/rucy/string.h
|
66
77
|
- include/rucy/symbol.h
|
67
78
|
- include/rucy/value.h
|
68
79
|
- include/rucy.h
|
69
|
-
- include/rucy/defs.h.erb
|
70
|
-
- include/rucy/function.h.erb
|
71
|
-
- include/rucy/module.h.erb
|
72
|
-
- include/rucy/value.h.erb
|
73
80
|
- lib/rucy/module.rb
|
74
81
|
- lib/rucy.rb
|
82
|
+
- src/function.cpp.erb
|
83
|
+
- src/module.cpp.erb
|
84
|
+
- src/value.cpp.erb
|
75
85
|
- src/class.cpp
|
76
86
|
- src/exception.cpp
|
77
87
|
- src/function.cpp
|
78
88
|
- src/gc.cpp
|
79
89
|
- src/module.cpp
|
80
90
|
- src/rucy.cpp
|
81
|
-
- src/string.cpp
|
82
91
|
- src/symbol.cpp
|
83
92
|
- src/value.cpp
|
84
|
-
- src/function.cpp.erb
|
85
|
-
- src/module.cpp.erb
|
86
|
-
- src/value.cpp.erb
|
87
93
|
- test/test_rucy.rb
|
94
|
+
- .doc/ext/rucy/tester.cpp
|
95
|
+
- bin/rucy2rdoc
|
88
96
|
homepage: http://github.com/xord/rucy
|
89
97
|
licenses: []
|
90
98
|
|
data/include/rucy/string.h
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
// -*- c++ -*-
|
2
|
-
#pragma once
|
3
|
-
#ifndef __RUCY_STRING_H__
|
4
|
-
#define __RUCY_STRING_H__
|
5
|
-
|
6
|
-
|
7
|
-
#include <stdarg.h>
|
8
|
-
#include <string>
|
9
|
-
|
10
|
-
|
11
|
-
namespace Rucy
|
12
|
-
{
|
13
|
-
|
14
|
-
|
15
|
-
typedef std::string String;
|
16
|
-
|
17
|
-
|
18
|
-
String stringf (const char* format, ...);
|
19
|
-
|
20
|
-
String stringf (const char* format, va_list args);
|
21
|
-
|
22
|
-
template <typename T> String to_s (const T& val);
|
23
|
-
|
24
|
-
|
25
|
-
}// Rucy
|
26
|
-
|
27
|
-
|
28
|
-
#endif//EOH
|
data/src/string.cpp
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
// -*- c++ -*-
|
2
|
-
#include "rucy/string.h"
|
3
|
-
|
4
|
-
|
5
|
-
#include <stdio.h>
|
6
|
-
#include <stdarg.h>
|
7
|
-
#include <boost/scoped_array.hpp>
|
8
|
-
|
9
|
-
|
10
|
-
namespace Rucy
|
11
|
-
{
|
12
|
-
|
13
|
-
|
14
|
-
String
|
15
|
-
stringf (const char* format, ...)
|
16
|
-
{
|
17
|
-
va_list args;
|
18
|
-
va_start(args, format);
|
19
|
-
String ret = stringf(format, args);
|
20
|
-
va_end(args);
|
21
|
-
return ret;
|
22
|
-
}
|
23
|
-
|
24
|
-
String
|
25
|
-
stringf (const char* format, va_list args)
|
26
|
-
{
|
27
|
-
enum {BUFSIZE = 256};
|
28
|
-
char stack[BUFSIZE];
|
29
|
-
if (vsnprintf(&stack[0], BUFSIZE, format, args) <= BUFSIZE)
|
30
|
-
return &stack[0];
|
31
|
-
|
32
|
-
int bufsize = BUFSIZE;// vscprintf(format, args);
|
33
|
-
boost::scoped_array<char> heap;
|
34
|
-
while (true)
|
35
|
-
{
|
36
|
-
bufsize *= 2;
|
37
|
-
heap.reset(new char[bufsize]);
|
38
|
-
if (vsnprintf(&heap[0], bufsize, format, args) <= bufsize)
|
39
|
-
return &heap[0];
|
40
|
-
}
|
41
|
-
|
42
|
-
return NULL;
|
43
|
-
}
|
44
|
-
|
45
|
-
template <> String
|
46
|
-
to_s<int> (const int& val)
|
47
|
-
{
|
48
|
-
return stringf("%d", val);
|
49
|
-
}
|
50
|
-
|
51
|
-
template <> String
|
52
|
-
to_s<float> (const float& val)
|
53
|
-
{
|
54
|
-
return stringf("%f", val);
|
55
|
-
}
|
56
|
-
|
57
|
-
template <> String
|
58
|
-
to_s<double> (const double& val)
|
59
|
-
{
|
60
|
-
return stringf("%f", val);
|
61
|
-
}
|
62
|
-
|
63
|
-
typedef const char* const_char_p;
|
64
|
-
|
65
|
-
template <> String
|
66
|
-
to_s<const_char_p> (const const_char_p& val)
|
67
|
-
{
|
68
|
-
return val;
|
69
|
-
}
|
70
|
-
|
71
|
-
template <> String
|
72
|
-
to_s<String> (const String& val)
|
73
|
-
{
|
74
|
-
return val;
|
75
|
-
}
|
76
|
-
|
77
|
-
|
78
|
-
}// Rucy
|
data/support.rb
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
|
4
|
-
require 'erb'
|
5
|
-
require 'pp'
|
6
|
-
|
7
|
-
|
8
|
-
NPARAM_MAX = 8
|
9
|
-
NTIMES = (0..NPARAM_MAX)
|
10
|
-
|
11
|
-
|
12
|
-
def glob (*patterns)
|
13
|
-
paths = []
|
14
|
-
patterns.each do |pattern|
|
15
|
-
paths.concat Dir.glob(pattern)
|
16
|
-
end
|
17
|
-
paths
|
18
|
-
end
|
19
|
-
|
20
|
-
def erb (str)
|
21
|
-
ERB.new(str, nil, "%").result binding
|
22
|
-
end
|
23
|
-
|
24
|
-
def compile (path, out)
|
25
|
-
open(path) do |input|
|
26
|
-
open(out, "w") do |output|
|
27
|
-
output.write erb(input.read)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
#rescue
|
31
|
-
end
|
32
|
-
|
33
|
-
def params (n, sep = "", &block)
|
34
|
-
raise "block not given." unless block
|
35
|
-
return "" if n == 0
|
36
|
-
(1..n).map(&block).join(sep)
|
37
|
-
end
|
38
|
-
|
39
|
-
def convertions (paths, convs)
|
40
|
-
raise "empty conversion." if convs.empty?
|
41
|
-
paths = paths.map do |path|
|
42
|
-
convpath = path
|
43
|
-
convs.each do |from, to|
|
44
|
-
convpath = convpath.sub(/#{from.gsub('.', '\.')}$/, to)
|
45
|
-
end
|
46
|
-
[path, convpath]
|
47
|
-
end
|
48
|
-
Hash[*paths.flatten]
|
49
|
-
end
|
50
|
-
|
51
|
-
alias sh_original sh
|
52
|
-
|
53
|
-
def sh (*args)
|
54
|
-
sh_original *args
|
55
|
-
#rescue
|
56
|
-
end
|
57
|
-
|
58
|
-
def win32? ()
|
59
|
-
RUBY_PLATFORM =~ /mswin|ming|cygwin/
|
60
|
-
end
|
61
|
-
|
62
|
-
def cocoa? ()
|
63
|
-
RUBY_PLATFORM =~ /darwin/
|
64
|
-
end
|