glib2 1.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. data/ext/glib2/extconf.rb +1 -0
  2. data/ext/glib2/glib2.def +23 -0
  3. data/ext/glib2/rbgcompat.h +19 -5
  4. data/ext/glib2/rbglib.c +607 -160
  5. data/ext/glib2/rbglib.h +81 -26
  6. data/ext/glib2/rbglib2conversions.h +57 -0
  7. data/ext/glib2/rbglib_bookmarkfile.c +117 -107
  8. data/ext/glib2/rbglib_completion.c +37 -26
  9. data/ext/glib2/rbglib_convert.c +42 -30
  10. data/ext/glib2/rbglib_error.c +20 -10
  11. data/ext/glib2/rbglib_fileutils.c +48 -37
  12. data/ext/glib2/rbglib_i18n.c +24 -14
  13. data/ext/glib2/rbglib_int64.c +24 -16
  14. data/ext/glib2/rbglib_iochannel.c +146 -204
  15. data/ext/glib2/rbglib_iochannel_win32_socket.c +56 -0
  16. data/ext/glib2/rbglib_iochannelerror.c +49 -0
  17. data/ext/glib2/rbglib_keyfile.c +171 -182
  18. data/ext/glib2/rbglib_maincontext.c +107 -92
  19. data/ext/glib2/rbglib_mainloop.c +34 -21
  20. data/ext/glib2/rbglib_messages.c +53 -44
  21. data/ext/glib2/rbglib_pollfd.c +37 -26
  22. data/ext/glib2/rbglib_shell.c +29 -22
  23. data/ext/glib2/rbglib_shellerror.c +34 -0
  24. data/ext/glib2/rbglib_source.c +49 -36
  25. data/ext/glib2/rbglib_spawn.c +50 -61
  26. data/ext/glib2/rbglib_spawnerror.c +53 -0
  27. data/ext/glib2/rbglib_threads.c +28 -16
  28. data/ext/glib2/rbglib_timer.c +35 -24
  29. data/ext/glib2/rbglib_ucs4.c +79 -0
  30. data/ext/glib2/rbglib_unichar.c +209 -0
  31. data/ext/glib2/rbglib_unicode.c +34 -584
  32. data/ext/glib2/rbglib_utf16.c +78 -0
  33. data/ext/glib2/rbglib_utf8.c +259 -0
  34. data/ext/glib2/rbglib_utils.c +95 -91
  35. data/ext/glib2/rbglib_win32.c +52 -45
  36. data/ext/glib2/rbglibdeprecated.c +56 -0
  37. data/ext/glib2/rbglibdeprecated.h +34 -0
  38. data/ext/glib2/rbgobj_boxed.c +40 -33
  39. data/ext/glib2/rbgobj_closure.c +45 -34
  40. data/ext/glib2/rbgobj_convert.c +19 -9
  41. data/ext/glib2/rbgobj_enumflags.c +109 -0
  42. data/ext/glib2/rbgobj_enums.c +67 -646
  43. data/ext/glib2/rbgobj_flags.c +522 -0
  44. data/ext/glib2/rbgobj_fundamental.c +19 -6
  45. data/ext/glib2/rbgobj_object.c +90 -81
  46. data/ext/glib2/rbgobj_param.c +78 -83
  47. data/ext/glib2/rbgobj_paramspecs.c +20 -12
  48. data/ext/glib2/rbgobj_signal.c +248 -193
  49. data/ext/glib2/rbgobj_strv.c +20 -10
  50. data/ext/glib2/rbgobj_type.c +153 -149
  51. data/ext/glib2/rbgobj_typeinstance.c +49 -39
  52. data/ext/glib2/rbgobj_typeinterface.c +37 -27
  53. data/ext/glib2/rbgobj_typemodule.c +39 -29
  54. data/ext/glib2/rbgobj_typeplugin.c +36 -26
  55. data/ext/glib2/rbgobj_value.c +41 -11
  56. data/ext/glib2/rbgobj_valuearray.c +59 -23
  57. data/ext/glib2/rbgobj_valuetypes.c +27 -17
  58. data/ext/glib2/rbgobject.c +26 -40
  59. data/ext/glib2/rbgobject.h +38 -20
  60. data/ext/glib2/rbgprivate.h +87 -5
  61. data/ext/glib2/rbgutil.c +52 -238
  62. data/ext/glib2/rbgutil.h +55 -42
  63. data/ext/glib2/rbgutil_callback.c +47 -12
  64. data/ext/glib2/rbgutil_list.c +173 -0
  65. data/ext/glib2/rbgutil_list.h +85 -0
  66. data/ext/glib2/rbgutildeprecated.c +252 -0
  67. data/ext/glib2/rbgutildeprecated.h +63 -0
  68. data/lib/glib-mkenums.rb +2 -2
  69. data/lib/glib2.rb +2 -25
  70. data/lib/glib2/deprecatable.rb +149 -0
  71. data/lib/gnome2-raketask.rb +45 -15
  72. data/lib/gnome2-win32-binary-downloader.rb +1 -1
  73. data/lib/mkmf-gnome2.rb +37 -18
  74. data/test/test_flags.rb +129 -0
  75. data/test/test_key_file.rb +6 -2
  76. data/test/test_spawn.rb +33 -0
  77. metadata +26 -7
  78. data/ChangeLog +0 -3513
