19#include "icalclusterimpl.h"
20#include "icalerror_p.h"
24static icalcluster *icalcluster_new_impl(
void)
26 struct icalcluster_impl *cluster;
28 if ((cluster = (
struct icalcluster_impl *)malloc(
sizeof(
struct icalcluster_impl))) == 0) {
33 memset(cluster, 0,
sizeof(
struct icalcluster_impl));
34 strcpy(cluster->id, ICALCLUSTER_ID);
41 struct icalcluster_impl *cluster = icalcluster_new_impl();
46 assert(cluster->data == 0);
48 cluster->key = strdup(key);
72 struct icalcluster_impl *old_impl = (
struct icalcluster_impl *)old;
73 struct icalcluster_impl *cluster = icalcluster_new_impl();
76 cluster->key = strdup(old_impl->key);
84void icalcluster_free(icalcluster *cluster)
90 if (cluster->key != 0) {
95 if (cluster->data != 0) {
103const char *icalcluster_key(
const icalcluster *cluster)
105 icalerror_check_arg_rz((cluster != 0),
"cluster");
110int icalcluster_is_changed(
const icalcluster *cluster)
112 icalerror_check_arg_rz((cluster != 0),
"cluster");
114 return cluster->changed;
117void icalcluster_mark(icalcluster *cluster)
119 icalerror_check_arg_rv((cluster != 0),
"cluster");
121 cluster->changed = 1;
124void icalcluster_commit(icalcluster *cluster)
126 icalerror_check_arg_rv((cluster != 0),
"cluster");
128 cluster->changed = 0;
131icalcomponent *icalcluster_get_component(
const icalcluster *cluster)
133 icalerror_check_arg_rz((cluster != 0),
"cluster");
138 icalerror_warn(
"The top component is not an XROOT");
140 fprintf(stderr,
"%s\n", obj);
145 return cluster->data;
148icalerrorenum icalcluster_add_component(icalcluster *cluster, icalcomponent *child)
154 icalcluster_mark(cluster);
159icalerrorenum icalcluster_remove_component(icalcluster *cluster, icalcomponent *child)
165 icalcluster_mark(cluster);
181 icalerror_check_arg_rz((cluster != 0),
"cluster");
186icalcomponent *icalcluster_get_first_component(icalcluster *cluster)
188 icalerror_check_arg_rz((cluster != 0),
"cluster");
193icalcomponent *icalcluster_get_next_component(icalcluster *cluster)
195 icalerror_check_arg_rz((cluster != 0),
"cluster");
icalcomponent * icalcluster_get_current_component(icalcluster *cluster)
Iterate through components.
icalcluster * icalcluster_new(const char *key, icalcomponent *data)
Create a cluster with a key/value pair.
icalcluster * icalcluster_clone(const icalcluster *old)
Deep clone an icalcluster to a new one.
Defines the data structure for calendar clusters.
icalcomponent * icalcomponent_get_next_component(icalcomponent *c, icalcomponent_kind kind)
icalcomponent * icalcomponent_get_first_component(icalcomponent *c, icalcomponent_kind kind)
icalcomponent * icalcomponent_get_current_component(icalcomponent *component)
void icalcomponent_remove_component(icalcomponent *parent, icalcomponent *child)
icalcomponent * icalcomponent_new(icalcomponent_kind kind)
icalcomponent * icalcomponent_clone(const icalcomponent *old)
char * icalcomponent_as_ical_string_r(const icalcomponent *component)
icalcomponent_kind icalcomponent_isa(const icalcomponent *component)
void icalcomponent_free(icalcomponent *c)
void icalcomponent_add_component(icalcomponent *parent, icalcomponent *child)
int icalcomponent_count_components(icalcomponent *component, icalcomponent_kind kind)
void icalerror_set_errno(icalerrorenum x)
Sets the icalerrno to a given error.
icalerrorenum
Represents the different types of errors that can be triggered in libical.