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,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
  }