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