gio2 0.90.3

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 (88) hide show
  1. data/ChangeLog +60 -0
  2. data/README +34 -0
  3. data/Rakefile +76 -0
  4. data/ext/gio2/depend +5 -0
  5. data/ext/gio2/extconf.rb +91 -0
  6. data/ext/gio2/gappinfo.c +318 -0
  7. data/ext/gio2/gapplaunchcontext.c +79 -0
  8. data/ext/gio2/gasyncinitable.c +244 -0
  9. data/ext/gio2/gasyncresult.c +39 -0
  10. data/ext/gio2/gbufferedinputstream.c +184 -0
  11. data/ext/gio2/gbufferedoutputstream.c +82 -0
  12. data/ext/gio2/gcancellable.c +177 -0
  13. data/ext/gio2/gcharsetconverter.c +72 -0
  14. data/ext/gio2/gcontenttype.c +135 -0
  15. data/ext/gio2/gconverter.c +117 -0
  16. data/ext/gio2/gconverterinputstream.c +48 -0
  17. data/ext/gio2/gconverteroutputstream.c +48 -0
  18. data/ext/gio2/gdatainputstream.c +341 -0
  19. data/ext/gio2/gdataoutputstream.c +202 -0
  20. data/ext/gio2/gdesktopappinfo.c +90 -0
  21. data/ext/gio2/gdrive.c +267 -0
  22. data/ext/gio2/gemblem.c +71 -0
  23. data/ext/gio2/gemblemedicon.c +63 -0
  24. data/ext/gio2/gfile.c +2058 -0
  25. data/ext/gio2/gfileattribute.c +263 -0
  26. data/ext/gio2/gfileattributematcher.c +90 -0
  27. data/ext/gio2/gfiledescriptorbased.c +42 -0
  28. data/ext/gio2/gfileenumerator.c +167 -0
  29. data/ext/gio2/gfileicon.c +46 -0
  30. data/ext/gio2/gfileinfo.c +641 -0
  31. data/ext/gio2/gfileinputstream.c +92 -0
  32. data/ext/gio2/gfileiostream.c +98 -0
  33. data/ext/gio2/gfilemonitor.c +63 -0
  34. data/ext/gio2/gfilenamecompleter.c +72 -0
  35. data/ext/gio2/gfileoutputstream.c +100 -0
  36. data/ext/gio2/gfilterinputstream.c +56 -0
  37. data/ext/gio2/gfilteroutputstream.c +56 -0
  38. data/ext/gio2/gicon.c +69 -0
  39. data/ext/gio2/ginetaddress.c +188 -0
  40. data/ext/gio2/ginetsocketaddress.c +54 -0
  41. data/ext/gio2/ginitable.c +195 -0
  42. data/ext/gio2/ginputstream.c +341 -0
  43. data/ext/gio2/gio2.c +120 -0
  44. data/ext/gio2/gio2.def +2 -0
  45. data/ext/gio2/gio2.h +343 -0
  46. data/ext/gio2/gioerror.c +67 -0
  47. data/ext/gio2/giomodule.c +63 -0
  48. data/ext/gio2/gioscheduler.c +195 -0
  49. data/ext/gio2/giostream.c +129 -0
  50. data/ext/gio2/gloadableicon.c +91 -0
  51. data/ext/gio2/gmemoryinputstream.c +65 -0
  52. data/ext/gio2/gmemoryoutputstream.c +65 -0
  53. data/ext/gio2/gmount.c +283 -0
  54. data/ext/gio2/gmountoperation.c +168 -0
  55. data/ext/gio2/gnetworkaddress.c +71 -0
  56. data/ext/gio2/gnetworkservice.c +64 -0
  57. data/ext/gio2/goutputstream.c +343 -0
  58. data/ext/gio2/gresolver.c +230 -0
  59. data/ext/gio2/gseekable.c +89 -0
  60. data/ext/gio2/gsimpleasyncresult.c +153 -0
  61. data/ext/gio2/gsocket.c +451 -0
  62. data/ext/gio2/gsocketaddress.c +45 -0
  63. data/ext/gio2/gsocketclient.c +273 -0
  64. data/ext/gio2/gsocketconnectable.c +97 -0
  65. data/ext/gio2/gsocketconnection.c +82 -0
  66. data/ext/gio2/gsocketcontrolmessage.c +82 -0
  67. data/ext/gio2/gsocketlistener.c +239 -0
  68. data/ext/gio2/gsocketservice.c +64 -0
  69. data/ext/gio2/gsrvtarget.c +77 -0
  70. data/ext/gio2/gtcpconnection.c +48 -0
  71. data/ext/gio2/gthemedicon.c +86 -0
  72. data/ext/gio2/gthreadedsocketservice.c +39 -0
  73. data/ext/gio2/gunixconnection.c +69 -0
  74. data/ext/gio2/gunixfdlist.c +112 -0
  75. data/ext/gio2/gunixfdmessage.c +81 -0
  76. data/ext/gio2/gunixinputstream.c +73 -0
  77. data/ext/gio2/gunixmounts.c +346 -0
  78. data/ext/gio2/gunixoutputstream.c +73 -0
  79. data/ext/gio2/gunixsocketaddress.c +79 -0
  80. data/ext/gio2/gvfs.c +84 -0
  81. data/ext/gio2/gvolume.c +191 -0
  82. data/ext/gio2/gvolumemonitor.c +77 -0
  83. data/ext/gio2/gzlibcompressor.c +47 -0
  84. data/ext/gio2/gzlibdecompressor.c +43 -0
  85. data/ext/gio2/util.c +323 -0
  86. data/extconf.rb +49 -0
  87. data/lib/gio2.rb +141 -0
  88. metadata +184 -0
