$darkmode
Libical API Documentation 4.0 STABLE VERSION Visit the v3.0 documentation
icalset.h
Go to the documentation of this file.
1 /*
2  SPDX-FileCopyrightText: 2000, Eric Busboom <eric@civicknowledge.com>
3  SPDX-License-Identifier: LGPL-2.1-only OR MPL-2.0
4 
5  The Original Code is eric. The Initial Developer of the Original
6  Code is Eric Busboom
7 */
8 
24 #ifndef ICALSET_H
25 #define ICALSET_H
26 
27 #include "libical_icalss_export.h"
28 #include "icalgauge.h"
29 #include "icalcomponent.h"
30 #include "icalerror.h"
31 
32 typedef struct icalset_impl icalset;
33 
37 typedef enum icalset_kind
38 {
42 } icalset_kind;
43 
44 struct icalcompiter;
45 typedef struct icalsetiter {
46  icalcompiter iter; /* icalcomponent_kind, icalpvl_elem iter */
47  icalgauge *gauge;
48  icalrecur_iterator *ritr; /*the last iterator */
49  icalcomponent *last_component; /*the pending recurring component to be processed */
50  const char *tzid; /* the calendar's timezone id */
51 } icalsetiter;
52 
53 struct icalset_impl {
54  icalset_kind kind;
55  size_t size;
56  char *dsn;
57  icalset *(*init)(icalset *set, const char *dsn, void *options);
58  void (*free)(icalset *set);
59  const char *(*path)(icalset *set);
60  void (*mark)(icalset *set);
61  icalerrorenum (*commit)(icalset *set);
62  icalerrorenum (*add_component)(icalset *set, icalcomponent *comp);
63  icalerrorenum (*remove_component)(icalset *set, icalcomponent *comp);
64  int (*count_components)(icalset *set, icalcomponent_kind kind);
65  icalerrorenum (*select)(icalset *set, icalgauge *gauge);
66  void (*clear)(icalset *set);
67  icalcomponent *(*fetch)(icalset *set, icalcomponent_kind kind, const char *uid);
68  icalcomponent *(*fetch_match)(icalset *set, const icalcomponent *comp);
69  int (*has_uid)(icalset *set, const char *uid);
70  icalerrorenum (*modify)(icalset *set, icalcomponent *old, icalcomponent *newc);
71  icalcomponent *(*get_current_component)(icalset *set);
72  icalcomponent *(*get_first_component)(icalset *set);
73  icalcomponent *(*get_next_component)(icalset *set);
74  icalsetiter (*icalset_begin_component)(icalset *set,
75  icalcomponent_kind kind, icalgauge *gauge,
76  const char *tzid);
77  icalcomponent *(*icalsetiter_to_next)(icalset *set, icalsetiter *i);
78  icalcomponent *(*icalsetiter_to_prior)(icalset *set, icalsetiter *i);
79 };
80 
88 LIBICAL_ICALSS_EXPORT bool icalset_register_class(icalset *set);
89 
102 LIBICAL_ICALSS_EXPORT icalset *icalset_new(icalset_kind kind, const char *dsn, void *options);
103 
104 LIBICAL_ICALSS_EXPORT icalset *icalset_new_file(const char *path);
105 
106 LIBICAL_ICALSS_EXPORT icalset *icalset_new_file_reader(const char *path);
107 
108 LIBICAL_ICALSS_EXPORT icalset *icalset_new_file_writer(const char *path);
109 
110 LIBICAL_ICALSS_EXPORT icalset *icalset_new_dir(const char *path);
111 
116 LIBICAL_ICALSS_EXPORT void icalset_free(icalset *set);
117 
118 LIBICAL_ICALSS_EXPORT const char *icalset_path(icalset *set);
119 
123 LIBICAL_ICALSS_EXPORT void icalset_mark(icalset *set);
124 
128 LIBICAL_ICALSS_EXPORT icalerrorenum icalset_commit(icalset *set);
129 
130 LIBICAL_ICALSS_EXPORT icalerrorenum icalset_add_component(icalset *set, icalcomponent *comp);
131 
132 LIBICAL_ICALSS_EXPORT icalerrorenum icalset_remove_component(icalset *set, icalcomponent *comp);
133 
134 LIBICAL_ICALSS_EXPORT int icalset_count_components(icalset *set, icalcomponent_kind kind);
135 
139 LIBICAL_ICALSS_EXPORT icalerrorenum icalset_select(icalset *set, icalgauge *gauge);
140 
144 LIBICAL_ICALSS_EXPORT icalcomponent *icalset_fetch(icalset *set, const char *uid);
145 
146 LIBICAL_ICALSS_EXPORT int icalset_has_uid(icalset *set, const char *uid);
147 
148 LIBICAL_ICALSS_EXPORT icalcomponent *icalset_fetch_match(icalset *set, const icalcomponent *c);
149 
154 LIBICAL_ICALSS_EXPORT icalerrorenum icalset_modify(icalset *set,
155  icalcomponent *oldc, icalcomponent *newc);
156 
169 LIBICAL_ICALSS_EXPORT icalcomponent *icalset_get_current_component(icalset *set);
170 
178 LIBICAL_ICALSS_EXPORT icalcomponent *icalset_get_first_component(icalset *set);
179 
187 LIBICAL_ICALSS_EXPORT icalcomponent *icalset_get_next_component(icalset *set);
188 
190 LIBICAL_ICALSS_EXPORT extern icalsetiter icalsetiter_null;
191 
192 LIBICAL_ICALSS_EXPORT icalsetiter icalset_begin_component(icalset *set,
193  icalcomponent_kind kind,
194  icalgauge *gauge, const char *tzid);
195 
197 LIBICAL_ICALSS_EXPORT icalcomponent *icalsetiter_next(icalsetiter *i);
198 
199 LIBICAL_ICALSS_EXPORT icalcomponent *icalsetiter_prior(icalsetiter *i);
200 
201 LIBICAL_ICALSS_EXPORT icalcomponent *icalsetiter_deref(icalsetiter *i);
202 
205 LIBICAL_ICALSS_EXPORT icalcomponent *icalsetiter_to_next(icalset *set, icalsetiter *i);
206 
207 LIBICAL_ICALSS_EXPORT icalcomponent *icalsetiter_to_prior(icalset *set, icalsetiter *i);
208 
209 #endif /* !ICALSET_H */
bool icalset_register_class(icalset *set)
icalcomponent * icalset_get_current_component(icalset *set)
Definition: icalset.c:398
Routines implementing a filter for ical components.
icalcomponent * icalsetiter_to_next(icalset *set, icalsetiter *i)
Definition: icalset.c:460
Defines the data structure for iCalendar components.
icalerrorenum icalset_modify(icalset *set, icalcomponent *oldc, icalcomponent *newc)
Definition: icalset.c:393
icalerrorenum icalset_select(icalset *set, icalgauge *gauge)
Definition: icalset.c:368
icalerrorenum
Represents the different types of errors that can be triggered in libical.
Definition: icalerror.h:41
icalcomponent * icalset_get_next_component(icalset *set)
Definition: icalset.c:408
void icalset_free(icalset *set)
Definition: icalset.c:325
void icalset_mark(icalset *set)
Definition: icalset.c:343
Error handling for libical.
icalcomponent * icalset_fetch(icalset *set, const char *uid)
Definition: icalset.c:378
icalset * icalset_new(icalset_kind kind, const char *dsn, void *options)
Definition: icalset.c:193
icalset_kind
Definition: icalset.h:37
icalcomponent * icalset_get_first_component(icalset *set)
Definition: icalset.c:403
icalerrorenum icalset_commit(icalset *set)
Definition: icalset.c:348
icalcomponent_kind
Definition: icalenums.h:28
icalcomponent * icalsetiter_next(icalsetiter *i)
Definition: icalset.c:421
icalsetiter icalsetiter_null
Definition: icalset.c:413