glib2 1.0.0-x86-mingw32 → 1.0.1-x86-mingw32
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/ChangeLog +107 -0
- data/ext/glib2/glib2.def +12 -1
- data/ext/glib2/rbglib.c +258 -69
- data/ext/glib2/rbglib.h +25 -5
- data/ext/glib2/rbglib_bookmarkfile.c +507 -519
- data/ext/glib2/rbglib_completion.c +4 -4
- data/ext/glib2/rbglib_error.c +1 -1
- data/ext/glib2/rbglib_i18n.c +1 -10
- data/ext/glib2/rbglib_iochannel.c +5 -1
- data/ext/glib2/rbglib_keyfile.c +103 -114
- data/ext/glib2/rbglib_maincontext.c +45 -13
- data/ext/glib2/rbglib_messages.c +2 -1
- data/ext/glib2/rbglib_shell.c +11 -19
- data/ext/glib2/rbglib_spawn.c +28 -110
- data/ext/glib2/rbglib_utils.c +5 -20
- data/ext/glib2/rbgobj_closure.c +3 -2
- data/ext/glib2/rbgobj_enums.c +37 -17
- data/ext/glib2/rbgobj_object.c +3 -3
- data/ext/glib2/rbgobj_param.c +2 -1
- data/ext/glib2/rbgobj_signal.c +9 -10
- data/ext/glib2/rbgobj_strv.c +9 -32
- data/ext/glib2/rbgobj_type.c +7 -6
- data/ext/glib2/rbgobj_typeinterface.c +142 -142
- data/ext/glib2/rbgobj_value.c +2 -1
- data/ext/glib2/rbgobj_valuearray.c +20 -15
- data/ext/glib2/rbgobj_valuetypes.c +3 -2
- data/ext/glib2/rbgobject.c +12 -12
- data/ext/glib2/rbgprivate.h +4 -0
- data/ext/glib2/rbgutil.h +14 -0
- data/ext/glib2/rbgutil_callback.c +22 -14
- data/lib/1.8/glib2.so +0 -0
- data/lib/1.9/glib2.so +0 -0
- data/lib/glib2.rb +30 -20
- data/lib/mkmf-gnome2.rb +6 -2
- data/test/glib-test-init.rb +1 -0
- metadata +4 -4
@@ -537,28 +537,60 @@ mc_prepare(VALUE self)
|
|
537
537
|
return rb_assoc_new(CBOOL2RVAL(ret), INT2NUM(priority));
|
538
538
|
}
|
539
539
|
|
540
|
+
struct mc_query_body_args {
|
541
|
+
GPollFD *fds;
|
542
|
+
gint timeout_;
|
543
|
+
gint ret;
|
544
|
+
};
|
545
|
+
|
546
|
+
static VALUE
|
547
|
+
mc_query_body(VALUE value)
|
548
|
+
{
|
549
|
+
struct mc_query_body_args *args = (struct mc_query_body_args *)value;
|
550
|
+
gint i;
|
551
|
+
VALUE ary = rb_ary_new();
|
552
|
+
|
553
|
+
for (i = 0; i < args->ret; i++)
|
554
|
+
rb_ary_push(ary, BOXED2RVAL(&args->fds[i], G_TYPE_POLL_FD));
|
555
|
+
|
556
|
+
return rb_assoc_new(INT2NUM(args->timeout_), ary);
|
557
|
+
}
|
558
|
+
|
559
|
+
static VALUE
|
560
|
+
mc_query_ensure(VALUE value)
|
561
|
+
{
|
562
|
+
g_free((GPollFD *)value);
|
563
|
+
|
564
|
+
return Qnil;
|
565
|
+
}
|
566
|
+
|
540
567
|
static VALUE
|
541
568
|
mc_query(VALUE self, VALUE max_priority)
|
542
569
|
{
|
543
|
-
gint
|
544
|
-
|
570
|
+
gint timeout_;
|
571
|
+
struct mc_query_body_args args;
|
545
572
|
|
546
|
-
GPollFD*
|
547
|
-
gint ret = g_main_context_query(_SELF(self),
|
548
|
-
|
573
|
+
GPollFD *fds = g_new(GPollFD, 100);
|
574
|
+
gint ret = g_main_context_query(_SELF(self),
|
575
|
+
NUM2INT(max_priority),
|
576
|
+
&timeout_,
|
577
|
+
fds,
|
578
|
+
100);
|
549
579
|
if (ret > 100) {
|
550
580
|
g_free(fds);
|
551
581
|
fds = g_new(GPollFD, ret);
|
552
|
-
g_main_context_query(_SELF(self),
|
553
|
-
|
582
|
+
g_main_context_query(_SELF(self),
|
583
|
+
NUM2INT(max_priority),
|
584
|
+
&timeout_,
|
585
|
+
fds,
|
586
|
+
ret);
|
554
587
|
}
|
555
588
|
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
return rb_assoc_new(INT2NUM(timeout_), ary);
|
589
|
+
args.fds = fds;
|
590
|
+
args.timeout_ = timeout_;
|
591
|
+
args.ret = ret;
|
592
|
+
return rb_ensure(mc_query_body, (VALUE)&args,
|
593
|
+
mc_query_ensure, (VALUE)fds);
|
562
594
|
}
|
563
595
|
|
564
596
|
/* How can I implement this?
|
data/ext/glib2/rbglib_messages.c
CHANGED
@@ -29,7 +29,8 @@ static VALUE rbglib_log_handler_procs;
|
|
29
29
|
static ID id_call;
|
30
30
|
static gboolean log_canceled;
|
31
31
|
|
32
|
-
static gchar*
|
32
|
+
static const gchar *
|
33
|
+
logmessage(GLogLevelFlags level)
|
33
34
|
{
|
34
35
|
if (level & G_LOG_LEVEL_ERROR){
|
35
36
|
return "ERROR";
|
data/ext/glib2/rbglib_shell.c
CHANGED
@@ -14,37 +14,29 @@
|
|
14
14
|
static VALUE
|
15
15
|
shell_parse(VALUE self, VALUE command_line)
|
16
16
|
{
|
17
|
-
gint argc
|
18
|
-
gchar**
|
19
|
-
GError*
|
20
|
-
VALUE ary;
|
17
|
+
gint argc;
|
18
|
+
gchar **argv;
|
19
|
+
GError *error = NULL;
|
21
20
|
|
22
|
-
|
23
|
-
|
21
|
+
if (!g_shell_parse_argv(RVAL2CSTR(command_line), &argc, &argv, &error))
|
22
|
+
RAISE_GERROR(error);
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
ary = rb_ary_new();
|
28
|
-
for (i = 0; i < argc; i++) {
|
29
|
-
rb_ary_push(ary, CSTR2RVAL(argv[i]));
|
30
|
-
}
|
31
|
-
g_strfreev (argv);
|
32
|
-
return ary;
|
24
|
+
return STRV2RVAL_FREE(argv);
|
33
25
|
}
|
34
26
|
|
35
27
|
static VALUE
|
36
28
|
shell_quote(VALUE self, VALUE unquoted_string)
|
37
29
|
{
|
38
|
-
return CSTR2RVAL_FREE(g_shell_quote(
|
30
|
+
return CSTR2RVAL_FREE(g_shell_quote(RVAL2CSTR(unquoted_string)));
|
39
31
|
}
|
40
32
|
|
41
33
|
static VALUE
|
42
34
|
shell_unquote(VALUE self, VALUE quoted_string)
|
43
35
|
{
|
44
|
-
GError*
|
45
|
-
gchar*
|
46
|
-
|
47
|
-
|
36
|
+
GError *error = NULL;
|
37
|
+
gchar *str = g_shell_unquote(RVAL2CSTR(quoted_string), &error);
|
38
|
+
if (str == NULL)
|
39
|
+
RAISE_GERROR(error);
|
48
40
|
|
49
41
|
return CSTR2RVAL_FREE(str);
|
50
42
|
}
|
data/ext/glib2/rbglib_spawn.c
CHANGED
@@ -31,9 +31,8 @@ rbglib_m_spawn_async_with_pipes(VALUE self, VALUE working_directory, VALUE argv,
|
|
31
31
|
gboolean ret;
|
32
32
|
GPid child_pid;
|
33
33
|
VALUE func = Qnil;
|
34
|
-
|
35
|
-
gchar
|
36
|
-
gchar** genvp = (gchar**)NULL;
|
34
|
+
gchar **gargv;
|
35
|
+
gchar **genvp;
|
37
36
|
gint standard_input, standard_output, standard_error;
|
38
37
|
|
39
38
|
if (rb_block_given_p()) {
|
@@ -41,36 +40,8 @@ rbglib_m_spawn_async_with_pipes(VALUE self, VALUE working_directory, VALUE argv,
|
|
41
40
|
G_RELATIVE(self, func);
|
42
41
|
}
|
43
42
|
|
44
|
-
|
45
|
-
|
46
|
-
gargc = RARRAY_LEN(argv);
|
47
|
-
gargv = ALLOCA_N(gchar*, gargc + 1);
|
48
|
-
for (i = 0; i < gargc; i++) {
|
49
|
-
if (TYPE(RARRAY_PTR(argv)[i]) == T_STRING) {
|
50
|
-
gargv[i] = RVAL2CSTR(RARRAY_PTR(argv)[i]);
|
51
|
-
}
|
52
|
-
else {
|
53
|
-
gargv[i] = "";
|
54
|
-
}
|
55
|
-
}
|
56
|
-
gargv[gargc] = (gchar*)NULL;
|
57
|
-
}
|
58
|
-
|
59
|
-
if (! NIL_P(envp)){
|
60
|
-
Check_Type(envp, T_ARRAY);
|
61
|
-
genc = RARRAY_LEN(envp);
|
62
|
-
genvp = ALLOCA_N(gchar*, genc + 1);
|
63
|
-
for (i = 0; i < genc; i++) {
|
64
|
-
if (TYPE(RARRAY_PTR(envp)[i]) == T_STRING) {
|
65
|
-
genvp[i] = RVAL2CSTR(RARRAY_PTR(envp)[i]);
|
66
|
-
}
|
67
|
-
else {
|
68
|
-
genvp[i] = "";
|
69
|
-
}
|
70
|
-
}
|
71
|
-
genvp[genc] = (gchar*)NULL;
|
72
|
-
}
|
73
|
-
|
43
|
+
gargv = (gchar **)RVAL2STRV(argv);
|
44
|
+
genvp = (gchar **)RVAL2STRV(envp);
|
74
45
|
ret = g_spawn_async_with_pipes(NIL_P(working_directory) ? NULL : RVAL2CSTR(working_directory),
|
75
46
|
gargv, genvp, NUM2INT(flags),
|
76
47
|
(GSpawnChildSetupFunc)child_setup,
|
@@ -78,8 +49,10 @@ rbglib_m_spawn_async_with_pipes(VALUE self, VALUE working_directory, VALUE argv,
|
|
78
49
|
&child_pid,
|
79
50
|
&standard_input, &standard_output,
|
80
51
|
&standard_error, &err);
|
81
|
-
|
82
|
-
|
52
|
+
g_free(gargv);
|
53
|
+
g_free(genvp);
|
54
|
+
if (!ret)
|
55
|
+
RAISE_GERROR(err);
|
83
56
|
|
84
57
|
return rb_ary_new3(4, INT2NUM((gint)child_pid),
|
85
58
|
rb_funcall(rb_cIO, id_new, 1, INT2NUM(standard_input)),
|
@@ -94,54 +67,25 @@ rbglib_m_spawn_async(VALUE self, VALUE working_directory, VALUE argv, VALUE envp
|
|
94
67
|
gboolean ret;
|
95
68
|
GPid child_pid;
|
96
69
|
VALUE func = Qnil;
|
97
|
-
|
98
|
-
gchar
|
99
|
-
gchar** genvp = (gchar**)NULL;
|
70
|
+
gchar **gargv;
|
71
|
+
gchar **genvp;
|
100
72
|
|
101
73
|
if (rb_block_given_p()) {
|
102
74
|
func = rb_block_proc();
|
103
75
|
G_RELATIVE(self, func);
|
104
76
|
}
|
105
77
|
|
106
|
-
|
107
|
-
|
108
|
-
gargc = RARRAY_LEN(argv);
|
109
|
-
gargv = ALLOCA_N(gchar*, gargc + 1);
|
110
|
-
for (i = 0; i < gargc; i++) {
|
111
|
-
if (TYPE(RARRAY_PTR(argv)[i]) == T_STRING) {
|
112
|
-
gargv[i] = RVAL2CSTR(RARRAY_PTR(argv)[i]);
|
113
|
-
}
|
114
|
-
else {
|
115
|
-
gargv[i] = "";
|
116
|
-
}
|
117
|
-
}
|
118
|
-
gargv[gargc] = (gchar*)NULL;
|
119
|
-
}
|
120
|
-
|
121
|
-
if (! NIL_P(envp)){
|
122
|
-
Check_Type(envp, T_ARRAY);
|
123
|
-
genc = RARRAY_LEN(envp);
|
124
|
-
genvp = ALLOCA_N(gchar*, genc + 1);
|
125
|
-
for (i = 0; i < genc; i++) {
|
126
|
-
if (TYPE(RARRAY_PTR(envp)[i]) == T_STRING) {
|
127
|
-
genvp[i] = RVAL2CSTR(RARRAY_PTR(envp)[i]);
|
128
|
-
}
|
129
|
-
else {
|
130
|
-
genvp[i] = "";
|
131
|
-
}
|
132
|
-
}
|
133
|
-
genvp[genc] = (gchar*)NULL;
|
134
|
-
}
|
135
|
-
|
78
|
+
gargv = (gchar **)RVAL2STRV(argv);
|
79
|
+
genvp = (gchar **)RVAL2STRV(envp);
|
136
80
|
ret = g_spawn_async(NIL_P(working_directory) ? NULL : RVAL2CSTR(working_directory),
|
137
81
|
gargv, genvp, NUM2INT(flags),
|
138
82
|
(GSpawnChildSetupFunc)child_setup, (gpointer)func,
|
139
83
|
&child_pid, &err);
|
140
|
-
|
141
|
-
|
84
|
+
g_free(gargv);
|
85
|
+
g_free(genvp);
|
86
|
+
if (!ret)
|
142
87
|
RAISE_GERROR(err);
|
143
|
-
|
144
|
-
|
88
|
+
|
145
89
|
return INT2NUM((int)child_pid);
|
146
90
|
}
|
147
91
|
|
@@ -151,9 +95,8 @@ rbglib_m_spawn_sync(VALUE self, VALUE working_directory, VALUE argv, VALUE envp,
|
|
151
95
|
GError *err = NULL;
|
152
96
|
gboolean ret;
|
153
97
|
VALUE func = Qnil;
|
154
|
-
|
155
|
-
gchar**
|
156
|
-
gchar** genvp = (gchar**)NULL;
|
98
|
+
gchar** gargv;
|
99
|
+
gchar** genvp;
|
157
100
|
gchar *standard_output = NULL, *standard_error = NULL;
|
158
101
|
gint exit_status;
|
159
102
|
VALUE std_out, std_err;
|
@@ -163,46 +106,17 @@ rbglib_m_spawn_sync(VALUE self, VALUE working_directory, VALUE argv, VALUE envp,
|
|
163
106
|
G_RELATIVE(self, func);
|
164
107
|
}
|
165
108
|
|
166
|
-
|
167
|
-
|
168
|
-
gargc = RARRAY_LEN(argv);
|
169
|
-
gargv = ALLOCA_N(gchar*, gargc + 1);
|
170
|
-
for (i = 0; i < gargc; i++) {
|
171
|
-
if (TYPE(RARRAY_PTR(argv)[i]) == T_STRING) {
|
172
|
-
gargv[i] = RVAL2CSTR(RARRAY_PTR(argv)[i]);
|
173
|
-
}
|
174
|
-
else {
|
175
|
-
gargv[i] = "";
|
176
|
-
}
|
177
|
-
}
|
178
|
-
gargv[gargc] = (gchar*)NULL;
|
179
|
-
}
|
180
|
-
|
181
|
-
if (! NIL_P(envp)){
|
182
|
-
Check_Type(envp, T_ARRAY);
|
183
|
-
genc = RARRAY_LEN(envp);
|
184
|
-
genvp = ALLOCA_N(gchar*, genc + 1);
|
185
|
-
for (i = 0; i < genc; i++) {
|
186
|
-
if (TYPE(RARRAY_PTR(envp)[i]) == T_STRING) {
|
187
|
-
genvp[i] = RVAL2CSTR(RARRAY_PTR(envp)[i]);
|
188
|
-
}
|
189
|
-
else {
|
190
|
-
genvp[i] = "";
|
191
|
-
}
|
192
|
-
}
|
193
|
-
genvp[genc] = (gchar*)NULL;
|
194
|
-
}
|
195
|
-
|
109
|
+
gargv = (gchar **)RVAL2STRV(argv);
|
110
|
+
genvp = (gchar **)RVAL2STRV(envp);
|
196
111
|
ret = g_spawn_sync(NIL_P(working_directory) ? NULL : RVAL2CSTR(working_directory),
|
197
112
|
gargv, genvp, NUM2INT(flags),
|
198
113
|
(GSpawnChildSetupFunc)child_setup, (gpointer)func,
|
199
114
|
&standard_output, &standard_error,
|
200
115
|
&exit_status, &err);
|
201
|
-
|
202
|
-
|
203
|
-
if (!
|
116
|
+
g_free(gargv);
|
117
|
+
g_free(genvp);
|
118
|
+
if (!ret)
|
204
119
|
RAISE_GERROR(err);
|
205
|
-
}
|
206
120
|
|
207
121
|
if (standard_output) {
|
208
122
|
std_out = CSTR2RVAL(standard_output);
|
@@ -279,12 +193,16 @@ rbglib_m_spawn_command_line_async(VALUE self, VALUE str)
|
|
279
193
|
}
|
280
194
|
|
281
195
|
#ifdef HAVE_G_SPAWN_CLOSE_PID
|
196
|
+
|
197
|
+
#define RVAL2GPID(value) ((GPid)NUM2INT(pid))
|
198
|
+
|
282
199
|
static VALUE
|
283
200
|
rbglib_m_spawn_close_pid(VALUE self, VALUE pid)
|
284
201
|
{
|
285
|
-
g_spawn_close_pid(
|
202
|
+
g_spawn_close_pid(RVAL2GPID(pid));
|
286
203
|
return Qnil;
|
287
204
|
}
|
205
|
+
|
288
206
|
#endif
|
289
207
|
|
290
208
|
void
|
data/ext/glib2/rbglib_utils.c
CHANGED
@@ -120,29 +120,16 @@ rbglib_m_user_config_dir(VALUE self)
|
|
120
120
|
return CSTR2RVAL(g_get_user_config_dir());
|
121
121
|
}
|
122
122
|
|
123
|
-
static VALUE
|
124
|
-
strv_to_array(const gchar * const *strv)
|
125
|
-
{
|
126
|
-
VALUE array;
|
127
|
-
|
128
|
-
array = rb_ary_new();
|
129
|
-
for (; *strv; strv++) {
|
130
|
-
rb_ary_push(array, CSTR2RVAL(*strv));
|
131
|
-
}
|
132
|
-
|
133
|
-
return array;
|
134
|
-
}
|
135
|
-
|
136
123
|
static VALUE
|
137
124
|
rbglib_m_system_data_dirs(VALUE self)
|
138
125
|
{
|
139
|
-
return
|
126
|
+
return STRV2RVAL((const gchar **)g_get_system_data_dirs());
|
140
127
|
}
|
141
128
|
|
142
129
|
static VALUE
|
143
130
|
rbglib_m_system_config_dirs(VALUE self)
|
144
131
|
{
|
145
|
-
return
|
132
|
+
return STRV2RVAL((const gchar **)g_get_system_config_dirs());
|
146
133
|
}
|
147
134
|
#endif
|
148
135
|
|
@@ -254,21 +241,19 @@ static VALUE
|
|
254
241
|
rbglib_m_parse_debug_string(VALUE self, VALUE string, VALUE keys)
|
255
242
|
{
|
256
243
|
gint i, nkeys;
|
257
|
-
VALUE ary
|
244
|
+
VALUE ary;
|
258
245
|
GDebugKey* gkeys;
|
259
246
|
|
260
247
|
Check_Type(keys, T_HASH);
|
261
248
|
ary = rb_funcall(keys, rb_intern("to_a"), 0);
|
262
249
|
nkeys = RARRAY_LEN(ary);
|
263
|
-
gkeys =
|
250
|
+
gkeys = ALLOCA_N(GDebugKey, nkeys);
|
264
251
|
for (i = 0; i < nkeys; i++) {
|
265
252
|
gkeys[i].key = RVAL2CSTR(RARRAY_PTR(RARRAY_PTR(ary)[i])[0]);
|
266
253
|
gkeys[i].value = NUM2UINT(RARRAY_PTR(RARRAY_PTR(ary)[i])[1]);
|
267
254
|
}
|
268
255
|
|
269
|
-
|
270
|
-
g_free(gkeys);
|
271
|
-
return ret;
|
256
|
+
return UINT2NUM(g_parse_debug_string(RVAL2CSTR(string), gkeys, nkeys));
|
272
257
|
}
|
273
258
|
|
274
259
|
/*
|
data/ext/glib2/rbgobj_closure.c
CHANGED
@@ -33,7 +33,7 @@ struct _GRClosure
|
|
33
33
|
static VALUE
|
34
34
|
rclosure_default_g2r_func(guint num, const GValue *values)
|
35
35
|
{
|
36
|
-
|
36
|
+
guint i;
|
37
37
|
VALUE args = rb_ary_new2(num);
|
38
38
|
for (i = 0; i < num; i++)
|
39
39
|
rb_ary_store(args, i, GVAL2RVAL(&values[i]));
|
@@ -323,7 +323,8 @@ Init_closure()
|
|
323
323
|
|
324
324
|
/**********************************************************************/
|
325
325
|
|
326
|
-
void
|
326
|
+
void
|
327
|
+
Init_gobject_gclosure()
|
327
328
|
{
|
328
329
|
Init_rclosure();
|
329
330
|
Init_closure();
|
data/ext/glib2/rbgobj_enums.c
CHANGED
@@ -164,7 +164,7 @@ rbgobj_enum_add_constants(VALUE mod, GType enum_type,
|
|
164
164
|
const gchar *strip_prefix)
|
165
165
|
{
|
166
166
|
GEnumClass *gclass;
|
167
|
-
|
167
|
+
guint i;
|
168
168
|
int prefix_len = strlen(strip_prefix);
|
169
169
|
|
170
170
|
gclass = G_ENUM_CLASS(g_type_class_ref(enum_type));
|
@@ -190,7 +190,7 @@ rbgobj_flags_add_constants(VALUE mod, GType flags_type,
|
|
190
190
|
const gchar *strip_prefix)
|
191
191
|
{
|
192
192
|
GFlagsClass *gclass;
|
193
|
-
|
193
|
+
guint i;
|
194
194
|
int prefix_len = strlen(strip_prefix);
|
195
195
|
|
196
196
|
gclass = G_FLAGS_CLASS(g_type_class_ref(flags_type));
|
@@ -296,7 +296,7 @@ void
|
|
296
296
|
rbgobj_init_enum_class(VALUE klass)
|
297
297
|
{
|
298
298
|
GEnumClass* gclass = g_type_class_ref(CLASS2GTYPE(klass));
|
299
|
-
|
299
|
+
guint i;
|
300
300
|
|
301
301
|
for (i = 0; i < gclass->n_values; i++) {
|
302
302
|
GEnumValue* entry = &(gclass->values[i]);
|
@@ -342,24 +342,44 @@ enum_s_range(VALUE self)
|
|
342
342
|
return result;
|
343
343
|
}
|
344
344
|
|
345
|
+
struct enum_s_values_body_args {
|
346
|
+
GEnumClass *gclass;
|
347
|
+
VALUE self;
|
348
|
+
};
|
349
|
+
|
345
350
|
static VALUE
|
346
|
-
|
351
|
+
enum_s_values_body(VALUE value)
|
347
352
|
{
|
348
|
-
|
349
|
-
VALUE result;
|
350
|
-
|
353
|
+
struct enum_s_values_body_args *args = (struct enum_s_values_body_args *)value;
|
354
|
+
VALUE result = rb_ary_new();
|
355
|
+
guint i;
|
351
356
|
|
352
|
-
|
353
|
-
|
354
|
-
for (i = 0; i < gclass->n_values; i++) {
|
355
|
-
GEnumValue *p = &(gclass->values[i]);
|
356
|
-
rb_ary_push(result, make_enum(p->value, self));
|
357
|
-
}
|
357
|
+
for (i = 0; i < args->gclass->n_values; i++)
|
358
|
+
rb_ary_push(result, make_enum(args->gclass->values[i].value, args->self));
|
358
359
|
|
359
|
-
g_type_class_unref(gclass);
|
360
360
|
return result;
|
361
361
|
}
|
362
362
|
|
363
|
+
static VALUE
|
364
|
+
enum_s_values_ensure(VALUE gclass)
|
365
|
+
{
|
366
|
+
g_type_class_unref((GEnumClass *)gclass);
|
367
|
+
|
368
|
+
return Qnil;
|
369
|
+
}
|
370
|
+
|
371
|
+
static VALUE
|
372
|
+
enum_s_values(VALUE self)
|
373
|
+
{
|
374
|
+
struct enum_s_values_body_args args = {
|
375
|
+
g_type_class_ref(CLASS2GTYPE(self)),
|
376
|
+
self
|
377
|
+
};
|
378
|
+
|
379
|
+
return rb_ensure(enum_s_values_body, (VALUE)&args,
|
380
|
+
enum_s_values_ensure, (VALUE)args.gclass);
|
381
|
+
}
|
382
|
+
|
363
383
|
static VALUE
|
364
384
|
enum_s_allocate(VALUE self)
|
365
385
|
{
|
@@ -573,7 +593,7 @@ rbgobj_init_flags_class(VALUE klass)
|
|
573
593
|
{
|
574
594
|
GFlagsClass* gclass = g_type_class_ref(CLASS2GTYPE(klass));
|
575
595
|
GString* source = g_string_new(NULL);
|
576
|
-
|
596
|
+
guint i;
|
577
597
|
|
578
598
|
for (i = 0; i < gclass->n_values; i++) {
|
579
599
|
GFlagsValue* entry = &(gclass->values[i]);
|
@@ -639,7 +659,7 @@ flags_s_values(VALUE klass)
|
|
639
659
|
{
|
640
660
|
GFlagsClass *gclass;
|
641
661
|
VALUE result;
|
642
|
-
|
662
|
+
guint i;
|
643
663
|
|
644
664
|
gclass = g_type_class_ref(CLASS2GTYPE(klass));
|
645
665
|
result = rb_ary_new();
|
@@ -694,7 +714,7 @@ flags_initialize(int argc, VALUE* argv, VALUE self)
|
|
694
714
|
}
|
695
715
|
|
696
716
|
if (!p->info) {
|
697
|
-
|
717
|
+
guint i;
|
698
718
|
for (i = 0; i < p->gclass->n_values; i++){
|
699
719
|
GFlagsValue* val = &(p->gclass->values[i]);
|
700
720
|
if (val->value == p->value){
|