glib2 1.0.3 → 1.1.0

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.
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,124 +1,39 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /**********************************************************************
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2006 Kouhei Sutou
5
+ *
6
+ * This library is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU Lesser General Public
8
+ * License as published by the Free Software Foundation; either
9
+ * version 2.1 of the License, or (at your option) any later version.
10
+ *
11
+ * This library is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ * Lesser General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU Lesser General Public
17
+ * License along with this library; if not, write to the Free Software
18
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
+ * MA 02110-1301 USA
20
+ */
3
21
 
4
- rbglib_unicode.c -
5
-
6
- $Author: ktou $
7
- $Date: 2007/08/30 10:16:35 $
8
-
9
- Copyright (C) 2006 Kouhei Sutou
10
-
11
- **********************************************************************/
12
22
  #include "rbgprivate.h"
13
23
  #include "rbglib.h"
14
24
 
15
- static VALUE
16
- rbg_ucs4_to_rval_len(const gchar* ucs4, gsize len)
17
- {
18
- const gchar *ucs4_encoding;
19
- #if G_BYTE_ORDER == G_LITTLE_ENDIAN
20
- ucs4_encoding = "UTF-32LE";
21
- #else
22
- ucs4_encoding = "UTF-32BE";
23
- #endif
24
-
25
- return CSTR2RVAL_LEN_ENC(ucs4, len, ucs4_encoding);
26
- }
27
-
28
- static VALUE
29
- rbg_utf16_to_rval_len(const gchar* utf16, gsize len)
30
- {
31
- const gchar *utf16_encoding;
32
- #if G_BYTE_ORDER == G_LITTLE_ENDIAN
33
- utf16_encoding = "UTF-16LE";
34
- #else
35
- utf16_encoding = "UTF-16BE";
36
- #endif
37
-
38
- return CSTR2RVAL_LEN_ENC(utf16, len, utf16_encoding);
39
- }
25
+ #define RG_TARGET_NAMESPACE mUnicode
40
26
 
41
27
  static VALUE
42
- rbglib_m_charset(VALUE self)
28
+ rbglib_m_charset(G_GNUC_UNUSED VALUE self)
43
29
  {
44
30
  const char *charset;
45
31
  g_get_charset(&charset);
46
32
  return CSTR2RVAL(charset);
47
33
  }
48
34
 
