reflexion 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/reflex/application.cpp +150 -0
- data/.doc/ext/reflex/key.cpp +127 -0
- data/.doc/ext/reflex/native.cpp +26 -0
- data/.doc/ext/reflex/points.cpp +156 -0
- data/.doc/ext/reflex/reflex.cpp +72 -0
- data/.doc/ext/reflex/window.cpp +343 -0
- data/Rakefile +11 -34
- data/VERSION +1 -1
- data/ext/reflex/application.cpp +15 -10
- data/ext/reflex/{reflex.h → defs.h} +4 -13
- data/ext/reflex/extconf.rb +29 -17
- data/ext/reflex/key.cpp +15 -10
- data/ext/reflex/native.cpp +5 -1
- data/ext/reflex/points.cpp +18 -13
- data/ext/reflex/reflex.cpp +10 -17
- data/ext/reflex/window.cpp +28 -23
- data/include/reflex/application.h +3 -0
- data/include/reflex/defs.h +60 -37
- data/include/reflex/exception.h +41 -0
- data/include/reflex.h +1 -0
- data/lib/reflex/module.rb +9 -1
- data/reflex.gemspec +21 -8
- data/src/cocoa/application.mm +17 -0
- data/src/cocoa/reflex.mm +6 -23
- data/src/defs.cpp +2 -2
- data/src/exception.cpp +49 -0
- data/src/reflex.cpp +37 -0
- data/src/win32/application.cpp +111 -0
- data/src/win32/defs.cpp +287 -134
- data/src/win32/defs.h +34 -0
- data/src/win32/reflex.cpp +9 -30
- data/src/win32/window.cpp +6 -32
- metadata +37 -14
- data/support.rb +0 -52
- data/task/ext.rake +0 -42
- data/task/gem.rake +0 -33
- data/task/git.rake +0 -22
- data/task/lib.rake +0 -54
@@ -0,0 +1,150 @@
|
|
1
|
+
#include "reflex/ruby/application.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include <rucy.h>
|
5
|
+
#include "defs.h"
|
6
|
+
|
7
|
+
|
8
|
+
using namespace Rucy;
|
9
|
+
|
10
|
+
|
11
|
+
namespace Reflex
|
12
|
+
{
|
13
|
+
|
14
|
+
|
15
|
+
static Class cApplication;
|
16
|
+
|
17
|
+
Class
|
18
|
+
application_class ()
|
19
|
+
{
|
20
|
+
return cApplication;
|
21
|
+
}
|
22
|
+
|
23
|
+
|
24
|
+
}// Reflex
|
25
|
+
|
26
|
+
|
27
|
+
namespace Rucy
|
28
|
+
{
|
29
|
+
|
30
|
+
|
31
|
+
Value
|
32
|
+
value (const Reflex::Application& application)
|
33
|
+
{
|
34
|
+
return new_type<Reflex::Application>(
|
35
|
+
Reflex::application_class(), new Reflex::Application(application));
|
36
|
+
}
|
37
|
+
|
38
|
+
|
39
|
+
}// Rucy
|
40
|
+
|
41
|
+
|
42
|
+
class RubyApplication : public Reflex::Application
|
43
|
+
{
|
44
|
+
|
45
|
+
public:
|
46
|
+
|
47
|
+
typedef Reflex::Application Super;
|
48
|
+
|
49
|
+
Value self;
|
50
|
+
|
51
|
+
void mark ()
|
52
|
+
{
|
53
|
+
self.mark();
|
54
|
+
}
|
55
|
+
|
56
|
+
virtual bool run ()
|
57
|
+
{
|
58
|
+
SYM(run);
|
59
|
+
return self.call(run);
|
60
|
+
}
|
61
|
+
|
62
|
+
virtual bool quit ()
|
63
|
+
{
|
64
|
+
SYM(quit);
|
65
|
+
return self.call(quit);
|
66
|
+
}
|
67
|
+
|
68
|
+
virtual bool about ()
|
69
|
+
{
|
70
|
+
SYM(about);
|
71
|
+
return self.call(about);
|
72
|
+
}
|
73
|
+
|
74
|
+
};// RubyApplication
|
75
|
+
|
76
|
+
|
77
|
+
#define this ((RubyApplication*) to<Reflex::Application*>(self))
|
78
|
+
|
79
|
+
#define CHECK CHECK_OBJECT(self, RubyApplication, Reflex::application_class())
|
80
|
+
|
81
|
+
|
82
|
+
static
|
83
|
+
VALUE alloc(VALUE klass)
|
84
|
+
{
|
85
|
+
RubyApplication* app = new RubyApplication;
|
86
|
+
return app->self = new_type<RubyApplication>(klass, app, mark_type<RubyApplication>);
|
87
|
+
}
|
88
|
+
|
89
|
+
static
|
90
|
+
VALUE run(VALUE self)
|
91
|
+
{
|
92
|
+
CHECK;
|
93
|
+
if (!this->Super::run())
|
94
|
+
system_error("failed to run application.");
|
95
|
+
return self;
|
96
|
+
}
|
97
|
+
|
98
|
+
static
|
99
|
+
VALUE quit(VALUE self)
|
100
|
+
{
|
101
|
+
CHECK;
|
102
|
+
if (!this->Super::quit())
|
103
|
+
system_error("failed to quit application.");
|
104
|
+
return self;
|
105
|
+
}
|
106
|
+
|
107
|
+
static
|
108
|
+
VALUE about(VALUE self)
|
109
|
+
{
|
110
|
+
CHECK;
|
111
|
+
if (!this->Super::about())
|
112
|
+
system_error("failed to show about application.");
|
113
|
+
return self;
|
114
|
+
}
|
115
|
+
|
116
|
+
static
|
117
|
+
VALUE get_name(VALUE self)
|
118
|
+
{
|
119
|
+
CHECK;
|
120
|
+
String s;
|
121
|
+
if (!this->get_name(&s))
|
122
|
+
system_error("failed to get name of application.");
|
123
|
+
return Value(s.c_str());
|
124
|
+
}
|
125
|
+
|
126
|
+
static
|
127
|
+
VALUE set_name(VALUE self, VALUE name)
|
128
|
+
{
|
129
|
+
CHECK;
|
130
|
+
if (!this->set_name(name.c_str()))
|
131
|
+
system_error("failed to set name of application.");
|
132
|
+
return name;
|
133
|
+
}
|
134
|
+
|
135
|
+
|
136
|
+
void
|
137
|
+
Init_application ()
|
138
|
+
{
|
139
|
+
Module m = rb_define_module("Reflex");
|
140
|
+
|
141
|
+
Class c = rb_define_class_under(m, "Application", rb_cObject);
|
142
|
+
Reflex::cApplication = c;
|
143
|
+
|
144
|
+
rb_define_alloc_func(c, alloc);
|
145
|
+
rb_define_method(c, "run", RUBY_METHOD_FUNC(run), 0);
|
146
|
+
rb_define_method(c, "quit", RUBY_METHOD_FUNC(quit), 0);
|
147
|
+
rb_define_method(c, "about", RUBY_METHOD_FUNC(about), 0);
|
148
|
+
rb_define_method(c, "name", RUBY_METHOD_FUNC(get_name), 0);
|
149
|
+
rb_define_method(c, "name=", RUBY_METHOD_FUNC(set_name), 1);
|
150
|
+
}
|
@@ -0,0 +1,127 @@
|
|
1
|
+
#include "reflex/ruby/key.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include <rucy.h>
|
5
|
+
#include "defs.h"
|
6
|
+
|
7
|
+
|
8
|
+
using namespace Rucy;
|
9
|
+
|
10
|
+
|
11
|
+
namespace Reflex
|
12
|
+
{
|
13
|
+
|
14
|
+
|
15
|
+
static Class cKey;
|
16
|
+
|
17
|
+
Class
|
18
|
+
key_class ()
|
19
|
+
{
|
20
|
+
return cKey;
|
21
|
+
}
|
22
|
+
|
23
|
+
|
24
|
+
}// Reflex
|
25
|
+
|
26
|
+
|
27
|
+
namespace Rucy
|
28
|
+
{
|
29
|
+
|
30
|
+
|
31
|
+
Value
|
32
|
+
value (const Reflex::Key& key)
|
33
|
+
{
|
34
|
+
return new_type<Reflex::Key>(
|
35
|
+
Reflex::key_class(), new Reflex::Key(key));
|
36
|
+
}
|
37
|
+
|
38
|
+
|
39
|
+
}// Rucy
|
40
|
+
|
41
|
+
|
42
|
+
struct RubyKey : public Reflex::Key
|
43
|
+
{
|
44
|
+
|
45
|
+
operator bool () const
|
46
|
+
{
|
47
|
+
return true;
|
48
|
+
}
|
49
|
+
|
50
|
+
bool operator ! () const
|
51
|
+
{
|
52
|
+
return !operator bool();
|
53
|
+
}
|
54
|
+
|
55
|
+
};// RubyKey
|
56
|
+
|
57
|
+
|
58
|
+
#define this ((RubyKey*) to<Reflex::Key*>(self))
|
59
|
+
|
60
|
+
#define CHECK CHECK_OBJECT(self, RubyKey, Reflex::key_class())
|
61
|
+
|
62
|
+
|
63
|
+
static
|
64
|
+
VALUE alloc(VALUE klass)
|
65
|
+
{
|
66
|
+
return new_type<RubyKey>(klass, new RubyKey);
|
67
|
+
}
|
68
|
+
|
69
|
+
static
|
70
|
+
VALUE initialize(VALUE self)
|
71
|
+
{
|
72
|
+
CHECK_OBJ(self, RubyKey, Reflex::key_class());
|
73
|
+
if (argc < 0 || 4 < argc)
|
74
|
+
argument_error("Key#initialize", argc, 0, 1, 2);
|
75
|
+
|
76
|
+
this->chars = (argc >= 1) ? argv[0].c_str() : NULL;
|
77
|
+
this->code = (argc >= 2) ? to<int>(argv[1]) : Reflex::KEY_NONE;
|
78
|
+
this->repeat = (argc >= 3) ? to<int>(argv[2]) : 1;
|
79
|
+
this->modifiers = (argc >= 4) ? to<uint>(argv[3]) : (uint) Reflex::MOD_NONE;
|
80
|
+
|
81
|
+
return self;
|
82
|
+
}
|
83
|
+
|
84
|
+
static
|
85
|
+
VALUE chars(VALUE self)
|
86
|
+
{
|
87
|
+
CHECK;
|
88
|
+
return value(this->chars.c_str());
|
89
|
+
}
|
90
|
+
|
91
|
+
static
|
92
|
+
VALUE code(VALUE self)
|
93
|
+
{
|
94
|
+
CHECK;
|
95
|
+
return value(this->code);
|
96
|
+
}
|
97
|
+
|
98
|
+
static
|
99
|
+
VALUE repeat(VALUE self)
|
100
|
+
{
|
101
|
+
CHECK;
|
102
|
+
return value(this->repeat);
|
103
|
+
}
|
104
|
+
|
105
|
+
static
|
106
|
+
VALUE modifiers(VALUE self)
|
107
|
+
{
|
108
|
+
CHECK;
|
109
|
+
return value(this->modifiers);
|
110
|
+
}
|
111
|
+
|
112
|
+
|
113
|
+
void
|
114
|
+
Init_key ()
|
115
|
+
{
|
116
|
+
Module m = rb_define_module("Reflex");
|
117
|
+
|
118
|
+
Class c = rb_define_class_under(m, "Key", rb_cObject);
|
119
|
+
Reflex::cKey = c;
|
120
|
+
|
121
|
+
rb_define_alloc_func(c, alloc);
|
122
|
+
rb_define_method(c, "initialize", RUBY_METHOD_FUNC(initialize), -1);
|
123
|
+
rb_define_method(c, "chars", RUBY_METHOD_FUNC(chars), 0);
|
124
|
+
rb_define_method(c, "code", RUBY_METHOD_FUNC(code), 0);
|
125
|
+
rb_define_method(c, "repeat", RUBY_METHOD_FUNC(repeat), 0);
|
126
|
+
rb_define_method(c, "modifiers", RUBY_METHOD_FUNC(modifiers), 0);
|
127
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#include <rucy.h>
|
2
|
+
#include "defs.h"
|
3
|
+
|
4
|
+
|
5
|
+
using namespace Rucy;
|
6
|
+
|
7
|
+
|
8
|
+
void Init_reflex ();
|
9
|
+
void Init_application ();
|
10
|
+
void Init_window ();
|
11
|
+
void Init_key ();
|
12
|
+
void Init_points ();
|
13
|
+
|
14
|
+
|
15
|
+
extern "C" void
|
16
|
+
Init_native ()
|
17
|
+
{
|
18
|
+
if (!Rucy::init())
|
19
|
+
raise(rb_eLoadError, "Rucy::init() failed.");
|
20
|
+
|
21
|
+
Init_reflex();
|
22
|
+
Init_application();
|
23
|
+
Init_window();
|
24
|
+
Init_key();
|
25
|
+
Init_points();
|
26
|
+
}
|
@@ -0,0 +1,156 @@
|
|
1
|
+
#include "reflex/ruby/points.h"
|
2
|
+
|
3
|
+
|
4
|
+
#include <rucy.h>
|
5
|
+
#include "defs.h"
|
6
|
+
|
7
|
+
|
8
|
+
using namespace Rucy;
|
9
|
+
|
10
|
+
using Reflex::coord;
|
11
|
+
|
12
|
+
|
13
|
+
namespace Reflex
|
14
|
+
{
|
15
|
+
|
16
|
+
|
17
|
+
static Class cPoints;
|
18
|
+
|
19
|
+
Class
|
20
|
+
points_class ()
|
21
|
+
{
|
22
|
+
return cPoints;
|
23
|
+
}
|
24
|
+
|
25
|
+
|
26
|
+
}// Reflex
|
27
|
+
|
28
|
+
|
29
|
+
namespace Rucy
|
30
|
+
{
|
31
|
+
|
32
|
+
|
33
|
+
Value
|
34
|
+
value (const Reflex::Points& points)
|
35
|
+
{
|
36
|
+
return new_type<Reflex::Points>(
|
37
|
+
Reflex::points_class(), new Reflex::Points(points));
|
38
|
+
}
|
39
|
+
|
40
|
+
|
41
|
+
}// Rucy
|
42
|
+
|
43
|
+
|
44
|
+
struct RubyPoints : public Reflex::Points
|
45
|
+
{
|
46
|
+
|
47
|
+
operator bool () const
|
48
|
+
{
|
49
|
+
return true;
|
50
|
+
}
|
51
|
+
|
52
|
+
bool operator ! () const
|
53
|
+
{
|
54
|
+
return !operator bool();
|
55
|
+
}
|
56
|
+
|
57
|
+
};// RubyPoints
|
58
|
+
|
59
|
+
|
60
|
+
#define this ((RubyPoints*) to<Reflex::Points*>(self))
|
61
|
+
|
62
|
+
#define CHECK CHECK_OBJECT(self, RubyPoints, Reflex::points_class())
|
63
|
+
|
64
|
+
|
65
|
+
static
|
66
|
+
VALUE alloc(VALUE klass)
|
67
|
+
{
|
68
|
+
return new_type<RubyPoints>(klass, new RubyPoints);
|
69
|
+
}
|
70
|
+
|
71
|
+
static
|
72
|
+
VALUE initialize(VALUE self)
|
73
|
+
{
|
74
|
+
CHECK_OBJ(self, RubyPoints, Reflex::points_class());
|
75
|
+
if (argc < 0 || 6 < argc)
|
76
|
+
arg_count_error("Points#initialize", argc, 0, 1, 2, 3, 4, 5, 6);
|
77
|
+
|
78
|
+
this->type = (argc >= 1) ? to<int>(argv[0]) : Reflex::POINT_NONE;
|
79
|
+
this->x = (argc >= 2) ? to<coord>(argv[1]) : 0;
|
80
|
+
this->y = (argc >= 3) ? to<coord>(argv[2]) : 0;
|
81
|
+
this->size = 1;
|
82
|
+
this->modifiers = (argc >= 4) ? to<uint>(argv[3]) : (uint) Reflex::MOD_NONE;
|
83
|
+
this->count = (argc >= 5) ? to<uint>(argv[4]) : 0;
|
84
|
+
this->drag = (argc >= 6) ? to<bool>(argv[5]) : false;
|
85
|
+
|
86
|
+
return self;
|
87
|
+
}
|
88
|
+
|
89
|
+
static
|
90
|
+
VALUE type(VALUE self)
|
91
|
+
{
|
92
|
+
CHECK;
|
93
|
+
return value(this->type);
|
94
|
+
}
|
95
|
+
|
96
|
+
static
|
97
|
+
VALUE x(VALUE self)
|
98
|
+
{
|
99
|
+
CHECK;
|
100
|
+
return value(this->x);
|
101
|
+
}
|
102
|
+
|
103
|
+
static
|
104
|
+
VALUE y(VALUE self)
|
105
|
+
{
|
106
|
+
CHECK;
|
107
|
+
return value(this->y);
|
108
|
+
}
|
109
|
+
|
110
|
+
static
|
111
|
+
VALUE size(VALUE self)
|
112
|
+
{
|
113
|
+
CHECK;
|
114
|
+
return value(this->size);
|
115
|
+
}
|
116
|
+
|
117
|
+
static
|
118
|
+
VALUE modifiers(VALUE self)
|
119
|
+
{
|
120
|
+
CHECK;
|
121
|
+
return value(this->modifiers);
|
122
|
+
}
|
123
|
+
|
124
|
+
static
|
125
|
+
VALUE count(VALUE self)
|
126
|
+
{
|
127
|
+
CHECK;
|
128
|
+
return value(this->count);
|
129
|
+
}
|
130
|
+
|
131
|
+
static
|
132
|
+
VALUE drag(VALUE self)
|
133
|
+
{
|
134
|
+
CHECK;
|
135
|
+
return value(this->drag);
|
136
|
+
}
|
137
|
+
|
138
|
+
|
139
|
+
void
|
140
|
+
Init_points ()
|
141
|
+
{
|
142
|
+
Module m = rb_define_module("Reflex");
|
143
|
+
|
144
|
+
Class c = rb_define_class_under(m, "Points", rb_cObject);
|
145
|
+
Reflex::cPoints = c;
|
146
|
+
|
147
|
+
rb_define_alloc_func(c, alloc);
|
148
|
+
rb_define_method(c, "initialize", RUBY_METHOD_FUNC(initialize), -1);
|
149
|
+
rb_define_method(c, "type", RUBY_METHOD_FUNC(type), 0);
|
150
|
+
rb_define_method(c, "x", RUBY_METHOD_FUNC(x), 0);
|
151
|
+
rb_define_method(c, "y", RUBY_METHOD_FUNC(y), 0);
|
152
|
+
rb_define_method(c, "size", RUBY_METHOD_FUNC(size), 0);
|
153
|
+
rb_define_method(c, "modifiers", RUBY_METHOD_FUNC(modifiers), 0);
|
154
|
+
rb_define_method(c, "count", RUBY_METHOD_FUNC(count), 0);
|
155
|
+
rb_define_method(c, "drag", RUBY_METHOD_FUNC(drag), 0);
|
156
|
+
}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
#include <rucy.h>
|
2
|
+
#include <reflex/reflex.h>
|
3
|
+
#include "defs.h"
|
4
|
+
|
5
|
+
|
6
|
+
using namespace Rucy;
|
7
|
+
|
8
|
+
|
9
|
+
namespace Reflex
|
10
|
+
{
|
11
|
+
|
12
|
+
|
13
|
+
static Module mReflex;
|
14
|
+
|
15
|
+
Module
|
16
|
+
reflex_module ()
|
17
|
+
{
|
18
|
+
return mReflex;
|
19
|
+
}
|
20
|
+
|
21
|
+
|
22
|
+
}// Reflex
|
23
|
+
|
24
|
+
|
25
|
+
static
|
26
|
+
VALUE init(VALUE self)
|
27
|
+
{
|
28
|
+
if (!Reflex::init())
|
29
|
+
error("Reflex::init() failed.");
|
30
|
+
|
31
|
+
return self;
|
32
|
+
}
|
33
|
+
|
34
|
+
static
|
35
|
+
VALUE fin(VALUE self)
|
36
|
+
{
|
37
|
+
if (!Reflex::fin())
|
38
|
+
error("Reflex::fin() failed.");
|
39
|
+
|
40
|
+
return self;
|
41
|
+
}
|
42
|
+
|
43
|
+
static
|
44
|
+
VALUE run(VALUE self, VALUE name)
|
45
|
+
{
|
46
|
+
if (!Reflex::run(name ? name.c_str() : NULL))
|
47
|
+
error("Reflex::run() failed.");
|
48
|
+
|
49
|
+
return self;
|
50
|
+
}
|
51
|
+
|
52
|
+
static
|
53
|
+
VALUE quit(VALUE self)
|
54
|
+
{
|
55
|
+
if (!Reflex::quit())
|
56
|
+
error("Reflex::quit() failed.");
|
57
|
+
|
58
|
+
return self;
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
void
|
63
|
+
Init_reflex ()
|
64
|
+
{
|
65
|
+
Module m = rb_define_module("Reflex");
|
66
|
+
Reflex::mReflex = m;
|
67
|
+
|
68
|
+
m.define_singleton_method("init!", init);
|
69
|
+
m.define_singleton_method("fin!", fin);
|
70
|
+
m.define_singleton_method("run!", run);
|
71
|
+
rb_define_singleton_method(m, "quit", RUBY_METHOD_FUNC(quit), 0);
|
72
|
+
}
|