@@ -1,16 +1,24 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /**********************************************************************
3
-
4
- rbgobj_paramspecs.c -
5
-
6
- $Author: ggc $
7
- $Date: 2007/07/13 16:07:28 $
8
- created at: Sun Jul 26 14:31:33 JST 2002
9
-
10
- Copyright (C) 2004 Ruby-GNOME2 Project Team
11
- Copyright (C) 2002,2003 Masahiro Sakai
12
-
13
- **********************************************************************/
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2004 Ruby-GNOME2 Project Team
5
+ * Copyright (C) 2002,2003 Masahiro Sakai
6
+ *
7
+ * This library is free software; you can redistribute it and/or
8
+ * modify it under the terms of the GNU Lesser General Public
9
+ * License as published by the Free Software Foundation; either
10
+ * version 2.1 of the License, or (at your option) any later version.
11
+ *
12
+ * This library is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ * Lesser General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public
18
+ * License along with this library; if not, write to the Free Software
19
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
+ * MA 02110-1301 USA
21
+ */
14
22
 
15
23
  #include "rbgprivate.h"
16
24
 
@@ -1,20 +1,30 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /**********************************************************************
3
-
4
- rbgobj_signal.c -
5
-
6
- $Author: ssimons $
7
- $Date: 2007/07/25 17:04:28 $
8
- created at: Sat Jul 27 16:56:01 JST 2002
9
-
10
- Copyright (C) 2002-2004 Ruby-GNOME2 Project Team
11
- Copyright (C) 2002,2003 Masahiro Sakai
12
-
13
- **********************************************************************/
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2002-2004 Ruby-GNOME2 Project Team
5
+ * Copyright (C) 2002,2003 Masahiro Sakai
6
+ *
7
+ * This library is free software; you can redistribute it and/or
8
+ * modify it under the terms of the GNU Lesser General Public
9
+ * License as published by the Free Software Foundation; either
10
+ * version 2.1 of the License, or (at your option) any later version.
11
+ *
12
+ * This library is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ * Lesser General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public
18
+ * License along with this library; if not, write to the Free Software
19
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
+ * MA 02110-1301 USA
21
+ */
14
22
 
15
23
  #include "rbgprivate.h"
16
24
 
17
- static VALUE cSignal;
25
+ #define RG_TARGET_NAMESPACE cSignal
26
+
27
+ static VALUE RG_TARGET_NAMESPACE;
18
28
  VALUE rbgobj_signal_wrap(guint sig_id);
19
29
 
20
30
  #define default_handler_method_prefix "signal_do_"
@@ -47,10 +57,10 @@ static VALUE eNoSignalError;
47
57
 
48
58
  // FIXME: use rb_protect
49
59
  static gboolean