49
- #define DEF_IS_UNICHAR(name) \
50
- static VALUE \
51
- rbglib_m_unichar_is ## name(VALUE self, VALUE unichar) \
52
- { \
53
- return CBOOL2RVAL(g_unichar_is ## name(NUM2UINT(unichar))); \
54
- }
55
-
56
- DEF_IS_UNICHAR(alnum)
57
- DEF_IS_UNICHAR(alpha)
58
- DEF_IS_UNICHAR(cntrl)
59
- DEF_IS_UNICHAR(digit)
60
- DEF_IS_UNICHAR(graph)
61
- DEF_IS_UNICHAR(lower)
62
- DEF_IS_UNICHAR(print)
63
- DEF_IS_UNICHAR(punct)
64
- DEF_IS_UNICHAR(space)
65
- DEF_IS_UNICHAR(upper)
66
- DEF_IS_UNICHAR(xdigit)
67
- DEF_IS_UNICHAR(title)
68
- DEF_IS_UNICHAR(defined)
69
- DEF_IS_UNICHAR(wide)
70
- #if GLIB_CHECK_VERSION(2,12,0)
71
- DEF_IS_UNICHAR(wide_cjk)
72
- #endif
73
-
74
- #undef DEF_IS_UNICHAR
75
-
76
- static VALUE
77
- rbglib_m_unichar_toupper(VALUE self, VALUE unichar)
78
- {
79
- return UINT2NUM(g_unichar_toupper(NUM2UINT(unichar)));
80
- }
81
-
82
- static VALUE
83
- rbglib_m_unichar_tolower(VALUE self, VALUE unichar)
84
- {
85
- return UINT2NUM(g_unichar_tolower(NUM2UINT(unichar)));
86
- }
87
-
88
- static VALUE
89
- rbglib_m_unichar_totitle(VALUE self, VALUE unichar)
90
- {
91
- return UINT2NUM(g_unichar_totitle(NUM2UINT(unichar)));
92
- }
93
-
94
- static VALUE
95
- rbglib_m_unichar_digit_value(VALUE self, VALUE unichar)
96
- {
97
- return INT2NUM(g_unichar_digit_value(NUM2UINT(unichar)));
98
- }
99
-
100
- static VALUE
101
- rbglib_m_unichar_xdigit_value(VALUE self, VALUE unichar)
102
- {
103
- return INT2NUM(g_unichar_xdigit_value(NUM2UINT(unichar)));
104
- }
105
-
106
35
  static VALUE
107
- rbglib_m_unichar_type(VALUE self, VALUE unichar)
108
- {
109
- return GENUM2RVAL(g_unichar_type(NUM2UINT(unichar)),
110
- G_TYPE_UNICODE_TYPE);
111
- }
112
-
113
- static VALUE
114
- rbglib_m_unichar_break_type(VALUE self, VALUE unichar)
115
- {
116
- return GENUM2RVAL(g_unichar_break_type(NUM2UINT(unichar)),
117
- G_TYPE_UNICODE_BREAK_TYPE);
118
- }
119
-
120
- static VALUE
121
- rbglib_m_unicode_canonical_ordering(VALUE self, VALUE rb_ucs4)
36
+ rg_s_canonical_ordering(G_GNUC_UNUSED VALUE self, VALUE rb_ucs4)
122
37
  {
123
38
  VALUE normalized_ucs4;
124
39
  gchar *original_str;
@@ -129,512 +44,47 @@ rbglib_m_unicode_canonical_ordering(VALUE self, VALUE rb_ucs4)
129
44
  len = RSTRING_LEN(rb_ucs4);
130
45
  ucs4 = g_memdup(original_str, len);
131
46
  g_unicode_canonical_ordering(ucs4, len);
132
- normalized_ucs4 = rbg_ucs4_to_rval_len((const char *)ucs4, len);
47
+ normalized_ucs4 = CSTR2RVAL_LEN_UCS4((const char *)ucs4, len);
133
48
  g_free(ucs4);
134
49
  return normalized_ucs4;
135
50
  }
136
51
 
137
52
  static VALUE
138
- rbglib_m_unicode_canonical_decomposition(VALUE self, VALUE unichar)
53
+ rg_s_canonical_decomposition(G_GNUC_UNUSED VALUE self, VALUE unichar)
139
54
  {
140
55
  VALUE normalized_ucs4;
141
56
  gunichar *ucs4;
142
57
  gsize len;
143
58
 
144
59
  ucs4 = g_unicode_canonical_decomposition(NUM2UINT(unichar), &len);
145
- normalized_ucs4 = rbg_ucs4_to_rval_len((const char *)ucs4,
60
+ normalized_ucs4 = CSTR2RVAL_LEN_UCS4((const char *)ucs4,
146
61
  len * sizeof(gunichar));
147
62
  g_free(ucs4);
148
63
  return normalized_ucs4;
149
64
  }
150
65
 
151
- #if GLIB_CHECK_VERSION(2,4,0)
152
- static VALUE
153
- rbglib_m_unichar_get_mirror_char(VALUE self, VALUE unichar)
154
- {
155
- gunichar mirrored_char;
156
-
157
- if (g_unichar_get_mirror_char(NUM2UINT(unichar), &mirrored_char)) {
158
- return UINT2NUM(mirrored_char);
159
- } else {
160
- return unichar;
161
- }
162
- }
163
- #endif
164
-
165
- #if GLIB_CHECK_VERSION(2,14,0)
166
- static VALUE
167
- rbglib_m_unichar_combining_class(VALUE self, VALUE unichar)
168
- {
169
- return INT2NUM(g_unichar_combining_class(NUM2UINT(unichar)));
170
- }
171
-
172
- static VALUE
173
- rbglib_m_unichar_get_script(VALUE self, VALUE unichar)
174
- {
175
- return GENUM2RVAL(g_unichar_get_script(NUM2UINT(unichar)),
176
- G_TYPE_UNICODE_SCRIPT);
177
- }
178
-
179
- static VALUE
180
- rbglib_m_unichar_ismark(VALUE self, VALUE unichar)
181
- {
182
- return CBOOL2RVAL(g_unichar_ismark(NUM2UINT(unichar)));
183
- }
184
-
185
- static VALUE
186
- rbglib_m_unichar_iszerowidth(VALUE self, VALUE unichar)
187
- {
188
- return CBOOL2RVAL(g_unichar_iszerowidth(NUM2UINT(unichar)));
189
- }
190
- #endif
191
-
192
- static VALUE
193
- rbglib_m_utf8_get_char(int argc, VALUE *argv, VALUE self)
194
- {
195
- VALUE utf8, validate;
196
- gunichar result;
197
-
198
- rb_scan_args(argc, argv, "11", &utf8, &validate);
199
-
200
- if (RVAL2CBOOL(validate)) {
201
- StringValue(utf8);
202
- result = g_utf8_get_char_validated(RSTRING_PTR(utf8),
203
- RSTRING_LEN(utf8));
204
- if (result == (gunichar)-1) {
205
- return INT2NUM(-1);
206
- } else if (result == (gunichar)-2) {
207
- return INT2NUM(-2);
208
- }
209
- } else {
210
- result = g_utf8_get_char(StringValueCStr(utf8));
211
- }
212
-
213
- return UINT2NUM(result);
214
- }
215
-
216
- static VALUE
217
- rbglib_m_utf8_strlen(VALUE self, VALUE rb_utf8)
218
- {
219
- gchar *utf8;
220
-
221
- utf8 = StringValueCStr(rb_utf8);
222
- return INT2NUM(g_utf8_strlen(utf8, RSTRING_LEN(rb_utf8)));
223
- }
224
-
225
- static VALUE
226
- rbglib_m_utf8_strreverse(VALUE self, VALUE rb_utf8)
227
- {
228
- VALUE result;
229
- gchar *utf8, *reversed_utf8;
230
-
231
- utf8 = StringValueCStr(rb_utf8);
232
- reversed_utf8 = g_utf8_strreverse(utf8, RSTRING_LEN(rb_utf8));
233
- result = CSTR2RVAL(reversed_utf8);
234
- g_free(reversed_utf8);
235
- return result;
236
- }
237
-
238
- static VALUE
239
- rbglib_m_utf8_validate(VALUE self, VALUE str)
240
- {
241
- StringValue(str);
242
- return CBOOL2RVAL(g_utf8_validate(RSTRING_PTR(str), RSTRING_LEN(str),
243
- NULL));
244
- }
245
-
246
- static VALUE
247
- rbglib_m_utf8_strup(VALUE self, VALUE rb_utf8)
248
- {
249
- VALUE result;
250
- gchar *utf8, *upcased_utf8;
251
-
252
- utf8 = StringValueCStr(rb_utf8);
253
- upcased_utf8 = g_utf8_strup(utf8, RSTRING_LEN(rb_utf8));
254
- result = CSTR2RVAL(upcased_utf8);
255
- g_free(upcased_utf8);
256
- return result;
257
- }
258
-
259
- static VALUE
260
- rbglib_m_utf8_strdown(VALUE self, VALUE rb_utf8)
261
- {
262
- VALUE result;
263
- gchar *utf8, *downcased_utf8;
264
-
265
- utf8 = StringValueCStr(rb_utf8);
266
- downcased_utf8 = g_utf8_strdown(utf8, RSTRING_LEN(rb_utf8));
267
- result = CSTR2RVAL(downcased_utf8);
268
- g_free(downcased_utf8);
269
- return result;
270
- }
271
-
272
- static VALUE
273
- rbglib_m_utf8_casefold(VALUE self, VALUE rb_utf8)
274
- {
275
- VALUE result;
276
- gchar *utf8, *casefolded_utf8;
277
-
278
- utf8 = StringValueCStr(rb_utf8);
279
- casefolded_utf8 = g_utf8_casefold(utf8, RSTRING_LEN(rb_utf8));
280
- result = CSTR2RVAL(casefolded_utf8);
281
- g_free(casefolded_utf8);
282
- return result;
283
- }
284
-
285
- static VALUE
286
- rbglib_m_utf8_normalize(int argc, VALUE *argv, VALUE self)
287
- {
288
- VALUE rb_utf8, rb_mode, result;
289
- gchar *utf8, *normalized_utf8;
290
- GNormalizeMode mode = G_NORMALIZE_DEFAULT;
291
-
292
- rb_scan_args(argc, argv, "11", &rb_utf8, &rb_mode);
293
-
294
- if (!NIL_P(rb_mode))
295
- mode = RVAL2GENUM(rb_mode, G_TYPE_NORMALIZE_MODE);
296
-
297
- utf8 = StringValueCStr(rb_utf8);
298
- normalized_utf8 = g_utf8_normalize(utf8, RSTRING_LEN(rb_utf8), mode);
299
- result = CSTR2RVAL(normalized_utf8);
300
- g_free(normalized_utf8);
301
- return result;
302
- }
303
-
304
- static VALUE
305
- rbglib_m_utf8_collate(VALUE self, VALUE utf8a, VALUE utf8b)
306
- {
307
- return INT2NUM(g_utf8_collate(StringValueCStr(utf8a),
308
- StringValueCStr(utf8b)));
309
- }
310
-
311
- static VALUE
312
- rbglib_m_utf8_collate_key(int argc, VALUE *argv, VALUE self)
313
- {
314
- VALUE result, rb_utf8, for_filename;
315
- gchar *key, *utf8;
316
- gssize len;
317
-
318
- rb_scan_args(argc, argv, "11", &rb_utf8, &for_filename);
319
-
320
- utf8 = StringValueCStr(rb_utf8);
321
- len = RSTRING_LEN(rb_utf8);
322
- #if GLIB_CHECK_VERSION(2,8,0)
323
- if (RVAL2CBOOL(for_filename))
324
- key = g_utf8_collate_key_for_filename(utf8, len);
325
- else
326
- #endif
327
- key = g_utf8_collate_key(utf8, len);
328
-
329
- result = CSTR2RVAL(key);
330
- g_free(key);
331
- return result;
332
- }
333
-
334
- static VALUE
335
- rbglib_m_utf8_to_utf16(VALUE self, VALUE rb_utf8)
336
- {
337
- VALUE result;
338
- gchar *utf8;
339
- gunichar2 *utf16;
340
- glong len, items_written;
341
- GError *error = NULL;
342
-
343
- utf8 = StringValueCStr(rb_utf8);
344
- len = RSTRING_LEN(rb_utf8);
345
-
346
- utf16 = g_utf8_to_utf16(utf8, len, NULL, &items_written, &error);
347
-
348
- if (error)
349
- RAISE_GERROR(error);
350
-
351
- result = rbg_utf16_to_rval_len((char *)utf16,
352
- items_written * sizeof(*utf16));
353
- g_free(utf16);
354
- return result;
355
- }
356
-
357
- static VALUE
358
- rbglib_m_utf8_to_ucs4(int argc, VALUE *argv, VALUE self)
359
- {
360
- VALUE result, rb_utf8, is_fast;
361
- gchar *utf8;
362
- gunichar *ucs4;
363
- glong len, items_written;
364
-
365
- rb_scan_args(argc, argv, "11", &rb_utf8, &is_fast);
366
-
367
- utf8 = StringValueCStr(rb_utf8);
368
- len = RSTRING_LEN(rb_utf8);
369
-
370
- if (RVAL2CBOOL(is_fast)) {
371
- ucs4 = g_utf8_to_ucs4_fast(utf8, len, &items_written);
372
- } else {
373
- GError *error = NULL;
374
- ucs4 = g_utf8_to_ucs4(utf8, len, NULL, &items_written, &error);
375
-
376
- if (error)
377
- RAISE_GERROR(error);
378
- }
379
-
380
- result = rbg_ucs4_to_rval_len((char *)ucs4, items_written * sizeof(*ucs4));
381
- g_free(ucs4);
382
- return result;
383
- }
384
-
385
- static VALUE
386
- rbglib_m_utf16_to_ucs4(VALUE self, VALUE rb_utf16)
387
- {
388
- VALUE result;
389
- gunichar *ucs4;
390
- gunichar2 *utf16;
391
- glong len, items_written;
392
- GError *error = NULL;
393
-
394
- utf16 = (gunichar2 *)StringValueCStr(rb_utf16);
395
- len = RSTRING_LEN(rb_utf16) / sizeof(*utf16);
396
-
397
- ucs4 = g_utf16_to_ucs4(utf16, len, NULL, &items_written, &error);
398
-
399
- if (error)
400
- RAISE_GERROR(error);
401
-
402
- result = rbg_ucs4_to_rval_len((char *)ucs4, items_written * sizeof(*ucs4));
403
- g_free(ucs4);
404
- return result;
405
- }
406
-
407
- static VALUE
408
- rbglib_m_utf16_to_utf8(VALUE self, VALUE rb_utf16)
409
- {
410
- VALUE result;
411
- gchar *utf8;
412
- gunichar2 *utf16;
413
- glong len, items_written;
414
- GError *error = NULL;
415
-
416
- utf16 = (gunichar2 *)StringValueCStr(rb_utf16);
417
- len = RSTRING_LEN(rb_utf16) / sizeof(*utf16);
418
-
419
- utf8 = g_utf16_to_utf8(utf16, len, NULL, &items_written, &error);
420
-
421
- if (error)
422
- RAISE_GERROR(error);
423
-
424
- result = CSTR2RVAL_LEN(utf8, items_written * sizeof(*utf8));
425
- g_free(utf8);
426
- return result;
427
- }
428
-
429
- static VALUE
430
- rbglib_m_ucs4_to_utf16(VALUE self, VALUE rb_ucs4)
431
- {
432
- VALUE result;
433
- gunichar *ucs4;
434
- gunichar2 *utf16;
435
- glong len, items_written;
436
- GError *error = NULL;
437
-
438
- ucs4 = (gunichar *)StringValuePtr(rb_ucs4);
439
- len = RSTRING_LEN(rb_ucs4) / sizeof(*ucs4);
440
-
441
- utf16 = g_ucs4_to_utf16(ucs4, len, NULL, &items_written, &error);
442
-
443
- if (error)
444
- RAISE_GERROR(error);
445
-
446
- result = rbg_utf16_to_rval_len((char *)utf16,
447
- items_written * sizeof(*utf16));
448
- g_free(utf16);
449
- return result;
450
- }
451
-
452
- static VALUE
453
- rbglib_m_ucs4_to_utf8(VALUE self, VALUE rb_ucs4)
454
- {
455
- VALUE result;
456
- gunichar *ucs4;
457
- gchar *utf8;
458
- glong len, items_written;
459
- GError *error = NULL;
460
-
461
- ucs4 = (gunichar *)StringValuePtr(rb_ucs4);
462
- len = RSTRING_LEN(rb_ucs4) / sizeof(*ucs4);
463
-
464
- utf8 = g_ucs4_to_utf8(ucs4, len, NULL, &items_written, &error);
465
-
466
- if (error)
467
- RAISE_GERROR(error);
468
-
469
- result = CSTR2RVAL_LEN(utf8, items_written);
470
- g_free(utf8);
471
- return result;
472
- }
473
-
474
- static VALUE
475
- rbglib_m_unichar_to_utf8(VALUE self, VALUE unichar)
476
- {
477
- gchar utf8[6];
478
- gint len;
479
-
480
- len = g_unichar_to_utf8(NUM2UINT(unichar), utf8);
481
- return CSTR2RVAL_LEN(utf8, len);
482
- }
483
-
484
66
  void
485
67
  Init_glib_unicode(void)
486
68
  {
487
- VALUE mGLibUniChar, mGLibUnicode, mGLibUTF8, mGLibUTF16, mGLibUCS4;
488
-
489
- mGLibUniChar = rb_define_module_under(mGLib, "UniChar");
490
- mGLibUnicode = rb_define_module_under(mGLib, "Unicode");
491
- mGLibUTF8 = rb_define_module_under(mGLib, "UTF8");
492
- mGLibUTF16 = rb_define_module_under(mGLib, "UTF16");
493
- mGLibUCS4 = rb_define_module_under(mGLib, "UCS4");
69
+ VALUE RG_TARGET_NAMESPACE = rb_define_module_under(mGLib, "Unicode");
494
70
 
495
71
  /* GUnicodeType */
496
- G_DEF_CLASS(G_TYPE_UNICODE_TYPE, "Type", mGLibUnicode);
497
- G_DEF_CONSTANTS(mGLibUnicode, G_TYPE_UNICODE_TYPE, "G_UNICODE_");
72
+ G_DEF_CLASS(G_TYPE_UNICODE_TYPE, "Type", RG_TARGET_NAMESPACE);
73
+ G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, G_TYPE_UNICODE_TYPE, "G_UNICODE_");
498
74
  /* GUnicodeBreakType */
499
- G_DEF_CLASS(G_TYPE_UNICODE_BREAK_TYPE, "BreakType", mGLibUnicode);
500
- G_DEF_CONSTANTS(mGLibUnicode, G_TYPE_UNICODE_BREAK_TYPE, "G_UNICODE_");
75
+ G_DEF_CLASS(G_TYPE_UNICODE_BREAK_TYPE, "BreakType", RG_TARGET_NAMESPACE);
76
+ G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, G_TYPE_UNICODE_BREAK_TYPE, "G_UNICODE_");
501
77
 
502
78
  #if GLIB_CHECK_VERSION(2,14,0)
503
79
  /* GUnicodeScript */
504
- G_DEF_CLASS(G_TYPE_UNICODE_SCRIPT, "Script", mGLibUnicode);
505
- G_DEF_CONSTANTS(mGLibUnicode, G_TYPE_UNICODE_SCRIPT, "G_UNICODE_");
80
+ G_DEF_CLASS(G_TYPE_UNICODE_SCRIPT, "Script", RG_TARGET_NAMESPACE);
81
+ G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, G_TYPE_UNICODE_SCRIPT, "G_UNICODE_");
506
82
  #endif
