Libical  1.0
 All Data Structures Files Functions Variables Typedefs Macros Pages
icalset.h
Go to the documentation of this file.
1 /* -*- Mode: C -*- */
16 /*
17  $Id: icalset.h,v 1.15 2008-01-02 20:07:42 dothebart Exp $
18  $Locker: $
19 
20  (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
21 
22  This program is free software; you can redistribute it and/or modify
23  it under the terms of either:
24 
25  The LGPL as published by the Free Software Foundation, version
26  2.1, available at: http://www.fsf.org/copyleft/lesser.html
27 
28  Or:
29 
30  The Mozilla Public License Version 1.0. You may obtain a copy of
31  the License at http://www.mozilla.org/MPL/
32 
33  The Original Code is eric. The Initial Developer of the Original
34  Code is Eric Busboom
35 
36 
37 ======================================================================*/
38 
39 #ifndef ICALSET_H
40 #define ICALSET_H
41 
42 #include <limits.h> /* For PATH_MAX */
43 #include <libical/ical.h>
44 #include "icalgauge.h"
45 
46 #ifdef PATH_MAX
47 #define ICAL_PATH_MAX PATH_MAX
48 #else
49 #define ICAL_PATH_MAX 1024
50 #endif
51 
52 
53 typedef struct icalset_impl icalset;
54 
55 typedef enum icalset_kind {
56  ICAL_FILE_SET,
57  ICAL_DIR_SET,
58  ICAL_BDB_SET
59 } icalset_kind;
60 
61 typedef struct icalsetiter
62 {
63  icalcompiter iter; /* icalcomponent_kind, pvl_elem iter */
64  icalgauge* gauge;
65  icalrecur_iterator* ritr; /*the last iterator*/
66  icalcomponent* last_component; /*the pending recurring component to be processed */
67  const char* tzid; /* the calendar's timezone id */
68 } icalsetiter;
69 
70 struct icalset_impl {
71  icalset_kind kind;
72  int size;
73  char *dsn;
74  icalset* (*init)(icalset* set, const char *dsn, void *options);
75  void (*free)(icalset* set);
76  const char* (*path)(icalset* set);
77  void (*mark)(icalset* set);
78  icalerrorenum (*commit)(icalset* set);
79  icalerrorenum (*add_component)(icalset* set, icalcomponent* comp);
80  icalerrorenum (*remove_component)(icalset* set, icalcomponent* comp);
81  int (*count_components)(icalset* set,
82  icalcomponent_kind kind);
83  icalerrorenum (*select)(icalset* set, icalgauge* gauge);
84  void (*clear)(icalset* set);
85  icalcomponent* (*fetch)(icalset* set, const char* uid);
86  icalcomponent* (*fetch_match)(icalset* set, icalcomponent *comp);
87  int (*has_uid)(icalset* set, const char* uid);
88  icalerrorenum (*modify)(icalset* set, icalcomponent *old,
89  icalcomponent *newc);
90  icalcomponent* (*get_current_component)(icalset* set);
91  icalcomponent* (*get_first_component)(icalset* set);
92  icalcomponent* (*get_next_component)(icalset* set);
93  icalsetiter (*icalset_begin_component)(icalset* set,
94  icalcomponent_kind kind, icalgauge* gauge);
95  icalcomponent* (*icalsetiter_to_next)(icalset* set, icalsetiter* i);
96  icalcomponent* (*icalsetiter_to_prior)(icalset* set, icalsetiter* i);
97 };
98 
101 
102 
114 icalset* icalset_new(icalset_kind kind, const char* dsn, void* options);
115 
116 icalset* icalset_new_file(const char* path);
117 icalset* icalset_new_file_reader(const char* path);
118 icalset* icalset_new_file_writer(const char* path);
119 
120 icalset* icalset_new_dir(const char* path);
121 icalset* icalset_new_file_reader(const char* path);
122 icalset* icalset_new_file_writer(const char* path);
123 
124 void icalset_free(icalset* set);
125 
126 const char* icalset_path(icalset* set);
127 
130 void icalset_mark(icalset* set);
131 
133 icalerrorenum icalset_commit(icalset* set);
134 
135 icalerrorenum icalset_add_component(icalset* set, icalcomponent* comp);
136 icalerrorenum icalset_remove_component(icalset* set, icalcomponent* comp);
137 
138 int icalset_count_components(icalset* set,
139  icalcomponent_kind kind);
140 
143 icalerrorenum icalset_select(icalset* set, icalgauge* gauge);
144 
146 void icalset_clear_select(icalset* set);
147 
149 icalcomponent* icalset_fetch(icalset* set, const char* uid);
150 
151 int icalset_has_uid(icalset* set, const char* uid);
152 icalcomponent* icalset_fetch_match(icalset* set, icalcomponent *c);
153 
156 icalerrorenum icalset_modify(icalset* set, icalcomponent *oldc,
157  icalcomponent *newc);
158 
163 icalcomponent* icalset_get_first_component(icalset* set);
164 icalcomponent* icalset_get_next_component(icalset* set);
165 
168 
169 icalsetiter icalset_begin_component(icalset* set,
170  icalcomponent_kind kind, icalgauge* gauge);
171 
174 icalcomponent* icalsetiter_prior(icalsetiter* i);
175 icalcomponent* icalsetiter_deref(icalsetiter* i);
176 
179 icalcomponent* icalsetiter_to_prior(icalset* set, icalsetiter* i);
180 
181 #endif /* !ICALSET_H */
182 
183 
184