50
- accumulator_func(GSignalInvocationHint* ihint,
51
- GValue* return_accu,
52
- const GValue* handler_return,
53
- gpointer data)
60
+ accumulator_func(G_GNUC_UNUSED GSignalInvocationHint *ihint,
61
+ GValue *return_accu,
62
+ const GValue *handler_return,
63
+ gpointer data)
54
64
  {
55
65
  VALUE proc = (VALUE)data;
56
66
  VALUE val = GVAL2RVAL(return_accu);
@@ -72,34 +82,97 @@ accumulator_func(GSignalInvocationHint* ihint,
72
82
  return continue_emission;
73
83
  }
74
84
 
85
+ struct rval2gtypes_args {
86
+ VALUE ary;
87
+ long n;
88
+ GType *result;
89
+ };
90
+
91
+ static VALUE
92
+ rbg_rval2gtypes_body(VALUE value)
93
+ {
94
+ long i;
95
+ struct rval2gtypes_args *args = (struct rval2gtypes_args *)value;
96
+
97
+ for (i = 0; i < args->n; i++)
98
+ args->result[i] = rbgobj_gtype_get(RARRAY_PTR(args->ary)[i]);
99
+
100
+ return Qnil;
101
+ }
102
+
103
+ static G_GNUC_NORETURN VALUE
104
+ rbg_rval2gtypes_rescue(VALUE value)
105
+ {
106
+ g_free(((struct rval2gtypes_args *)value)->result);
107
+
108
+ rb_exc_raise(rb_errinfo());
109
+ }
110
+
111
+ static GType *
112
+ rbg_rval2gtypes(volatile VALUE *value, long *n)
113
+ {
114
+ struct rval2gtypes_args args;
115
+
116
+ args.ary = *value = rb_ary_dup(rb_ary_to_ary(*value));
117
+ args.n = RARRAY_LEN(args.ary);
118
+ args.result = g_new(GType, args.n + 1);
119
+
120
+ rb_rescue(rbg_rval2gtypes_body, (VALUE)&args,
121
+ rbg_rval2gtypes_rescue, (VALUE)&args);
122
+
123
+ if (n != NULL)
124
+ *n = args.n;
125
+
126
+ return args.result;
127
+ }
128
+
129
+ static GType *
130
+ rbg_rval2gtypes_accept_nil(volatile VALUE *value, long *n)
131
+ {
132
+ if (!NIL_P(*value))
133
+ return rbg_rval2gtypes(value, n);
134
+
135
+ if (n != NULL)
136
+ *n = 0;
137
+
138
+ return NULL;
139
+ }
140
+
141
+ #define RVAL2GTYPES(value, n) rbg_rval2gtypes(&(value), &(n))
142
+ #define RVAL2GTYPES_ACCEPT_NIL(value, n) rbg_rval2gtypes_accept_nil(&(value), &(n))
143
+
75
144
  static VALUE
76
145
  gobj_s_signal_new(int argc, VALUE* argv, VALUE self)
77
146
  {
78
- const RGObjClassInfo* cinfo = rbgobj_lookup_class(self);
79
- VALUE signal_name, signal_flags, accumulator, return_type, params;
80
- GClosure* class_closure;
81
- GType* param_types;
82
- long i, n_params;
83
- guint sig;
147
+ const RGObjClassInfo *cinfo = rbgobj_lookup_class(self);
148
+ VALUE rbsignal_name, rbsignal_flags, accumulator, rbreturn_type, params;
149
+ const gchar *signal_name;
150
+ GSignalFlags signal_flags;
151
+ GClosure *class_closure;
152
+ GType return_type;
153
+ GType *param_types;
154
+ long n_params;
155
+ guint signal;
84
156
 
85
- rb_scan_args(argc, argv, "4*", &signal_name, &signal_flags,
86
- &accumulator, &return_type, &params);
157
+ rb_scan_args(argc, argv, "4*",
158
+ &rbsignal_name, &rbsignal_flags, &accumulator, &rbreturn_type, &params);
87
159
 
88
160
  if (cinfo->klass != self)
89
- rb_raise(rb_eTypeError, "%s isn't registerd class",
161
+ rb_raise(rb_eTypeError, "not a registered class: %s",
90
162
  rb_class2name(self));
91
163
 
92
- if (SYMBOL_P(signal_name))
93
- signal_name = rb_str_new2(rb_id2name(SYM2ID(signal_name)));
94
- else
95
- StringValue(signal_name);
164
+ if (SYMBOL_P(rbsignal_name))
165
+ rbsignal_name = rb_str_new2(rb_id2name(SYM2ID(rbsignal_name)));
166
+ signal_name = RVAL2CSTR(rbsignal_name);
167
+
168
+ signal_flags = NUM2INT(rbsignal_flags);
96
169
 
97
170
  {
98
171
  VALUE factory;
99
172
  VALUE proc;
100
173
  ID method_id;
101
174
 
102
- method_id = rb_to_id(rb_str_concat(rb_str_new2(default_handler_method_prefix), signal_name));
175
+ method_id = rb_to_id(rb_str_concat(rb_str_new2(default_handler_method_prefix), rbsignal_name));
103
176
 
104
177
  factory = rb_eval_string(
105
178
  "lambda{|klass, id|\n"
@@ -110,37 +183,33 @@ gobj_s_signal_new(int argc, VALUE* argv, VALUE self)
110
183
  proc = rb_funcall(factory, rb_intern("call"), 2, self, ID2SYM(method_id));
111
184
 
112
185
  class_closure = g_rclosure_new(proc, Qnil, NULL);
186
+ /* TODO: Should this be done even if something below it fails? */
113
187
  g_rclosure_attach(class_closure, self);
114
188
  }
115
189
 
116
- if (NIL_P(params)) {
117
- n_params = 0;
118
- param_types = NULL;
119
- } else {
120
- n_params = RARRAY_LEN(params);
121
- param_types = ALLOCA_N(GType, n_params);
122
- for (i = 0; i < n_params; i++)
123
- param_types[i] = rbgobj_gtype_get(RARRAY_PTR(params)[i]);
124
- }
190
+ return_type = rbgobj_gtype_get(rbreturn_type);
191
+ param_types = RVAL2GTYPES_ACCEPT_NIL(params, n_params);
125
192
 
126
- sig = g_signal_newv(StringValuePtr(signal_name),
127
- cinfo->gtype,
128
- NUM2INT(signal_flags),
129
- class_closure,
130
- NIL_P(accumulator) ? NULL : accumulator_func,
131
- NIL_P(accumulator) ? NULL : (gpointer)accumulator,
132
- NULL, /* c_marshaller */
133
- rbgobj_gtype_get(return_type),
134
- n_params,
135
- param_types);
136
-
137
- if (!sig)
193
+ signal = g_signal_newv(signal_name,
194
+ cinfo->gtype,
195
+ signal_flags,
196
+ class_closure,
197
+ NIL_P(accumulator) ? NULL : accumulator_func,
198
+ NIL_P(accumulator) ? NULL : (gpointer)accumulator,
199
+ NULL, /* c_marshaller */
200
+ return_type,
201
+ n_params,
202
+ param_types);
203
+
204
+ g_free(param_types);
205
+
206
+ if (!signal)
138
207
  rb_raise(rb_eRuntimeError, "g_signal_newv failed");
139
208
 
140
209
  if (!NIL_P(accumulator))
141
210
  G_RELATIVE(self, accumulator); /* FIXME */
142
211
 
143
- return rbgobj_signal_wrap(sig);
212
+ return rbgobj_signal_wrap(signal);
144
213
  }
145
214
 
146
215
  static void
@@ -190,7 +259,7 @@ gobj_s_signal(VALUE self, VALUE name)
190
259
  sig_name = rb_id2name(SYM2ID(name));
191
260
  else
192
261
  sig_name = StringValuePtr(name);
193
-
262
+
194
263
  sig_id = g_signal_lookup(sig_name, CLASS2GTYPE(self));
195
264
  if (!sig_id)
196
265
  rb_raise(eNoSignalError, "no such signal: %s", sig_name);
@@ -298,7 +367,7 @@ struct emit_arg {
298
367
  static VALUE
299
368
  emit_body(struct emit_arg* arg)
300
369
  {
301
- GValue param = { 0, };
370
+ GValue param = G_VALUE_INIT;
302
371
 
303
372
  g_value_init(&param, G_TYPE_FROM_INSTANCE(RVAL2GOBJ(arg->self)));
304
373
  rbgobj_rvalue_to_gvalue(arg->self, &param);
@@ -320,7 +389,7 @@ emit_body(struct emit_arg* arg)
320
389
 
321
390
  {
322
391
  gboolean use_ret = (arg->query.return_type != G_TYPE_NONE);
323
- GValue return_value = {0,};
392
+ GValue return_value = G_VALUE_INIT;
324
393
 
325
394
  if (use_ret)
326
395
  g_value_init(&return_value,
@@ -376,7 +445,7 @@ gobj_sig_emit(int argc, VALUE *argv, VALUE self)
376
445
 
377
446
  arg.self = self;
378
447
  arg.instance_and_params = g_value_array_new(1 + arg.query.n_params);
379
-
448
+
380
449
  return rb_ensure(emit_body, (VALUE)&arg, emit_ensure, (VALUE)&arg);
381
450
  }
382
451
 
@@ -444,34 +513,34 @@ gobj_sig_handler_is_connected(VALUE self, VALUE id)
444
513
  }
445
514
 
446
515
  #if 0
447
- gulong g_signal_handler_find (gpointer instance,
448
- GSignalMatchType mask,
449
- guint signal_id,
450
- GQuark detail,
451
- GClosure *closure,
452
- gpointer func,
453
- gpointer data);
454
- guint g_signal_handlers_block_matched (gpointer instance,
455
- GSignalMatchType mask,
456
- guint signal_id,
457
- GQuark detail,
458
- GClosure *closure,
459
- gpointer func,
460
- gpointer data);
461
- guint g_signal_handlers_unblock_matched (gpointer instance,
462
- GSignalMatchType mask,
463
- guint signal_id,
464
- GQuark detail,
465
- GClosure *closure,
466
- gpointer func,
467
- gpointer data);
468
- guint g_signal_handlers_disconnect_matched (gpointer instance,
469
- GSignalMatchType mask,
470
- guint signal_id,
471
- GQuark detail,
472
- GClosure *closure,
473
- gpointer func,
474
- gpointer data);
516
+ gulong g_signal_handler_find (gpointer instance,
517
+ GSignalMatchType mask,
518
+ guint signal_id,
519
+ GQuark detail,
520
+ GClosure *closure,
521
+ gpointer func,
522
+ gpointer data);
523
+ guint g_signal_handlers_block_matched (gpointer instance,
524
+ GSignalMatchType mask,
525
+ guint signal_id,
526
+ GQuark detail,
527
+ GClosure *closure,
528
+ gpointer func,
529
+ gpointer data);
530
+ guint g_signal_handlers_unblock_matched (gpointer instance,
531
+ GSignalMatchType mask,
532
+ guint signal_id,
533
+ GQuark detail,
534
+ GClosure *closure,
535
+ gpointer func,
536
+ gpointer data);
537
+ guint g_signal_handlers_disconnect_matched (gpointer instance,
538
+ GSignalMatchType mask,
539
+ guint signal_id,
540
+ GQuark detail,
541
+ GClosure *closure,
542
+ gpointer func,
543
+ gpointer data);
475
544
  #endif
476
545
 
477
546
  static VALUE
@@ -493,7 +562,7 @@ chain_from_overridden_body(struct emit_arg* arg)
493
562
 
494
563
  {
495
564
  gboolean use_ret = (arg->query.return_type != G_TYPE_NONE);
496
- GValue return_value = {0,};
565
+ GValue return_value = G_VALUE_INIT;
497
566
 
498
567
  if (use_ret)
499
568
  g_value_init(&return_value,
@@ -581,45 +650,6 @@ gobj_s_method_added(VALUE klass, VALUE id)
581
650
  return Qnil;
582
651
  }
583
652
 
584
- static void
585
- Init_signal_misc()
586
- {
587
- signal_func_table = rb_hash_new();
588
- rb_global_variable(&signal_func_table);
589
-
590
- rb_define_method(mMetaInterface, "signal_new", gobj_s_signal_new, -1);
591
- rb_define_method(mMetaInterface, "signals", gobj_s_signals, -1);
592
- rb_define_method(mMetaInterface, "signal", gobj_s_signal, 1);
593
-
594
- rb_define_method(cInstantiatable, "signal_has_handler_pending?",
595
- gobj_sig_has_handler_pending, -1);
596
- rb_define_method(cInstantiatable, "signal_connect", gobj_sig_connect, -1);
597
- rb_define_method(cInstantiatable, "signal_connect_after",
598
- gobj_sig_connect_after, -1);
599
-
600
- #if 0
601
- rb_define_method(cInstantiatable, "signal_invocation_hint",
602
- gobj_sig_get_invocation_hint, 0);
603
- #endif
604
-
605
- rb_define_method(cInstantiatable, "signal_emit",
606
- gobj_sig_emit, -1);
607
- rb_define_method(cInstantiatable, "signal_emit_stop",
608
- gobj_sig_emit_stop, 1);
609
- rb_define_method(cInstantiatable, "signal_handler_block",
610
- gobj_sig_handler_block, 1);
611
- rb_define_method(cInstantiatable, "signal_handler_unblock",
612
- gobj_sig_handler_unblock, 1);
613
- rb_define_method(cInstantiatable, "signal_handler_disconnect",
614
- gobj_sig_handler_disconnect, 1);
615
-
616
- rb_define_method(cInstantiatable, "signal_handler_is_connected?",
617
- gobj_sig_handler_is_connected, 1);
618
-
619
- rb_define_singleton_method(cInstantiatable, "method_added",
620
- gobj_s_method_added, 1);
621
- }
622
-
623
653
  /**********************************************************************/
624
654
 
625
655
  VALUE
@@ -628,13 +658,13 @@ rbgobj_signal_wrap(guint sig_id)
628
658
  VALUE result;
629
659
  GSignalQuery* query;
630
660
 
631
- result = Data_Make_Struct(cSignal, GSignalQuery, NULL, free, query);
661
+ result = Data_Make_Struct(RG_TARGET_NAMESPACE, GSignalQuery, NULL, free, query);
632
662
  g_signal_query(sig_id, query);
633
663
  return result;
634
664
  }
635
665
 
636
666
  static VALUE
637
- query_signal_id(VALUE self)
667
+ rg_id(VALUE self)
638
668
  {
639
669
  GSignalQuery* query;
640
670
  Data_Get_Struct(self, GSignalQuery, query);
@@ -642,7 +672,7 @@ query_signal_id(VALUE self)
642
672
  }
643
673
 
644
674
  static VALUE
645
- query_signal_name(VALUE self)
675
+ rg_name(VALUE self)
646
676
  {
647
677
  GSignalQuery* query;
648
678
  Data_Get_Struct(self, GSignalQuery, query);
@@ -650,7 +680,7 @@ query_signal_name(VALUE self)
650
680
  }
651
681
 
652
682
  static VALUE
653
- query_itype(VALUE self)
683
+ rg_itype(VALUE self)
654
684
  {
655
685
  GSignalQuery* query;
656
686
  Data_Get_Struct(self, GSignalQuery, query);
@@ -658,7 +688,7 @@ query_itype(VALUE self)
658
688
  }
659
689
 
660
690
  static VALUE
661
- query_owner(VALUE self)
691
+ rg_owner(VALUE self)
662
692
  {
663
693
  GSignalQuery* query;
664
694
  Data_Get_Struct(self, GSignalQuery, query);
@@ -666,7 +696,7 @@ query_owner(VALUE self)
666
696
  }
667
697
 
668
698
  static VALUE
669
- query_return_type(VALUE self)
699
+ rg_return_type(VALUE self)
670
700
  {
671
701
  GSignalQuery* query;
672
702
  Data_Get_Struct(self, GSignalQuery, query);
@@ -674,7 +704,7 @@ query_return_type(VALUE self)
674
704
  }
675
705
 
676
706
  static VALUE
677
- query_signal_flags(VALUE self)
707
+ rg_flags(VALUE self)
678
708
  {
679
709
  GSignalQuery* query;
680
710
  Data_Get_Struct(self, GSignalQuery, query);
@@ -682,7 +712,7 @@ query_signal_flags(VALUE self)
682
712
  }
683
713
 
684
714
  static VALUE
685
- query_param_types(VALUE self)
715
+ rg_param_types(VALUE self)
686
716
  {
687
717
  GSignalQuery* query;
688
718
  VALUE result;
@@ -697,7 +727,7 @@ query_param_types(VALUE self)
697
727
  }
698
728
 
699
729
  static VALUE
700
- query_inspect(VALUE self)
730
+ rg_inspect(VALUE self)
701
731
  {
702
732
  GSignalQuery* query;
703
733
  gchar* s;
@@ -734,7 +764,6 @@ query_is_flag(G_SIGNAL_DETAILED)
734
764
  query_is_flag(G_SIGNAL_ACTION)
735
765
  query_is_flag(G_SIGNAL_NO_HOOKS)
736
766
 
737
-
738
767
  static gboolean
739
768
  hook_func(GSignalInvocationHint* ihint,
740
769
  guint n_param_values,
@@ -742,7 +771,7 @@ hook_func(GSignalInvocationHint* ihint,
742
771
  gpointer data)
743
772
  {
744
773
  GClosure* closure = data;
745
- GValue ret_val ={0,};
774
+ GValue ret_val =G_VALUE_INIT;
746
775
  gboolean ret;
747
776
 
748
777
  g_value_init(&ret_val, G_TYPE_BOOLEAN);
@@ -768,7 +797,7 @@ g_signal_add_emission_hook_closure (guint signal_id,
768
797
  }
769
798
 
770
799
  static VALUE
771
- signal_add_emission_hook(int argc, VALUE* argv, VALUE self)
800
+ rg_add_emission_hook(int argc, VALUE* argv, VALUE self)
772
801
  {
773
802
  GSignalQuery* query;
774
803
  VALUE proc;
@@ -798,7 +827,7 @@ signal_add_emission_hook(int argc, VALUE* argv, VALUE self)
798
827
  }
799
828
 
800
829
  static VALUE
801
- signal_remove_emission_hook(VALUE self, VALUE hook_id)
830
+ rg_remove_emission_hook(VALUE self, VALUE hook_id)
802
831
  {
803
832
  GSignalQuery* query;
804
833
  Data_Get_Struct(self, GSignalQuery, query);
@@ -806,56 +835,6 @@ signal_remove_emission_hook(VALUE self, VALUE hook_id)
806
835
  return Qnil;
807
836
  }
808
837
 
809
- static void
810
- Init_signal_class()
811
- {
812
- VALUE cSignalFlags, cSignalMatchType;
813
-
814
- cSignal = rb_define_class_under(mGLib, "Signal", rb_cData);
815
-
816
- rb_define_method(cSignal, "id", query_signal_id, 0);
817
- rb_define_method(cSignal, "name", query_signal_name, 0);
818
- rb_define_method(cSignal, "flags", query_signal_flags, 0);
819
- rb_define_method(cSignal, "itype", query_itype, 0);
820
- rb_define_method(cSignal, "owner", query_owner, 0);
821
- rb_define_method(cSignal, "return_type", query_return_type, 0);
822
- rb_define_method(cSignal, "param_types", query_param_types, 0);
823
- rb_define_method(cSignal, "inspect", query_inspect, 0);
824
-
825
- rb_define_method(cSignal, "add_emission_hook", signal_add_emission_hook, -1);
826
- rb_define_method(cSignal, "remove_emission_hook", signal_remove_emission_hook, 1);
827
-
828
- /* GSignalFlags */
829
- cSignalFlags = G_DEF_CLASS(G_TYPE_SIGNAL_FLAGS, "SignalFlags", mGLib);
830
- G_DEF_CONSTANTS(cSignal, G_TYPE_SIGNAL_FLAGS, "G_SIGNAL_");
831
- rb_define_const(cSignalFlags, "MASK", INT2NUM(G_SIGNAL_FLAGS_MASK));
832
- rb_define_const(cSignal, "FLAGS_MASK", INT2NUM(G_SIGNAL_FLAGS_MASK));
833
-
834
- rb_define_method(cSignal, "run_first?", query_is_G_SIGNAL_RUN_FIRST, 0);
835
- rb_define_method(cSignal, "run_last?", query_is_G_SIGNAL_RUN_LAST, 0);
836
- rb_define_method(cSignal, "run_cleanup?", query_is_G_SIGNAL_RUN_CLEANUP, 0);
837
- rb_define_method(cSignal, "no_recurse?", query_is_G_SIGNAL_NO_RECURSE, 0);
838
- rb_define_method(cSignal, "detailed?", query_is_G_SIGNAL_DETAILED, 0);
839
- rb_define_method(cSignal, "action?", query_is_G_SIGNAL_ACTION, 0);
840
- rb_define_method(cSignal, "no_hooks?", query_is_G_SIGNAL_NO_HOOKS, 0);
841
-
842
-
843
- /* GConnectFlags */
844
- G_DEF_CLASS(G_TYPE_CONNECT_FLAGS, "ConnectFlags", mGLib);
845
- G_DEF_CONSTANTS(cSignal, G_TYPE_CONNECT_FLAGS, "G_");
846
-
847
- /* GSignalMatchType */
848
- cSignalMatchType = G_DEF_CLASS(G_TYPE_SIGNAL_MATCH_TYPE,
849
- "SignalMatchType", mGLib);
850
- G_DEF_CONSTANTS(cSignal, G_TYPE_SIGNAL_MATCH_TYPE, "G_SIGNAL_");
851
- rb_define_const(cSignalMatchType, "MASK", INT2NUM(G_SIGNAL_MATCH_MASK));
852
- rb_define_const(cSignal, "MATCH_MASK", INT2NUM(G_SIGNAL_MATCH_MASK));
853
-
854
- rb_define_const(cSignal, "TYPE_STATIC_SCOPE", INT2FIX(G_SIGNAL_TYPE_STATIC_SCOPE));
855
-
856
- eNoSignalError = rb_define_class_under(mGLib, "NoSignalError", rb_eNameError);
857
- }
858
-
859
838
  /**********************************************************************/
860
839
 
861
840
  void
@@ -897,7 +876,7 @@ rbgobj_define_action_methods(VALUE klass)
897
876
  source,
898
877
  "def %s(%s)\n signal_emit('%s'%s)\nend\n",
899
878
  method_name,
900
- (query.n_params > 0) ? args->str + 1 : "", // hack
879
+ (query.n_params > 0) ? args->str + 1 : "", // Skip initial ','
901
880
  query.signal_name,
902
881
  args->str);
903
882
 
@@ -914,9 +893,85 @@ rbgobj_define_action_methods(VALUE klass)
914
893
  /**********************************************************************/
915
894
 
916
895
  void
917
- Init_gobject_gsignal()
896
+ Init_gobject_gsignal(void)
918
897
  {
919
- Init_signal_class();
920
- Init_signal_misc();
921
- }
898
+ VALUE cSignalFlags, cSignalMatchType;
899
+
900
+ RG_TARGET_NAMESPACE = rb_define_class_under(mGLib, "Signal", rb_cData);
901
+
902
+ RG_DEF_METHOD(id, 0);
903
+ RG_DEF_METHOD(name, 0);
904
+ RG_DEF_METHOD(flags, 0);
905
+ RG_DEF_METHOD(itype, 0);
906
+ RG_DEF_METHOD(owner, 0);
907
+ RG_DEF_METHOD(return_type, 0);
908
+ RG_DEF_METHOD(param_types, 0);
909
+ RG_DEF_METHOD(inspect, 0);
910
+
911
+ RG_DEF_METHOD(add_emission_hook, -1);
912
+ RG_DEF_METHOD(remove_emission_hook, 1);
913
+
914
+ /* GSignalFlags */
915
+ cSignalFlags = G_DEF_CLASS(G_TYPE_SIGNAL_FLAGS, "SignalFlags", mGLib);
916
+ G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, G_TYPE_SIGNAL_FLAGS, "G_SIGNAL_");
917
+ rb_define_const(cSignalFlags, "MASK", INT2NUM(G_SIGNAL_FLAGS_MASK));
918
+ rb_define_const(RG_TARGET_NAMESPACE, "FLAGS_MASK", INT2NUM(G_SIGNAL_FLAGS_MASK));
919
+
920
+ rb_define_method(RG_TARGET_NAMESPACE, "run_first?", query_is_G_SIGNAL_RUN_FIRST, 0);
921
+ rb_define_method(RG_TARGET_NAMESPACE, "run_last?", query_is_G_SIGNAL_RUN_LAST, 0);
922
+ rb_define_method(RG_TARGET_NAMESPACE, "run_cleanup?", query_is_G_SIGNAL_RUN_CLEANUP, 0);
923
+ rb_define_method(RG_TARGET_NAMESPACE, "no_recurse?", query_is_G_SIGNAL_NO_RECURSE, 0);
924
+ rb_define_method(RG_TARGET_NAMESPACE, "detailed?", query_is_G_SIGNAL_DETAILED, 0);
925
+ rb_define_method(RG_TARGET_NAMESPACE, "action?", query_is_G_SIGNAL_ACTION, 0);
926
+ rb_define_method(RG_TARGET_NAMESPACE, "no_hooks?", query_is_G_SIGNAL_NO_HOOKS, 0);
927
+
928
+ /* GConnectFlags */
929
+ G_DEF_CLASS(G_TYPE_CONNECT_FLAGS, "ConnectFlags", mGLib);
930
+ G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, G_TYPE_CONNECT_FLAGS, "G_");
931
+
932
+ /* GSignalMatchType */
933
+ cSignalMatchType = G_DEF_CLASS(G_TYPE_SIGNAL_MATCH_TYPE,
934
+ "SignalMatchType", mGLib);
935
+ G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, G_TYPE_SIGNAL_MATCH_TYPE, "G_SIGNAL_");
936
+ rb_define_const(cSignalMatchType, "MASK", INT2NUM(G_SIGNAL_MATCH_MASK));
937
+ rb_define_const(RG_TARGET_NAMESPACE, "MATCH_MASK", INT2NUM(G_SIGNAL_MATCH_MASK));
938
+
939
+ rb_define_const(RG_TARGET_NAMESPACE, "TYPE_STATIC_SCOPE", INT2FIX(G_SIGNAL_TYPE_STATIC_SCOPE));
940
+
941
+ eNoSignalError = rb_define_class_under(mGLib, "NoSignalError", rb_eNameError);
942
+
943
+ signal_func_table = rb_hash_new();
944
+ rb_global_variable(&signal_func_table);
945
+
946
+ rb_define_method(mMetaInterface, "signal_new", gobj_s_signal_new, -1);
947
+ rb_define_method(mMetaInterface, "signals", gobj_s_signals, -1);
948
+ rb_define_method(mMetaInterface, "signal", gobj_s_signal, 1);
949
+
950
+ rb_define_method(cInstantiatable, "signal_has_handler_pending?",
951
+ gobj_sig_has_handler_pending, -1);
952
+ rb_define_method(cInstantiatable, "signal_connect", gobj_sig_connect, -1);
953
+ rb_define_method(cInstantiatable, "signal_connect_after",
954
+ gobj_sig_connect_after, -1);
922
955
 
956
+ #if 0
957
+ rb_define_method(cInstantiatable, "signal_invocation_hint",
958
+ gobj_sig_get_invocation_hint, 0);
959
+ #endif
960
+
961
+ rb_define_method(cInstantiatable, "signal_emit",
962
+ gobj_sig_emit, -1);
963
+ rb_define_method(cInstantiatable, "signal_emit_stop",
964
+ gobj_sig_emit_stop, 1);
965
+ rb_define_method(cInstantiatable, "signal_handler_block",
966
+ gobj_sig_handler_block, 1);
967
+ rb_define_method(cInstantiatable, "signal_handler_unblock",
968
+ gobj_sig_handler_unblock, 1);
969
+ rb_define_method(cInstantiatable, "signal_handler_disconnect",
970
+ gobj_sig_handler_disconnect, 1);
971
+
972
+ rb_define_method(cInstantiatable, "signal_handler_is_connected?",
973
+ gobj_sig_handler_is_connected, 1);
974
+
975
+ rb_define_singleton_method(cInstantiatable, "method_added",
976
+ gobj_s_method_added, 1);
977
+ }