summaryrefslogtreecommitdiff
path: root/src/libical-glib/api/i-cal-component.xml
blob: ad55c04357230f3b87abb9d99bc2bc3c2ba04738 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
<!--
  Copyright (C) 2015 William Yu <williamyu@gnome.org>

  This library is free software: you can redistribute it and/or modify it
  under the terms of version 2.1. of the GNU Lesser General Public License
  as published by the Free Software Foundation.

  This library is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
  for more details.

  You should have received a copy of the GNU Lesser General Public License
  along with this library. If not, see <https://www.gnu.org/licenses/>.
-->
<structure namespace="ICal" name="Component" native="icalcomponent" destroy_func="icalcomponent_free" includes="libical-glib/i-cal-parameter.h">
    <method name="i_cal_component_new" corresponds="icalcomponent_new" kind="constructor" since="1.0">
        <parameter type="ICalComponentKind" name="kind" comment="The #ICalComponentKind"/>
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a new #ICalComponent with specific type.</comment>
    </method>
    <method name="i_cal_component_clone" corresponds="icalcomponent_clone" kind="clone" since="3.1">
        <parameter type="const ICalComponent *" name="component" comment="The #ICalComponent to be created."/>
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly deeply cloned #ICalComponent."/>
        <comment xml:space="preserve">Deeply clone a #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_new_from_string" corresponds="icalcomponent_new_from_string" kind="constructor" since="1.0">
        <parameter type="const gchar *" name="str" comment="The string used to create #ICalComponent"/>
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent based on @str."/>
        <comment xml:space="preserve">Creates a new #ICalComponent based on a string.</comment>
    </method>
    <method name="i_cal_component_new_x" corresponds="icalcomponent_new_x" kind="constructor" since="1.0">
        <parameter type="const gchar *" name="x_name" comment="The name of x property"/>
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a new #ICalComponent based on name of x property.</comment>
    </method>
    <method name="i_cal_component_free" corresponds="icalcomponent_free" annotation="skip" kind="destructor" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="The #ICalComponent to be freed"/>
        <comment xml:space="preserve">Frees a #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_as_ical_string" corresponds="icalcomponent_as_ical_string_r" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="The #ICalComponent to be converted"/>
        <returns type="gchar *" annotation="transfer full" comment="The string representation of #ICalComponent."/>
        <comment xml:space="preserve">Converts a #ICalComponent to a string.</comment>
    </method>
    <method name="i_cal_component_is_valid" corresponds="icalcomponent_is_valid" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="The #ICalComponent to be checked"/>
        <returns type="gboolean" comment="1 if yes, 0 if not."/>
        <comment xml:space="preserve">Checks whether #ICalComponent is valid.</comment>
    </method>
    <method name="i_cal_component_isa" corresponds="icalcomponent_isa" since="1.0">
        <parameter type="const ICalComponent *" name="component" comment="The #ICalComponent to be checked"/>
        <returns type="ICalComponentKind" error_return_value="I_CAL_NO_COMPONENT" comment="A #ICalComponentKind."/>
        <comment xml:space="preserve">Gets the type of #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_isa_component" corresponds="icalcomponent_isa_component" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="The #ICalComponent to be checked"/>
        <returns type="gint" comment="1 if yes, 0 if not."/>
        <comment xml:space="preserve">Checks whether the native part of #ICalComponent is icalcomponent.</comment>
    </method>
    <method name="i_cal_component_add_property" corresponds="icalcomponent_add_property" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="A #ICalComponent"/>
        <parameter type="ICalProperty *" name="property" translator_argus="component" comment="An #ICalProperty"/>
        <comment xml:space="preserve">Adds an #ICalProperty into #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_take_property" corresponds="CUSTOM" annotation="skip" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="An #ICalComponent"/>
        <parameter type="ICalProperty *" name="property" annotation="transfer full" comment="An #ICalProperty"/>
        <comment xml:space="preserve">Adds the @property into the @component and unrefs the @property.</comment>
        <custom>    g_return_if_fail(I_CAL_IS_COMPONENT(component));
    g_return_if_fail(I_CAL_IS_PROPERTY(property));

    i_cal_component_add_property(component, property);
    g_object_unref(property);</custom>
    </method>
    <method name="i_cal_component_remove_property" corresponds="icalcomponent_remove_property" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="A #ICalComponent"/>
        <parameter type="ICalProperty *" name="property" owner_op="REMOVE" comment="A #ICalProperty"/>
        <comment xml:space="preserve">Removes #ICalProperty from #ICalComponent. Caution: The compare is based on address. So you must use the original #ICalProperty as the target.</comment>
    </method>
    <method name="i_cal_component_count_properties" corresponds="icalcomponent_count_properties" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="The #ICalComponent"/>
        <parameter type="ICalPropertyKind" name="kind" comment="A #ICalPropertyKind"/>
        <returns type="gint" comment="The number of #ICalProperty."/>
        <comment xml:space="preserve">Counts the number of #ICalProperty in #ICalComponent.</comment>
    </method>
    <method name="i_cal_property_get_parent" corresponds="icalproperty_get_parent" since="2.0">
        <parameter type="ICalProperty *" name="property" comment="The #ICalProperty"/>
        <returns type="ICalComponent *" annotation="transfer full, nullable" translator_argus="(GObject *)property" comment="The parent #ICalComponent of #ICalProperty."/>
        <comment xml:space="preserve">Gets the parent component of the property. Use with caution. When icalproperty is deallocated, it won't deallocate its parent. However the #ICalComponent object created using this method will be deallocated (if no reference in other places). So You need to make sure there is another reference except the one in #ICalProperty.</comment>
    </method>
    <method name="i_cal_property_set_parent" corresponds="icalproperty_set_parent" since="3.0">
        <parameter type="ICalProperty *" name="property" comment="An #ICalProperty"/>
        <parameter type="ICalComponent *" name="component" annotation="nullable" comment="An #ICalComponent"/>
        <comment xml:space="preserve">Sets the parent #ICalComponent of the specified #ICalProperty.</comment>
    </method>
    <method name="i_cal_property_get_datetime_with_component" corresponds="icalproperty_get_datetime_with_component" kind="get" since="3.0.5">
        <parameter type="ICalProperty *" name="prop" comment="An #ICalProperty"/>
        <parameter type="ICalComponent *" name="comp" annotation="nullable" comment="An #ICalComponent"/>
        <returns type="ICalTime *" annotation="transfer full" comment="Get a DATE or DATE-TIME property as an #ICalTime."/>
        <comment xml:space="preserve">If the property is a DATE-TIME with a TZID parameter and a corresponding VTIMEZONE is present in the component, the returned component will already be in the correct timezone; otherwise the caller is responsible for converting it.
 *
 * The @comp can be NULL, in which case the parent of the @prop is used to find the corresponding time zone.</comment>
    </method>
    <method name="i_cal_component_get_current_property" corresponds="icalcomponent_get_current_property" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="A #ICalComponent"/>
        <returns type="ICalProperty *" annotation="transfer full" translator_argus="(GObject *)component" comment="The current #ICalProperty."/>
        <comment xml:space="preserve">Gets the current #ICalProperty in #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_first_property" corresponds="icalcomponent_get_first_property" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="A #ICalComponent"/>
        <parameter type="ICalPropertyKind" name="kind" comment="A #ICalPropertyKind"/>
        <returns type="ICalProperty *" annotation="transfer full, nullable" translator_argus="(GObject *)component" comment="The first #ICalProperty."/>
        <comment xml:space="preserve">Gets the first #ICalProperty with specific kind in #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_next_property" corresponds="icalcomponent_get_next_property" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="A #ICalComponent"/>
        <parameter type="ICalPropertyKind" name="kind" comment="A #ICalPropertyKind"/>
        <returns type="ICalProperty *" annotation="transfer full, nullable" translator_argus="(GObject *)component" comment="The next #ICalProperty."/>
        <comment xml:space="preserve">Gets the next #ICalProperty with specific kind in #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_inner" corresponds="icalcomponent_get_inner" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="ICalComponent *" annotation="transfer full, nullable" translator_argus="(GObject *)comp" comment="The first VEVENT, VTODO or VJOURNAL sub-component."/>
        <comment xml:space="preserve">Returns the first VEVENT, VTODO or VJOURNAL sub-component of cop, or comp if it is one of those types.</comment>
    </method>
    <method name="i_cal_component_add_component" corresponds="icalcomponent_add_component" since="1.0">
        <parameter type="ICalComponent *" name="parent" comment="A #ICalComponent"/>
        <parameter type="ICalComponent *" name="child" translator_argus="(GObject*) parent" comment="A child #ICalComponent"/>
        <comment xml:space="preserve">Adds a #ICalComponent into another #ICalComponent as a child component.</comment>
    </method>
    <method name="i_cal_component_take_component" corresponds="CUSTOM" annotation="skip" since="1.0">
        <parameter type="ICalComponent *" name="parent" comment="A #ICalComponent"/>
        <parameter type="ICalComponent *" name="child" annotation="transfer full" comment="A child #ICalComponent"/>
        <comment xml:space="preserve">Adds the @child into the @parent as a child component and unrefs the @child.</comment>
        <custom>    g_return_if_fail(I_CAL_IS_COMPONENT(parent));
    g_return_if_fail(I_CAL_IS_COMPONENT(child));

    i_cal_component_add_component(parent, child);
    g_object_unref(child);</custom>
    </method>
    <method name="i_cal_component_remove_component" corresponds="icalcomponent_remove_component" since="1.0">
        <parameter type="ICalComponent *" name="parent" comment="A #ICalComponent"/>
        <parameter type="ICalComponent *" name="child" owner_op="REMOVE" comment="A child #ICalComponent"/>
        <comment xml:space="preserve">Removes a child #ICalComponent from another #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_count_components" corresponds="icalcomponent_count_components" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="The #ICalComponent to be checked"/>
        <parameter type="ICalComponentKind" name="kind" comment="The target #ICalComponentKind"/>
        <returns type="gint" comment="The count of child #ICalComponent in the parent one."/>
        <comment xml:space="preserve">Counts the child #ICalComponent with the target kind in the parent one.</comment>
    </method>
    <method name="i_cal_component_get_parent" corresponds="icalcomponent_get_parent" since="3.0">
        <parameter type="ICalComponent *" name="component" comment="The #ICalComponent"/>
        <returns type="ICalComponent *" annotation="transfer full, nullable" translator_argus="(GObject *)component" comment="The parent #ICalComponent of the @component."/>
        <comment xml:space="preserve">Gets the parent component of the @component.</comment>
    </method>
    <method name="i_cal_component_set_parent" corresponds="icalcomponent_set_parent" since="3.0">
        <parameter type="ICalComponent *" name="component" comment="An #ICalComponent, a child"/>
        <parameter type="ICalComponent *" name="parent" annotation="nullable" comment="An #ICalComponent, a new parent"/>
        <comment xml:space="preserve">Sets the @parent #ICalComponent of the specified @component.</comment>
    </method>
    <method name="i_cal_component_merge_component" corresponds="icalcomponent_merge_component" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="The #ICalComponent"/>
        <parameter type="ICalComponent *" name="comp_to_merge" annotation="in" native_op="STEAL" comment="A #ICalComponent. After merged it will not exist any more."/>
        <comment xml:space="preserve">Takes 2 VCALENDAR components and merges the second one into the first, resolving any problems with conflicting TZIDs. comp_to_merge will no longer exist after calling this function.</comment>
    </method>
    <method name="i_cal_component_get_current_component" corresponds="icalcomponent_get_current_component" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="A #ICalComponent"/>
        <returns type="ICalComponent *" annotation="transfer full" translator_argus="(GObject *)component" comment="The current #ICalComponent."/>
        <comment xml:space="preserve">Gets the current #ICalComponent in #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_first_component" corresponds="icalcomponent_get_first_component" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="A #ICalComponent"/>
        <parameter type="ICalComponentKind" name="kind" comment="A #ICalComponentKind"/>
        <returns type="ICalComponent *" annotation="transfer full, nullable" translator_argus="(GObject *)component" comment="The first #ICalComponent."/>
        <comment xml:space="preserve">Gets the first #ICalComponent with specific kind in #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_next_component" corresponds="icalcomponent_get_next_component" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="A #ICalComponent"/>
        <parameter type="ICalComponentKind" name="kind" comment="A #ICalComponentKind"/>
        <returns type="ICalComponent *" annotation="transfer full, nullable" translator_argus="(GObject *)component" comment="The next #ICalComponent."/>
        <comment xml:space="preserve">Gets the next #ICalComponent with specific kind in #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_begin_component" corresponds="CUSTOM" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="A #ICalComponent"/>
        <parameter type="ICalComponentKind" name="kind" comment="A #ICalComponentKind"/>
        <returns type="ICalCompIter *" annotation="transfer full" comment="A #ICalCompIter"/>
        <comment xml:space="preserve">Gets the #ICalCompIter pointing to the first child #ICalComponent.</comment>
        <custom>    ICalCompIter *iter;

    g_return_val_if_fail (I_CAL_IS_COMPONENT (component), NULL);

    iter = i_cal_comp_iter_new_full(icalcomponent_begin_component((icalcomponent *)i_cal_object_get_native(I_CAL_OBJECT (component)), (icalcomponent_kind) (kind)));
    if (iter) {
        i_cal_object_set_owner(I_CAL_OBJECT(iter), G_OBJECT(component));
        i_cal_object_set_always_destroy(I_CAL_OBJECT(iter), TRUE);
    }

    return iter;</custom>
    </method>
    <method name="i_cal_component_end_component" corresponds="CUSTOM" since="1.0">
        <parameter type="ICalComponent *" name="component" comment="A #ICalComponent"/>
        <parameter type="ICalComponentKind" name="kind" comment="A #ICalComponentKind"/>
        <returns type="ICalCompIter *" annotation="transfer full" comment="A #ICalCompIter"/>
        <comment xml:space="preserve">Gets the #ICalCompIter pointing to the end child #ICalComponent.</comment>
        <custom>    ICalCompIter *iter;
    g_return_val_if_fail (I_CAL_IS_COMPONENT (component), NULL);

    iter = i_cal_comp_iter_new_full(icalcomponent_end_component((icalcomponent *)i_cal_object_get_native(I_CAL_OBJECT (component)), (icalcomponent_kind) (kind)));
    if (iter) {
        i_cal_object_set_owner(I_CAL_OBJECT(iter), G_OBJECT(component));
        i_cal_object_set_always_destroy(I_CAL_OBJECT(iter), TRUE);
    }

    return iter;</custom>
    </method>
    <method name="i_cal_comp_iter_next" corresponds="CUSTOM" since="1.0">
        <parameter type="ICalCompIter *" name="i" native_op="POINTER" comment="A #ICalCompIter"/>
        <returns type="ICalComponent *" annotation="transfer full" comment="A #ICalCompIter"/>
        <comment xml:space="preserve">Gets the next #ICalComponent pointed by #ICalCompIter.</comment>
        <custom>    ICalComponent *comp;

    g_return_val_if_fail (I_CAL_IS_COMP_ITER (i), NULL);

    comp = i_cal_component_new_full(icalcompiter_next((struct icalcompiter *)i_cal_object_get_native(I_CAL_OBJECT (i))), NULL);
    if (comp) {
        GObject *owner = i_cal_object_ref_owner(I_CAL_OBJECT(i));
        i_cal_object_set_owner(I_CAL_OBJECT(comp), owner);
        g_clear_object(&amp;owner);
    }

    return comp;</custom>
    </method>
    <method name="i_cal_comp_iter_prior" corresponds="CUSTOM" since="1.0">
        <parameter type="ICalCompIter *" name="i" native_op="POINTER" comment="A #ICalCompIter"/>
        <returns type="ICalComponent *" annotation="transfer full" comment="A #ICalCompIter"/>
        <comment xml:space="preserve">Gets the prior #ICalComponent pointed by #ICalCompIter.</comment>
        <custom>    ICalComponent *comp;

    g_return_val_if_fail (I_CAL_IS_COMP_ITER (i), NULL);

    comp = i_cal_component_new_full(icalcompiter_prior((struct icalcompiter *)i_cal_object_get_native(I_CAL_OBJECT (i))), NULL);
    if (comp) {
        GObject *owner = i_cal_object_ref_owner(I_CAL_OBJECT(i));
        i_cal_object_set_owner(I_CAL_OBJECT(comp), owner);
        g_clear_object(&amp;owner);
    }

    return comp;</custom>
    </method>
    <method name="i_cal_comp_iter_deref" corresponds="CUSTOM" since="1.0">
        <parameter type="ICalCompIter *" name="i" native_op="POINTER" comment="A #ICalCompIter"/>
        <returns type="ICalComponent *" annotation="transfer full" comment="A #ICalComponent"/>
        <comment xml:space="preserve">Gets the current #ICalComponent pointed by #ICalCompIter.</comment>
        <custom>    ICalComponent *comp;

    g_return_val_if_fail (I_CAL_IS_COMP_ITER (i), NULL);

    comp = i_cal_component_new_full(icalcompiter_deref((struct icalcompiter *)i_cal_object_get_native(I_CAL_OBJECT (i))), NULL);
    if (comp) {
        GObject *owner = i_cal_object_ref_owner(I_CAL_OBJECT(i));
        i_cal_object_set_owner(I_CAL_OBJECT(comp), owner);
        g_clear_object(&amp;owner);
    }

    return comp;</custom>
    </method>
    <method name="i_cal_component_check_restrictions" corresponds="icalcomponent_check_restrictions" kind="other" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="The #ICalComponent to be checked"/>
        <returns type="gint" comment="The number of restrictions in @comp"/>
        <comment xml:space="preserve">Checks the number of restrictions in #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_count_errors" corresponds="icalcomponent_count_errors" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="gint" comment="The count of errors."/>
        <comment xml:space="preserve">Counts the number of errors in #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_strip_errors" corresponds="icalcomponent_strip_errors" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <comment xml:space="preserve">Removes all X-LIC-ERROR properties.</comment>
    </method>
    <method name="i_cal_component_convert_errors" corresponds="icalcomponent_convert_errors" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <comment xml:space="preserve">Converts some X-LIC-ERROR properties into RETURN-STATUS properties.</comment>
    </method>
    <method name="i_cal_component_kind_is_valid" corresponds="icalcomponent_kind_is_valid" since="1.0">
        <parameter type="const ICalComponentKind" name="kind" comment="A #ICalComponentKind"/>
        <returns type="gboolean" comment="1 if @kind id a #ICalComponent but not the I_CAL_NO_COMPONENT, 0 if not."/>
        <comment xml:space="preserve">Checks if a #ICalComponentKind is valid.</comment>
    </method>
    <method name="i_cal_component_kind_from_string" corresponds="icalcomponent_string_to_kind" since="1.0">
        <parameter type="const gchar *" name="string" comment="A string"/>
        <returns type="ICalComponentKind" error_return_value="I_CAL_NO_COMPONENT" comment="A #ICalComponentKind"/>
        <comment xml:space="preserve">Converts a string to a #ICalComponentKind.</comment>
    </method>
    <method name="i_cal_component_kind_to_string" corresponds="icalcomponent_kind_to_string" since="1.0">
        <parameter type="ICalComponentKind" name="kind" comment="A #ICalComponentKind"/>
        <returns type="const gchar *" annotation="transfer none" comment="The string representation of @kind."/>
        <comment xml:space="preserve">Converts a #ICalComponentKind to a string.</comment>
    </method>
    <method name="i_cal_component_get_first_real_component" corresponds="icalcomponent_get_first_real_component" since="1.0">
        <parameter type="ICalComponent *" name="c" comment="A VCOMPONENT type of #ICalComponent"/>
        <returns type="ICalComponent *" annotation="transfer full" translator_argus="(GObject *)c" comment="A reference to the first VEVENT, VTODO or VJOURNAL"/>
        <comment xml:space="preserve">For VCOMPONENT: Returns a reference to the first VEVENT, VTODO or VJOURNAL.</comment>
    </method>
    <method name="i_cal_component_get_span" corresponds="icalcomponent_get_span" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="ICalTimeSpan *" annotation="transfer full" comment="A #ICalTimeSpan."/>
        <comment xml:space="preserve">For VEVENT, VTODO, VJOURNAL and VTIMEZONE: reports the start and end times of an event in UTC.</comment>
    </method>
    <method name="i_cal_component_set_dtstart" corresponds="icalcomponent_set_dtstart" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="ICalTime *" name="v" comment="A #ICalTime"/>
        <comment xml:space="preserve">Sets the dtstart of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_dtstart" corresponds="icalcomponent_get_dtstart" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="ICalTime *" annotation="transfer full" comment="A #ICalTime."/>
        <comment xml:space="preserve">Gets the dtstart of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_dtend" corresponds="icalcomponent_set_dtend" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="ICalTime *" name="v" comment="A #ICalTime"/>
        <comment xml:space="preserve">Sets the dtend of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_dtend" corresponds="icalcomponent_get_dtend" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="ICalTime *" annotation="transfer full" comment="A #ICalTime."/>
        <comment xml:space="preserve">Gets the dtend of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_due" corresponds="icalcomponent_set_due" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="ICalTime *" name="v" comment="A #ICalTime"/>
        <comment xml:space="preserve">Sets the due of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_due" corresponds="icalcomponent_get_due" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="ICalTime *" annotation="transfer full" comment="A #ICalTime."/>
        <comment xml:space="preserve">Gets the due of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_duration" corresponds="icalcomponent_set_duration" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="ICalDuration *" name="v" comment="A #ICalDuration"/>
        <comment xml:space="preserve">Sets the duration of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_duration" corresponds="icalcomponent_get_duration" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="ICalDuration *" annotation="transfer full" comment="An #ICalDuration."/>
        <comment xml:space="preserve">Gets the duration of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_method" corresponds="icalcomponent_set_method" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="ICalPropertyMethod" name="method" comment="A #ICalPropertyMethod"/>
        <comment xml:space="preserve">Sets the method of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_method" corresponds="icalcomponent_get_method" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="ICalPropertyMethod" comment="A #ICalPropertyMethod."/>
        <comment xml:space="preserve">Gets the method of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_dtstamp" corresponds="icalcomponent_set_dtstamp" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="ICalTime *" name="v" comment="A #ICalTime"/>
        <comment xml:space="preserve">Sets the dtstamp of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_dtstamp" corresponds="icalcomponent_get_dtstamp" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="ICalTime *" annotation="transfer full" comment="A #ICalTime."/>
        <comment xml:space="preserve">Gets the dtstamp of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_summary" corresponds="icalcomponent_set_summary" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="const gchar *" name="v" comment="A string representing summary"/>
        <comment xml:space="preserve">Sets the summary of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_summary" corresponds="icalcomponent_get_summary" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="const gchar *" annotation="transfer none" comment="The summary of @comp."/>
        <comment xml:space="preserve">Gets the summary of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_comment" corresponds="icalcomponent_set_comment" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="const gchar *" name="v" comment="A string representing comment"/>
        <comment xml:space="preserve">Sets the comment of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_comment" corresponds="icalcomponent_get_comment" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="const gchar *" annotation="transfer none" comment="The comment of @comp."/>
        <comment xml:space="preserve">Gets the comment of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_uid" corresponds="icalcomponent_set_uid" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="const gchar *" name="v" comment="A string representing uid"/>
        <comment xml:space="preserve">Sets the uid of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_uid" corresponds="icalcomponent_get_uid" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="const gchar *" annotation="transfer none" comment="The uid of @comp."/>
        <comment xml:space="preserve">Gets the uid of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_relcalid" corresponds="icalcomponent_set_relcalid" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="const gchar *" name="v" comment="A string representing relcalid"/>
        <comment xml:space="preserve">Sets the relcalid of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_relcalid" corresponds="icalcomponent_get_relcalid" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="const gchar *" annotation="transfer none" comment="The relcalid of @comp."/>
        <comment xml:space="preserve">Gets the relcalid of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_recurrenceid" corresponds="icalcomponent_set_recurrenceid" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="ICalTime *" name="v" comment="A #ICalTime"/>
        <comment xml:space="preserve">Sets the recurrenceid of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_recurrenceid" corresponds="icalcomponent_get_recurrenceid" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="ICalTime *" annotation="transfer full" comment="A #ICalTime."/>
        <comment xml:space="preserve">Gets the recurrenceid of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_description" corresponds="icalcomponent_set_description" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="const gchar *" name="v" comment="A string representing description"/>
        <comment xml:space="preserve">Sets the description of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_description" corresponds="icalcomponent_get_description" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="const gchar *" annotation="transfer none" comment="The description of @comp."/>
        <comment xml:space="preserve">Gets the description of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_location" corresponds="icalcomponent_set_location" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="const gchar *" name="v" comment="A string representing location"/>
        <comment xml:space="preserve">Sets the location of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_location" corresponds="icalcomponent_get_location" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="const gchar *" annotation="transfer none" comment="The location of @comp."/>
        <comment xml:space="preserve">Gets the location of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_sequence" corresponds="icalcomponent_set_sequence" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="gint" name="v" comment="The sequence number"/>
        <comment xml:space="preserve">Sets the sequence of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_sequence" corresponds="icalcomponent_get_sequence" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="gint" comment="The sequence of @comp."/>
        <comment xml:space="preserve">Gets the sequence of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_set_status" corresponds="icalcomponent_set_status" kind="set" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="ICalPropertyStatus" name="status" comment="A #ICalPropertyStatus"/>
        <comment xml:space="preserve">Sets the status of the #ICalComponent.</comment>
    </method>
    <method name="i_cal_component_get_status" corresponds="icalcomponent_get_status" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <returns type="ICalPropertyStatus" comment="A #ICalPropertyStatus."/>
        <comment xml:space="preserve">Gets the status of the #ICalComponent.</comment>
    </method>
    <declaration position="header" content="typedef void (*ICalComponentForeachTZIDFunc)(ICalParameter *param, gpointer user_data);"/>
    <declaration position="body">