507
83
 
508
84
  G_DEF_CLASS(G_TYPE_NORMALIZE_MODE, "NormalizeMode", mGLib);
509
85
 
510
86
  rb_define_module_function(mGLib, "charset", rbglib_m_charset, 0);
511
87
 
512
- rb_define_module_function(mGLibUniChar, "alnum?",
513
- rbglib_m_unichar_isalnum, 1);
514
- rb_define_module_function(mGLibUniChar, "alpha?",
515
- rbglib_m_unichar_isalpha, 1);
516
- rb_define_module_function(mGLibUniChar, "cntrl?",
517
- rbglib_m_unichar_iscntrl, 1);
518
- rb_define_module_function(mGLibUniChar, "digit?",
519
- rbglib_m_unichar_isdigit, 1);
520
- rb_define_module_function(mGLibUniChar, "graph?",
521
- rbglib_m_unichar_isgraph, 1);
522
- rb_define_module_function(mGLibUniChar, "lower?",
523
- rbglib_m_unichar_islower, 1);
524
- rb_define_module_function(mGLibUniChar, "print?",
525
- rbglib_m_unichar_isprint, 1);
526
- rb_define_module_function(mGLibUniChar, "punct?",
527
- rbglib_m_unichar_ispunct, 1);
528
- rb_define_module_function(mGLibUniChar, "space?",
529
- rbglib_m_unichar_isspace, 1);
530
- rb_define_module_function(mGLibUniChar, "upper?",
531
- rbglib_m_unichar_isupper, 1);
532
- rb_define_module_function(mGLibUniChar, "xdigit?",
533
- rbglib_m_unichar_isxdigit, 1);
534
- rb_define_module_function(mGLibUniChar, "title?",
535
- rbglib_m_unichar_istitle, 1);
536
- rb_define_module_function(mGLibUniChar, "defined?",
537
- rbglib_m_unichar_isdefined, 1);
538
- rb_define_module_function(mGLibUniChar, "wide?",
539
- rbglib_m_unichar_iswide, 1);
540
- #if GLIB_CHECK_VERSION(2,12,0)
541
- rb_define_module_function(mGLibUniChar, "wide_cjk?",
542
- rbglib_m_unichar_iswide_cjk, 1);
543
- #endif
544
-
545
- rb_define_module_function(mGLibUniChar, "to_upper",
546
- rbglib_m_unichar_toupper, 1);
547
- rb_define_module_function(mGLibUniChar, "to_lower",
548
- rbglib_m_unichar_tolower, 1);
549
- rb_define_module_function(mGLibUniChar, "to_title",
550
- rbglib_m_unichar_totitle, 1);
551
-
552
- rb_define_module_function(mGLibUniChar, "digit_value",
553
- rbglib_m_unichar_digit_value, 1);
554
- rb_define_module_function(mGLibUniChar, "xdigit_value",
555
- rbglib_m_unichar_xdigit_value, 1);
556
-
557
- rb_define_module_function(mGLibUniChar, "type", rbglib_m_unichar_type, 1);
558
- rb_define_module_function(mGLibUniChar, "break_type",
559
- rbglib_m_unichar_break_type, 1);
560
-
561
- rb_define_singleton_method(mGLibUnicode, "canonical_ordering",
562
- rbglib_m_unicode_canonical_ordering, 1);
563
- rb_define_singleton_method(mGLibUnicode, "canonical_decomposition",
564
- rbglib_m_unicode_canonical_decomposition, 1);
565
-
566
- #if GLIB_CHECK_VERSION(2,4,0)
567
- rb_define_module_function(mGLibUniChar, "get_mirror_char",
568
- rbglib_m_unichar_get_mirror_char, 1);
569
- #endif
570
-
571
- #if GLIB_CHECK_VERSION(2,14,0)
572
- rb_define_module_function(mGLibUniChar, "combining_class",
573
- rbglib_m_unichar_combining_class, 1);
574
- rb_define_module_function(mGLibUniChar, "get_script",
575
- rbglib_m_unichar_get_script, 1);
576
- rb_define_module_function(mGLibUniChar, "mark?",
577
- rbglib_m_unichar_ismark, 1);
578
- rb_define_module_function(mGLibUniChar, "zero_width?",
579
- rbglib_m_unichar_iszerowidth, 1);
580
- #endif
581
-
582
- /*
583
- Not implemented.
584
- g_utf8_next_char
585
- */
586
- rb_define_module_function(mGLibUTF8, "get_char",
587
- rbglib_m_utf8_get_char, -1);
588
- /*
589
- Not implemented.
590
- g_utf8_offset_to_pointer
591
- g_utf8_pointer_to_offset
592
- g_utf8_prev_char
593
- g_utf8_find_next_char
594
- g_utf8_find_prev_char
595
- g_utf8_prev_char
596
- */
597
- rb_define_module_function(mGLibUTF8, "size", rbglib_m_utf8_strlen, 1);
598
- /*
599
- Not implemented.
600
- g_utf8_strncpy
601
- g_utf8_strrchr
602
- */
603
- rb_define_module_function(mGLibUTF8, "reverse",
604
- rbglib_m_utf8_strreverse, 1);
605
- rb_define_module_function(mGLibUTF8, "validate",
606
- rbglib_m_utf8_validate, 1);
607
-
608
- rb_define_module_function(mGLibUTF8, "upcase",
609
- rbglib_m_utf8_strup, 1);
610
- rb_define_module_function(mGLibUTF8, "downcase",
611
- rbglib_m_utf8_strdown, 1);
612
- rb_define_module_function(mGLibUTF8, "casefold",
613
- rbglib_m_utf8_casefold, 1);
614
-
615
- rb_define_module_function(mGLibUTF8, "normalize",
616
- rbglib_m_utf8_normalize, -1);
617
-
618
- rb_define_module_function(mGLibUTF8, "collate",
619
- rbglib_m_utf8_collate, 2);
620
- rb_define_module_function(mGLibUTF8, "collate_key",
621
- rbglib_m_utf8_collate_key, -1);
622
-
623
- rb_define_module_function(mGLibUTF8, "to_utf16",
624
- rbglib_m_utf8_to_utf16, 1);
625
- rb_define_module_function(mGLibUTF8, "to_ucs4",
626
- rbglib_m_utf8_to_ucs4, -1);
627
-
628
- rb_define_module_function(mGLibUTF16, "to_ucs4",
629
- rbglib_m_utf16_to_ucs4, 1);
630
- rb_define_module_function(mGLibUTF16, "to_utf8",
631
- rbglib_m_utf16_to_utf8, 1);
632
-
633
- rb_define_module_function(mGLibUCS4, "to_utf16",
634
- rbglib_m_ucs4_to_utf16, 1);
635
- rb_define_module_function(mGLibUCS4, "to_utf8",
636
- rbglib_m_ucs4_to_utf8, 1);
637
-
638
- rb_define_module_function(mGLibUniChar, "to_utf8",
639
- rbglib_m_unichar_to_utf8, 1);
88
+ RG_DEF_SMETHOD(canonical_ordering, 1);
89
+ RG_DEF_SMETHOD(canonical_decomposition, 1);
640
90
  }