@@ -0,0 +1,46 @@
1
+ /* -*- c-file-style: "ruby" -*- */
2
+ /*
3
+ * Ruby/GIO: a Ruby binding of gio-2.0.x.
4
+ * Copyright (C) 2008-2009 Ruby-GNOME2 Project Team
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.
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
+ */
20
+
21
+ #include "gio2.h"
22
+
23
+ #define _SELF(value) G_FILE_ICON(RVAL2GOBJ(value))
24
+
25
+ static VALUE
26
+ fileicon_initialize(VALUE self, VALUE file)
27
+ {
28
+ G_INITIALIZE(self, g_file_icon_new(RVAL2GFILE(file)));
29
+
30
+ return Qnil;
31
+ }
32
+
33
+ static VALUE
34
+ fileicon_get_file(VALUE self)
35
+ {
36
+ return GOBJ2RVAL(g_file_icon_get_file(_SELF(self)));
37
+ }
38
+
39
+ void
40
+ Init_gfileicon(VALUE glib)
41
+ {
42
+ VALUE fileicon = G_DEF_CLASS(G_TYPE_FILE_ICON, "FileIcon", glib);
43
+
44
+ rb_define_method(fileicon, "initialize", fileicon_initialize, 1);
45
+ rb_define_method(fileicon, "file", fileicon_get_file, 0);
46
+ }
@@ -0,0 +1,641 @@
1
+ /* -*- c-file-style: "ruby" -*- */
2
+ /*
3
+ * Ruby/GIO: a Ruby binding of gio-2.0.x.
4
+ * Copyright (C) 2008-2009 Ruby-GNOME2 Project Team
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.
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
+ */
20
+
21
+ #include "gio2.h"
22
+
23
+ #define _SELF(value) RVAL2GFILEINFO(value)
24
+
25
+ #define GFILEATTRIBUTESTATUS2RVAL(value) \
26
+ GENUM2RVAL((value), G_TYPE_FILE_ATTRIBUTE_STATUS)
27
+
28
+ #define RVAL2GFILEATTRIBUTESTATUS(value) \
29
+ GENUM2RVAL((value), G_TYPE_FILE_ATTRIBUTE_STATUS)
30
+
31
+ #define RVAL2FILEINFONAMESPACEDEFAULT(value) \
32
+ RVAL2TYPE_WITH_DEFAULT((value), RVAL2CSTR, "*")
33
+
34
+ static VALUE
35
+ fileinfo_initialize(VALUE self)
36
+ {
37
+ G_INITIALIZE(self, g_file_info_new());
38
+
39
+ return Qnil;
40
+ }
41
+
42
+ static VALUE
43
+ fileinfo_dup(VALUE self)
44
+ {
45
+ return GOBJ2RVAL_UNREF(g_file_info_dup(_SELF(self)));
46
+ }
47
+
48
+ /* TODO: Does this make sense from the Ruby side? */
49
+ static VALUE
50
+ fileinfo_copy_into(VALUE self, VALUE other)
51
+ {
52
+ g_file_info_copy_into(_SELF(self), _SELF(other));
53
+
54
+ return self;
55
+ }
56
+
57
+ static VALUE
58
+ fileinfo_has_attribute(VALUE self, VALUE attribute)
59
+ {
60
+ return CBOOL2RVAL(g_file_info_has_attribute(_SELF(self), RVAL2CSTR(attribute)));
61
+ }
62
+
63
+ static VALUE
64
+ fileinfo_has_namespace(VALUE self, VALUE namespace)
65
+ {
66
+ return CBOOL2RVAL(g_file_info_has_namespace(_SELF(self), RVAL2CSTR(namespace)));
67
+ }
68
+
69
+ static VALUE
70
+ fileinfo_set_attribute_status(VALUE self, VALUE attribute, VALUE status)
71
+ {
72
+ return CBOOL2RVAL(g_file_info_set_attribute_status(_SELF(self),
73
+ RVAL2CSTR(attribute),
74
+ RVAL2GFILEATTRIBUTESTATUS(status)));
75
+ }
76
+
77
+ static VALUE
78
+ fileinfo_list_attributes(int argc, VALUE *argv, VALUE self)
79
+ {
80
+ VALUE name_space;
81
+
82
+ rb_scan_args(argc, argv, "01", &name_space);
83
+
84
+ return STRVECTOR2ARY_FREE(g_file_info_list_attributes(_SELF(self),
85
+ RVAL2FILEINFONAMESPACEDEFAULT(name_space)));
86
+ }
87
+
88
+ static VALUE
89
+ fileinfo_get_attribute_type(VALUE self, VALUE attribute)
90
+ {
91
+ return GFILEATTRIBUTETYPE2RVAL(g_file_info_get_attribute_type(_SELF(self), RVAL2CSTR(attribute)));
92
+ }
93
+
94
+ static VALUE
95
+ fileinfo_remove_attribute(VALUE self, VALUE attribute)
96
+ {
97
+ g_file_info_remove_attribute(_SELF(self), RVAL2CSTR(attribute));
98
+
99
+ return self;
100
+ }
101
+
102
+ static VALUE
103
+ fileinfo_get_attribute_as_string(VALUE self, VALUE attribute)
104
+ {
105
+ return CSTR2RVAL_FREE(g_file_info_get_attribute_as_string(_SELF(self), RVAL2CSTR(attribute)));
106
+ }
107
+
108
+ static VALUE
109
+ file_attribute_to_value(GFileAttributeType type, gpointer value)
110
+ {
111
+ switch (type) {
112
+ case G_FILE_ATTRIBUTE_TYPE_STRING:
113
+ case G_FILE_ATTRIBUTE_TYPE_BYTE_STRING:
114
+ return CSTR2RVAL(value);
115
+ case G_FILE_ATTRIBUTE_TYPE_BOOLEAN:
116
+ return CBOOL2RVAL(*(gboolean *)value);
117
+ case G_FILE_ATTRIBUTE_TYPE_UINT32:
118
+ return GUINT322RVAL(*(guint32 *)value);
119
+ case G_FILE_ATTRIBUTE_TYPE_INT32:
120
+ return GINT322RVAL(*(gint32 *)value);
121
+ case G_FILE_ATTRIBUTE_TYPE_UINT64:
122
+ return GUINT642RVAL(*(guint64 *)value);
123
+ case G_FILE_ATTRIBUTE_TYPE_INT64:
124
+ return GINT642RVAL(*(gint64 *)value);
125
+ case G_FILE_ATTRIBUTE_TYPE_OBJECT:
126
+ return GOBJ2RVAL((GObject *)value);
127
+ case G_FILE_ATTRIBUTE_TYPE_STRINGV:
128
+ return STRVECTOR2ARY_FREE((char **)value);
129
+ case G_FILE_ATTRIBUTE_TYPE_INVALID:
130
+ rb_raise(rb_eArgError, "invalid file attribute type");
131
+ break;
132
+ default:
133
+ rb_raise(rb_eArgError, "unknown file attribute type");
134
+ break;
135
+ }
136
+ }
137
+
138
+ static VALUE
139
+ fileinfo_get_attribute_data(VALUE self, VALUE attribute)
140
+ {
141
+ GFileAttributeType type;
142
+ gpointer value;
143
+ GFileAttributeStatus status;
144
+
145
+ if (!g_file_info_get_attribute_data(_SELF(self),
146
+ RVAL2CSTR(attribute),
147
+ &type,
148
+ &value,
149
+ &status))
150
+ return Qnil;
151
+
152
+ return rb_ary_new3(3,
153
+ GFILEATTRIBUTETYPE2RVAL(type),
154
+ file_attribute_to_value(type, value),
155
+ GFILEATTRIBUTESTATUS2RVAL(status));
156
+ }
157
+
158
+ static VALUE
159
+ fileinfo_get_attribute_status(VALUE self, VALUE attribute)
160
+ {
161
+ return GFILEATTRIBUTESTATUS2RVAL(g_file_info_get_attribute_status(_SELF(self),
162
+ RVAL2CSTR(attribute)));
163
+ }
164
+
165
+ static VALUE
166
+ fileinfo_get_attribute_string(VALUE self, VALUE attribute)
167
+ {
168
+ return CSTR2RVAL(g_file_info_get_attribute_string(_SELF(self),
169
+ RVAL2CSTR(attribute)));
170
+ }
171
+
172
+ static VALUE
173
+ fileinfo_get_attribute_stringv(VALUE self, VALUE attribute)
174
+ {
175
+ return STRVECTOR2ARY_FREE(g_file_info_get_attribute_stringv(_SELF(self),
176
+ RVAL2CSTR(attribute)));
177
+ }
178
+
179
+ static VALUE
180
+ fileinfo_get_attribute_byte_string(VALUE self, VALUE attribute)
181
+ {
182
+ return CSTR2RVAL(g_file_info_get_attribute_byte_string(_SELF(self),
183
+ RVAL2CSTR(attribute)));
184
+ }
185
+
186
+ static VALUE
187
+ fileinfo_get_attribute_boolean(VALUE self, VALUE attribute)
188
+ {
189
+ return CBOOL2RVAL(g_file_info_get_attribute_boolean(_SELF(self),
190
+ RVAL2CSTR(attribute)));
191
+ }
192
+
193
+ static VALUE
194
+ fileinfo_get_attribute_uint32(VALUE self, VALUE attribute)
195
+ {
196
+ return GUINT322RVAL(g_file_info_get_attribute_uint32(_SELF(self),
197
+ RVAL2CSTR(attribute)));
198
+ }
199
+
200
+ static VALUE
201
+ fileinfo_get_attribute_int32(VALUE self, VALUE attribute)
202
+ {
203
+ return GINT322RVAL(g_file_info_get_attribute_int32(_SELF(self),
204
+ RVAL2CSTR(attribute)));
205
+ }
206
+
207
+ static VALUE
208
+ fileinfo_get_attribute_uint64(VALUE self, VALUE attribute)
209
+ {
210
+ return GUINT642RVAL(g_file_info_get_attribute_uint64(_SELF(self),
211
+ RVAL2CSTR(attribute)));
212
+ }
213
+
214
+ static VALUE
215
+ fileinfo_get_attribute_int64(VALUE self, VALUE attribute)
216
+ {
217
+ return GINT642RVAL(g_file_info_get_attribute_int64(_SELF(self),
218
+ RVAL2CSTR(attribute)));
219
+ }
220
+
221
+ static VALUE
222
+ fileinfo_get_attribute_object(VALUE self, VALUE attribute)
223
+ {
224
+ return GOBJ2RVAL(g_file_info_get_attribute_object(_SELF(self),
225
+ RVAL2CSTR(attribute)));
226
+ }
227
+
228
+ static VALUE
229
+ fileinfo_get_attribute_value(VALUE self, VALUE attribute)
230
+ {
231
+ GFileAttributeType type;
232
+ gpointer value;
233
+ GFileAttributeStatus status;
234
+
235
+ if (!g_file_info_get_attribute_data(_SELF(self),
236
+ RVAL2CSTR(attribute),
237
+ &type,
238
+ &value,
239
+ &status))
240
+ return Qnil;
241
+
242
+ return file_attribute_to_value(type, value);
243
+ }
244
+
245
+ /* TODO: Do we need set_attribute? */
246
+
247
+ static VALUE
248
+ fileinfo_set_attribute_string(VALUE self, VALUE attribute, VALUE value)
249
+ {
250
+ g_file_info_set_attribute_string(_SELF(self),
251
+ RVAL2CSTR(attribute),
252
+ RVAL2CSTR(value));
253
+
254
+ return self;
255
+ }
256
+
257
+ static VALUE
258
+ fileinfo_set_attribute_byte_string(VALUE self, VALUE attribute, VALUE value)
259
+ {
260
+ g_file_info_set_attribute_byte_string(_SELF(self),
261
+ RVAL2CSTR(attribute),
262
+ RVAL2CSTR(value));
263
+
264
+ return self;
265
+ }
266
+
267
+ static VALUE
268
+ fileinfo_set_attribute_boolean(VALUE self, VALUE attribute, VALUE value)
269
+ {
270
+ g_file_info_set_attribute_boolean(_SELF(self),
271
+ RVAL2CSTR(attribute),
272
+ RVAL2CBOOL(value));
273
+
274
+ return self;
275
+ }
276
+
277
+ static VALUE
278
+ fileinfo_set_attribute_uint32(VALUE self, VALUE attribute, VALUE value)
279
+ {
280
+ g_file_info_set_attribute_uint32(_SELF(self),
281
+ RVAL2CSTR(attribute),
282
+ RVAL2GUINT32(value));
283
+
284
+ return self;
285
+ }
286
+
287
+ static VALUE
288
+ fileinfo_set_attribute_int32(VALUE self, VALUE attribute, VALUE value)
289
+ {
290
+ g_file_info_set_attribute_int32(_SELF(self),
291
+ RVAL2CSTR(attribute),
292
+ RVAL2GINT32(value));
293
+
294
+ return self;
295
+ }
296
+
297
+ static VALUE
298
+ fileinfo_set_attribute_uint64(VALUE self, VALUE attribute, VALUE value)
299
+ {
300
+ g_file_info_set_attribute_uint64(_SELF(self),
301
+ RVAL2CSTR(attribute),
302
+ RVAL2GUINT64(value));
303
+
304
+ return self;
305
+ }
306
+
307
+ static VALUE
308
+ fileinfo_set_attribute_int64(VALUE self, VALUE attribute, VALUE value)
309
+ {
310
+ g_file_info_set_attribute_int64(_SELF(self),
311
+ RVAL2CSTR(attribute),
312
+ RVAL2GINT64(value));
313
+
314
+ return self;
315
+ }
316
+
317
+ static VALUE
318
+ fileinfo_set_attribute_object(VALUE self, VALUE attribute, VALUE value)
319
+ {
320
+ g_file_info_set_attribute_object(_SELF(self),
321
+ RVAL2CSTR(attribute),
322
+ RVAL2GOBJ(value));
323
+
324
+ return self;
325
+ }
326
+
327
+ /* TODO: How do we implement set_attribute_value? */
328
+
329
+ static VALUE
330
+ fileinfo_clear_status(VALUE self)
331
+ {
332
+ g_file_info_clear_status(_SELF(self));
333
+
334
+ return self;
335
+ }
336
+
337
+ static VALUE
338
+ fileinfo_get_file_type(VALUE self)
339
+ {
340
+ return GFILETYPE2RVAL(g_file_info_get_file_type(_SELF(self)));
341
+ }
342
+
343
+ static VALUE
344
+ fileinfo_is_hidden(VALUE self)
345
+ {
346
+ return CBOOL2RVAL(g_file_info_get_is_hidden(_SELF(self)));
347
+ }
348
+
349
+ static VALUE
350
+ fileinfo_is_backup(VALUE self)
351
+ {
352
+ return CBOOL2RVAL(g_file_info_get_is_backup(_SELF(self)));
353
+ }
354
+
355
+ static VALUE
356
+ fileinfo_is_symlink(VALUE self)
357
+ {
358
+ return CBOOL2RVAL(g_file_info_get_is_symlink(_SELF(self)));
359
+ }
360
+
361
+ static VALUE
362
+ fileinfo_get_name(VALUE self)
363
+ {
364
+ return CSTR2RVAL(g_file_info_get_name(_SELF(self)));
365
+ }
366
+
367
+ static VALUE
368
+ fileinfo_get_display_name(VALUE self)
369
+ {
370
+ return CSTR2RVAL(g_file_info_get_display_name(_SELF(self)));
371
+ }
372
+
373
+ static VALUE
374
+ fileinfo_get_edit_name(VALUE self)
375
+ {
376
+ return CSTR2RVAL(g_file_info_get_edit_name(_SELF(self)));
377
+ }
378
+
379
+ static VALUE
380
+ fileinfo_get_icon(VALUE self)
381
+ {
382
+ return GOBJ2RVAL(g_file_info_get_icon(_SELF(self)));
383
+ }
384
+
385
+ static VALUE
386
+ fileinfo_get_content_type(VALUE self)
387
+ {
388
+ return CSTR2RVAL(g_file_info_get_content_type(_SELF(self)));
389
+ }
390
+
391
+ static VALUE
392
+ fileinfo_get_size(VALUE self)
393
+ {
394
+ return GOFFSET2RVAL(g_file_info_get_size(_SELF(self)));
395
+ }
396
+
397
+ static VALUE
398
+ fileinfo_get_modification_time(VALUE self)
399
+ {
400
+ GTimeVal time;
401
+
402
+ g_file_info_get_modification_time(_SELF(self), &time);
403
+
404
+ return GTIMEVAL2RVAL(&time);
405
+ }
406
+
407
+ static VALUE
408
+ fileinfo_get_symlink_target(VALUE self)
409
+ {
410
+ return CSTR2RVAL(g_file_info_get_symlink_target(_SELF(self)));
411
+ }
412
+
413
+ static VALUE
414
+ fileinfo_get_etag(VALUE self)
415
+ {
416
+ return CSTR2RVAL(g_file_info_get_etag(_SELF(self)));
417
+ }
418
+
419
+ static VALUE
420
+ fileinfo_get_sort_order(VALUE self)
421
+ {
422
+ return GINT322RVAL(g_file_info_get_sort_order(_SELF(self)));
423
+ }
424
+
425
+ static VALUE
426
+ fileinfo_set_attribute_mask(VALUE self, VALUE rbmask)
427
+ {
428
+ gboolean should_unref;
429
+ GFileAttributeMatcher *mask;
430
+
431
+ if (NIL_P(rbmask)) {
432
+ g_file_info_unset_attribute_mask(_SELF(self));
433
+ return self;
434
+ }
435
+
436
+ if (TYPE(rbmask) == T_STRING) {
437
+ mask = g_file_attribute_matcher_new(RVAL2CSTR(rbmask));
438
+ should_unref = TRUE;
439
+ } else {
440
+ mask = RVAL2GFILEATTRIBUTEMATCHER(rbmask);
441
+ should_unref = FALSE;
442
+ }
443
+
444
+ g_file_info_set_attribute_mask(_SELF(self), mask);
445
+
446
+ if (should_unref)
447
+ g_file_attribute_matcher_unref(mask);
448
+
449
+ return self;
450
+ }
451
+
452
+ static VALUE
453
+ fileinfo_unset_attribute_mask(VALUE self)
454
+ {
455
+ g_file_info_unset_attribute_mask(_SELF(self));
456
+
457
+ return self;
458
+ }
459
+
460
+ static VALUE
461
+ fileinfo_set_file_type(VALUE self, VALUE value)
462
+ {
463
+ g_file_info_set_file_type(_SELF(self), RVAL2GFILETYPE(value));
464
+
465
+ return self;
466
+ }
467
+
468
+ static VALUE
469
+ fileinfo_set_is_hidden(VALUE self, VALUE value)
470
+ {
471
+ g_file_info_set_is_hidden(_SELF(self), RVAL2CBOOL(value));
472
+
473
+ return self;
474
+ }
475
+
476
+ static VALUE
477
+ fileinfo_set_is_symlink(VALUE self, VALUE value)
478
+ {
479
+ g_file_info_set_is_symlink(_SELF(self), RVAL2CBOOL(value));
480
+
481
+ return self;
482
+ }
483
+
484
+ static VALUE
485
+ fileinfo_set_name(VALUE self, VALUE value)
486
+ {
487
+ g_file_info_set_name(_SELF(self), RVAL2CSTR(value));
488
+
489
+ return self;
490
+ }
491
+
492
+ static VALUE
493
+ fileinfo_set_display_name(VALUE self, VALUE value)
494
+ {
495
+ g_file_info_set_display_name(_SELF(self), RVAL2CSTR(value));
496
+
497
+ return self;
498
+ }
499
+
500
+ static VALUE
501
+ fileinfo_set_edit_name(VALUE self, VALUE value)
502
+ {
503
+ g_file_info_set_edit_name(_SELF(self), RVAL2CSTR(value));
504
+
505
+ return self;
506
+ }
507
+
508
+ static VALUE
509
+ fileinfo_set_icon(VALUE self, VALUE value)
510
+ {
511
+ g_file_info_set_icon(_SELF(self), RVAL2GICON(value));
512
+
513
+ return self;
514
+ }
515
+
516
+ static VALUE
517
+ fileinfo_set_content_type(VALUE self, VALUE value)
518
+ {
519
+ g_file_info_set_content_type(_SELF(self), RVAL2CSTR(value));
520
+
521
+ return self;
522
+ }
523
+
524
+ static VALUE
525
+ fileinfo_set_size(VALUE self, VALUE value)
526
+ {
527
+ g_file_info_set_size(_SELF(self), RVAL2GOFFSET(value));
528
+
529
+ return self;
530
+ }
531
+
532
+ static VALUE
533
+ fileinfo_set_modification_time(VALUE self, VALUE rbtime)
534
+ {
535
+ GTimeVal time;
536
+
537
+ rbgio_rval_to_gtimeval(rbtime, &time);
538
+
539
+ g_file_info_set_modification_time(_SELF(self), &time);
540
+
541
+ return self;
542
+ }
543
+
544
+ static VALUE
545
+ fileinfo_set_symlink_target(VALUE self, VALUE value)
546
+ {
547
+ g_file_info_set_symlink_target(_SELF(self), RVAL2CSTR(value));
548
+
549
+ return self;
550
+ }
551
+
552
+ static VALUE
553
+ fileinfo_set_sort_order(VALUE self, VALUE value)
554
+ {
555
+ g_file_info_set_sort_order(_SELF(self), RVAL2GINT32(value));
556
+
557
+ return self;
558
+ }
559
+
560
+ void
561
+ Init_gfileinfo(VALUE glib)
562
+ {
563
+ VALUE fileinfo = G_DEF_CLASS(G_TYPE_FILE_INFO, "FileInfo", glib);
564
+
565
+ G_DEF_CLASS(G_TYPE_FILE_TYPE, "FileType", glib);
566
+ G_DEF_CONSTANTS(glib, G_TYPE_FILE_TYPE, "G_FILE_");
567
+
568
+ rb_define_method(fileinfo, "initialize", fileinfo_initialize, 0);
569
+ rb_define_method(fileinfo, "dup", fileinfo_dup, 0);
570
+ rb_define_method(fileinfo, "copy_into", fileinfo_copy_into, 1);
571
+ rb_define_method(fileinfo, "has_attribute?", fileinfo_has_attribute, 1);
572
+ rb_define_method(fileinfo, "has_namespace?", fileinfo_has_namespace, 1);
573
+ rb_define_method(fileinfo, "attributes", fileinfo_list_attributes, -1);
574
+ rb_define_method(fileinfo, "get_attribute_type", fileinfo_get_attribute_type, 1);
575
+ rb_define_method(fileinfo, "remove_attribute", fileinfo_remove_attribute, 1);
576
+ rb_define_method(fileinfo, "get_attribute_as_string", fileinfo_get_attribute_as_string, 1);
577
+ rb_define_method(fileinfo, "get_attribute_data", fileinfo_get_attribute_data, 1);
578
+ rb_define_method(fileinfo, "get_attribute_status", fileinfo_get_attribute_status, 1);
579
+ rb_define_method(fileinfo, "get_attribute_string", fileinfo_get_attribute_string, 1);
580
+ rb_define_method(fileinfo, "get_attribute_stringv", fileinfo_get_attribute_stringv, 1);
581
+ rb_define_method(fileinfo, "get_attribute_byte_string", fileinfo_get_attribute_byte_string, 1);
582
+ rb_define_method(fileinfo, "get_attribute_boolean", fileinfo_get_attribute_boolean, 1);
583
+ rb_define_method(fileinfo, "get_attribute_uint32", fileinfo_get_attribute_uint32, 1);
584
+ rb_define_method(fileinfo, "get_attribute_int32", fileinfo_get_attribute_int32, 1);
585
+ rb_define_method(fileinfo, "get_attribute_uint64", fileinfo_get_attribute_uint64, 1);
586
+ rb_define_method(fileinfo, "get_attribute_int64", fileinfo_get_attribute_int64, 1);
587
+ rb_define_method(fileinfo, "get_attribute_object", fileinfo_get_attribute_object, 1);
588
+ rb_define_method(fileinfo, "get_attribute_value", fileinfo_get_attribute_value, 1);
589
+ rb_define_alias(fileinfo, "[]", "get_attribute_value");
590
+ rb_define_method(fileinfo, "set_attribute_status", fileinfo_set_attribute_status, 2);
591
+ rb_define_method(fileinfo, "set_attribute_string", fileinfo_set_attribute_string, 2);
592
+ rb_define_method(fileinfo, "set_attribute_byte_string", fileinfo_set_attribute_byte_string, 2);
593
+ rb_define_method(fileinfo, "set_attribute_boolean", fileinfo_set_attribute_boolean, 2);
594
+ rb_define_method(fileinfo, "set_attribute_uint32", fileinfo_set_attribute_uint32, 2);
595
+ rb_define_method(fileinfo, "set_attribute_int32", fileinfo_set_attribute_int32, 2);
596
+ rb_define_method(fileinfo, "set_attribute_uint64", fileinfo_set_attribute_uint64, 2);
597
+ rb_define_method(fileinfo, "set_attribute_int64", fileinfo_set_attribute_int64, 2);
598
+ rb_define_method(fileinfo, "set_attribute_object", fileinfo_set_attribute_object, 2);
599
+ rb_define_method(fileinfo, "clear_status", fileinfo_clear_status, 0);
600
+ rb_define_method(fileinfo, "file_type", fileinfo_get_file_type, 0);
601
+ rb_define_method(fileinfo, "hidden?", fileinfo_is_hidden, 0);
602
+ rb_define_method(fileinfo, "backup?", fileinfo_is_backup, 0);
603
+ rb_define_method(fileinfo, "symlink?", fileinfo_is_symlink, 0);
604
+ rb_define_method(fileinfo, "name", fileinfo_get_name, 0);
605
+ rb_define_method(fileinfo, "display_name", fileinfo_get_display_name, 0);
606
+ rb_define_method(fileinfo, "edit_name", fileinfo_get_edit_name, 0);
607
+ rb_define_method(fileinfo, "icon", fileinfo_get_icon, 0);
608
+ rb_define_method(fileinfo, "content_type", fileinfo_get_content_type, 0);
609
+ rb_define_method(fileinfo, "size", fileinfo_get_size, 0);
610
+ rb_define_method(fileinfo, "modification_time", fileinfo_get_modification_time, 0);
611
+ rb_define_method(fileinfo, "symlink_target", fileinfo_get_symlink_target, 0);
612
+ rb_define_method(fileinfo, "etag", fileinfo_get_etag, 0);
613
+ rb_define_method(fileinfo, "sort_order", fileinfo_get_sort_order, 0);
614
+ rb_define_method(fileinfo, "set_attribute_mask", fileinfo_set_attribute_mask, 1);
615
+ G_DEF_SETTER(fileinfo, "attribute_mask");
616
+ rb_define_method(fileinfo, "unset_attribute_mask", fileinfo_unset_attribute_mask, 0);
617
+ rb_define_method(fileinfo, "set_file_type", fileinfo_set_file_type, 1);
618
+ G_DEF_SETTER(fileinfo, "file_type");
619
+ rb_define_method(fileinfo, "set_hidden", fileinfo_set_is_hidden, 1);
620
+ G_DEF_SETTER(fileinfo, "hidden");
621
+ rb_define_method(fileinfo, "set_symlink", fileinfo_set_is_symlink, 1);
622
+ G_DEF_SETTER(fileinfo, "symlink");
623
+ rb_define_method(fileinfo, "set_name", fileinfo_set_name, 1);
624
+ G_DEF_SETTER(fileinfo, "name");
625
+ rb_define_method(fileinfo, "set_display_name", fileinfo_set_display_name, 1);
626
+ G_DEF_SETTER(fileinfo, "display_name");
627
+ rb_define_method(fileinfo, "set_edit_name", fileinfo_set_edit_name, 1);
628
+ G_DEF_SETTER(fileinfo, "edit_name");
629
+ rb_define_method(fileinfo, "set_icon", fileinfo_set_icon, 1);
630
+ G_DEF_SETTER(fileinfo, "icon");
631
+ rb_define_method(fileinfo, "set_content_type", fileinfo_set_content_type, 1);
632
+ G_DEF_SETTER(fileinfo, "content_type");
633
+ rb_define_method(fileinfo, "set_size", fileinfo_set_size, 1);
634
+ G_DEF_SETTER(fileinfo, "size");
635
+ rb_define_method(fileinfo, "set_modification_time", fileinfo_set_modification_time, 1);
636
+ G_DEF_SETTER(fileinfo, "modification_time");
637
+ rb_define_method(fileinfo, "set_symlink_target", fileinfo_set_symlink_target, 1);
638
+ G_DEF_SETTER(fileinfo, "symlink_target");
639
+ rb_define_method(fileinfo, "set_sort_order", fileinfo_set_sort_order, 1);
640
+ G_DEF_SETTER(fileinfo, "sort_order");
641
+ }