struct ForeachTZIDData {
    void (* callback)(ICalParameter *param, void *user_data);
    void *user_data;
};

static void foreach_tzid_cb(icalparameter *in_param, void *user_data)
{
    ICalParameter *param;
    struct ForeachTZIDData *data = user_data;

    g_return_if_fail (data != NULL);

    param = i_cal_parameter_new_full(in_param, NULL);
    (*(data->callback))(param, data->user_data);
    i_cal_object_steal_native((ICalObject *) param);
    g_object_unref(param);
}</declaration>
    <method name="i_cal_component_foreach_tzid" corresponds="CUSTOM" kind="other" since="3.0.5">
        <parameter type="ICalComponent *" name="comp" comment="The #ICalComponent to be queried"/>
        <parameter type="ICalComponentForeachTZIDFunc" name="callback" annotation="scope call" comment="The callback function"/>
        <parameter type="gpointer" name="user_data" annotation="nullable, closure callback" comment="The data for callback function"/>
        <comment>Applies the same manipulation on every tzid in #ICalComponent.</comment>
        <custom>    struct ForeachTZIDData data;
    icalcomponent *native_comp;

    g_return_if_fail (I_CAL_IS_COMPONENT (comp));
    g_return_if_fail (callback != NULL);

    native_comp = i_cal_object_get_native((ICalObject *) comp);
    g_return_if_fail (native_comp != NULL);

    data.callback = callback;
    data.user_data = user_data;

    icalcomponent_foreach_tzid(native_comp, foreach_tzid_cb, &amp;data);</custom>
    </method>
    <declaration position="header" content="typedef void (*ICalComponentForeachRecurrenceFunc)(ICalComponent *comp, ICalTimeSpan *span, gpointer user_data);"/>
    <declaration position="body">
struct ForeachRecurrenceData {
    ICalComponent *comp;
    void (* callback)(ICalComponent *comp, ICalTimeSpan *span, void *user_data);
    void *user_data;
};

static void foreach_recurrence_cb(icalcomponent *in_comp, struct icaltime_span *in_span, void *user_data)
{
    ICalTimeSpan *span;
    struct ForeachRecurrenceData *data = user_data;

    g_return_if_fail (data != NULL);
    g_return_if_fail (in_span != NULL);
    g_warn_if_fail (i_cal_object_get_native ((ICalObject *)data->comp) == (gpointer) in_comp);

    span = i_cal_time_span_new_full(*in_span);
    (*(data->callback))(data->comp, span, data->user_data);
    g_object_unref(span);
}</declaration>
    <method name="i_cal_component_foreach_recurrence" corresponds="CUSTOM" kind="other" since="3.0.5">
        <parameter type="ICalComponent *" name="comp" comment="The #ICalComponent to be queried"/>
        <parameter type="ICalTime *" name="start" comment="Ignore timespans before this"/>
        <parameter type="ICalTime *" name="end" comment="Ignore timespans after this"/>
        <parameter type="ICalComponentForeachRecurrenceFunc" name="callback" annotation="scope call" comment="Function called for each timespan within the range"/>
        <parameter type="gpointer" name="user_data" annotation="nullable, closure callback" comment="The user data for callback function"/>
        <comment>Cycles through all recurrences of an event. This function will call the specified callback function for once for the base value of DTSTART, and foreach recurring date/time value. It will filter out events that are specified as an EXDATE or an EXRULE.</comment>
        <custom>    struct ForeachRecurrenceData data;
    icalcomponent *native_comp;
    struct icaltimetype *native_start, *native_end;

    g_return_if_fail (I_CAL_IS_COMPONENT (comp));
    g_return_if_fail (I_CAL_IS_TIME(start));
    g_return_if_fail (I_CAL_IS_TIME(end));
    g_return_if_fail (callback != NULL);

    native_comp = i_cal_object_get_native((ICalObject *) comp);
    native_start = i_cal_object_get_native((ICalObject *) start);
    native_end = i_cal_object_get_native((ICalObject *) end);
    g_return_if_fail (native_comp != NULL);
    g_return_if_fail (native_start != NULL);
    g_return_if_fail (native_end != NULL);

    data.comp = comp;
    data.callback = callback;
    data.user_data = user_data;

    icalcomponent_foreach_recurrence(native_comp, *native_start, *native_end, foreach_recurrence_cb, &amp;data);</custom>
    </method>
    <method name="i_cal_component_get_timezone" corresponds="icalcomponent_get_timezone" kind="get" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="const gchar *" name="tzid" comment="A string representing timezone"/>
        <returns type="ICalTimezone *" annotation="transfer full, nullable" translator_argus="(GObject *)comp, FALSE" comment="A #ICalTimezone."/>
        <comment xml:space="preserve">Returns the icaltimezone in the component corresponding to the TZID, or NULL if it can't be found.</comment>
    </method>
    <method name="i_cal_property_recurrence_is_excluded" corresponds="icalproperty_recurrence_is_excluded" since="1.0">
        <parameter type="ICalComponent *" name="comp" comment="A #ICalComponent"/>
        <parameter type="ICalTime *" name="dtstart" native_op="POINTER" comment="The base dtstart value for this component"/>
        <parameter type="ICalTime *" name="recurtime" native_op="POINTER" comment="The time to test against"/>
        <returns type="gboolean" comment="1 if yes, 0 if not."/>
        <comment xml:space="preserve">Decides if this recurrence is acceptable. This function decides if a specific recurrence value is excluded by EXRULE or EXDATE properties.</comment>
    </method>
    <method name="i_cal_component_new_vcalendar" corresponds="icalcomponent_new_vcalendar" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be vcalendar.</comment>
    </method>
    <method name="i_cal_component_new_vevent" corresponds="icalcomponent_new_vevent" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be vevent.</comment>
    </method>
    <method name="i_cal_component_new_vtodo" corresponds="icalcomponent_new_vtodo" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be vtodo.</comment>
    </method>
    <method name="i_cal_component_new_vjournal" corresponds="icalcomponent_new_vjournal" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be vjournal.</comment>
    </method>
    <method name="i_cal_component_new_valarm" corresponds="icalcomponent_new_valarm" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be valarm.</comment>
    </method>
    <method name="i_cal_component_new_vfreebusy" corresponds="icalcomponent_new_vfreebusy" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be vfreebusy.</comment>
    </method>
    <method name="i_cal_component_new_vtimezone" corresponds="icalcomponent_new_vtimezone" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be vtimezone.</comment>
    </method>
    <method name="i_cal_component_new_xstandard" corresponds="icalcomponent_new_xstandard" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be xstandard.</comment>
    </method>
    <method name="i_cal_component_new_xdaylight" corresponds="icalcomponent_new_xdaylight" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be xdaylight.</comment>
    </method>
    <method name="i_cal_component_new_vagenda" corresponds="icalcomponent_new_vagenda" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be vagenda.</comment>
    </method>
    <method name="i_cal_component_new_vquery" corresponds="icalcomponent_new_vquery" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be vquery.</comment>
    </method>
    <method name="i_cal_component_new_vavailability" corresponds="icalcomponent_new_vavailability" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be vavailability.</comment>
    </method>
    <method name="i_cal_component_new_xavailable" corresponds="icalcomponent_new_xavailable" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be xavailable.</comment>
    </method>
    <method name="i_cal_component_new_vpoll" corresponds="icalcomponent_new_vpoll" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be vpoll.</comment>
    </method>
    <method name="i_cal_component_new_vvoter" corresponds="icalcomponent_new_vvoter" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be vvoter.</comment>
    </method>
    <method name="i_cal_component_new_xvote" corresponds="icalcomponent_new_xvote" kind="constructor" since="1.0">
        <returns type="ICalComponent *" annotation="transfer full" comment="The newly created #ICalComponent."/>
        <comment xml:space="preserve">Creates a #ICalComponent with the type to be xvote.</comment>
    </method>
</structure>