1 /**
2  * @file    icalparameter_cxx.cpp
3  * @author  fnguyen (12/10/01)
4  * @brief   Implementation of C++ Wrapper for icalparameter.c
5  *
6  * (C) COPYRIGHT 2001, Critical Path
7 
8  This library is free software; you can redistribute it and/or modify
9  it under the terms of either:
10 
11     The LGPL as published by the Free Software Foundation, version
12     2.1, available at: https://www.gnu.org/licenses/lgpl-2.1.html
13 
14  Or:
15 
16     The Mozilla Public License Version 2.0. You may obtain a copy of
17     the License at https://www.mozilla.org/MPL/
18  */
19 
20 #include "icalparameter_cxx.h"
21 using namespace LibICal;
22 
ICalParameter()23 ICalParameter::ICalParameter() : imp(icalparameter_new(ICAL_ANY_PARAMETER))
24 {
25 }
26 
ICalParameter(const ICalParameter & v)27 ICalParameter::ICalParameter(const ICalParameter &v) : imp(icalparameter_new_clone(v.imp))
28 {
29     if (imp == NULL) {
30         throw icalerrno;
31     }
32 }
33 
operator =(const ICalParameter & v)34 ICalParameter &ICalParameter::operator=(const ICalParameter &v)
35 {
36     if (this == &v) {
37         return *this;
38     }
39 
40     if (imp != NULL) {
41         icalparameter_free(imp);
42         imp = icalparameter_new_clone(v.imp);
43         if (imp == NULL) {
44             throw icalerrno;
45         }
46     }
47 
48     return *this;
49 }
50 
detach()51 void ICalParameter::detach()
52 {
53     imp = NULL;
54 }
55 
~ICalParameter()56 ICalParameter::~ICalParameter()
57 {
58     if (imp != NULL) {
59         icalparameter_free(imp);
60     }
61 }
62 
ICalParameter(icalparameter * v)63 ICalParameter::ICalParameter(icalparameter *v) : imp(v)
64 {
65 }
66 
67 /// Create from string of form "PARAMNAME=VALUE"
ICalParameter(const std::string & str)68 ICalParameter::ICalParameter(const std::string &str)
69     : imp(icalparameter_new_from_string(str.c_str()))
70 {
71     if (imp == NULL) {
72         throw icalerrno;
73     }
74 }
75 
76 /// Create from just the value, the part after the "="
ICalParameter(const icalparameter_kind & kind,const std::string & str)77 ICalParameter::ICalParameter(const icalparameter_kind &kind, const std::string &str)
78     : imp(icalparameter_new_from_value_string(kind, str.c_str()))
79 {
80     if (imp == NULL) {
81         throw icalerrno;
82     }
83 }
84 
ICalParameter(const icalparameter_kind & kind)85 ICalParameter::ICalParameter(const icalparameter_kind &kind) : imp(icalparameter_new(kind))
86 {
87     if (imp == NULL) {
88         throw icalerrno;
89     }
90 }
91 
as_ical_string()92 std::string ICalParameter::as_ical_string()
93 {
94     char *str = icalparameter_as_ical_string(imp);
95 
96     if (str == NULL) {
97         throw icalerrno;
98     }
99 
100     return str;
101 }
102 
is_valid()103 bool ICalParameter::is_valid()
104 {
105     if (imp == NULL) {
106         return false;
107     }
108     return (icalparameter_isa_parameter(static_cast<void *>(imp)) != 0);
109 }
110 
isa()111 icalparameter_kind ICalParameter::isa()
112 {
113     return icalparameter_isa(imp);
114 }
115 
isa_parameter(void * param)116 int ICalParameter::isa_parameter(void *param)
117 {
118     return icalparameter_isa_parameter(param);
119 }
120 
121 /* Access the name of an X parameter */
set_xname(ICalParameter & param,const std::string & v)122 void ICalParameter::set_xname(ICalParameter &param, const std::string &v)
123 {
124     icalparameter_set_xname(param, v.c_str());
125 }
126 
get_xname(ICalParameter & param)127 std::string ICalParameter::get_xname(ICalParameter &param)
128 {
129     return static_cast<std::string>(icalparameter_get_xname(param));
130 }
131 
set_xvalue(ICalParameter & param,const std::string & v)132 void ICalParameter::set_xvalue(ICalParameter &param, const std::string &v)
133 {
134     icalparameter_set_xvalue(param, v.c_str());
135 }
136 
get_xvalue(ICalParameter & param)137 std::string ICalParameter::get_xvalue(ICalParameter &param)
138 {
139     return static_cast<std::string>(icalparameter_get_xvalue(param));
140 }
141 
142 /* Convert enumerations */
kind_to_string(const icalparameter_kind & kind)143 std::string ICalParameter::kind_to_string(const icalparameter_kind &kind)
144 {
145     return static_cast<std::string>(icalparameter_kind_to_string(kind));
146 }
147 
string_to_kind(const std::string & str)148 icalparameter_kind ICalParameter::string_to_kind(const std::string &str)
149 {
150     return icalparameter_string_to_kind(str.c_str());
151 }
152 
153 /* DELEGATED-FROM */
get_delegatedfrom() const154 std::string ICalParameter::get_delegatedfrom() const
155 {
156     return static_cast<std::string>(icalparameter_get_delegatedfrom(imp));
157 }
158 
set_delegatedfrom(const std::string & v)159 void ICalParameter::set_delegatedfrom(const std::string &v)
160 {
161     icalparameter_set_delegatedfrom(imp, v.c_str());
162 }
163 
164 /* RELATED */
get_related() const165 icalparameter_related ICalParameter::get_related() const
166 {
167     return icalparameter_get_related(imp);
168 }
169 
set_related(const icalparameter_related & v)170 void ICalParameter::set_related(const icalparameter_related &v)
171 {
172     icalparameter_set_related(imp, v);
173 }
174 
175 /* SENT-BY */
get_sentby() const176 std::string ICalParameter::get_sentby() const
177 {
178     return static_cast<std::string>(icalparameter_get_sentby(imp));
179 }
180 
set_sentby(const std::string & v)181 void ICalParameter::set_sentby(const std::string &v)
182 {
183     icalparameter_set_sentby(imp, v.c_str());
184 }
185 
186 /* LANGUAGE */
get_language() const187 std::string ICalParameter::get_language() const
188 {
189     return static_cast<std::string>(icalparameter_get_language(imp));
190 }
191 
set_language(const std::string & v)192 void ICalParameter::set_language(const std::string &v)
193 {
194     icalparameter_set_language(imp, v.c_str());
195 }
196 
197 /* RELTYPE */
get_reltype() const198 icalparameter_reltype ICalParameter::get_reltype() const
199 {
200     return icalparameter_get_reltype(imp);
201 }
202 
set_reltype(const icalparameter_reltype & v)203 void ICalParameter::set_reltype(const icalparameter_reltype &v)
204 {
205     icalparameter_set_reltype(imp, v);
206 }
207 
208 /* ENCODING */
get_encoding() const209 icalparameter_encoding ICalParameter::get_encoding() const
210 {
211     return icalparameter_get_encoding(imp);
212 }
213 
set_encoding(const icalparameter_encoding & v)214 void ICalParameter::set_encoding(const icalparameter_encoding &v)
215 {
216     icalparameter_set_encoding(imp, v);
217 }
218 
219 /* ALTREP */
get_altrep() const220 std::string ICalParameter::get_altrep() const
221 {
222     return static_cast<std::string>(icalparameter_get_language(imp));
223 }
224 
set_altrep(const std::string & v)225 void ICalParameter::set_altrep(const std::string &v)
226 {
227     icalparameter_set_altrep(imp, v.c_str());
228 }
229 
230 /* FMTTYPE */
get_fmttype() const231 std::string ICalParameter::get_fmttype() const
232 {
233     return static_cast<std::string>(icalparameter_get_fmttype(imp));
234 }
235 
set_fmttype(const std::string & v)236 void ICalParameter::set_fmttype(const std::string &v)
237 {
238     icalparameter_set_fmttype(imp, v.c_str());
239 }
240 
241 /* FBTYPE */
get_fbtype() const242 icalparameter_fbtype ICalParameter::get_fbtype() const
243 {
244     return icalparameter_get_fbtype(imp);
245 }
246 
set_fbtype(const icalparameter_fbtype & v)247 void ICalParameter::set_fbtype(const icalparameter_fbtype &v)
248 {
249     icalparameter_set_fbtype(imp, v);
250 }
251 
252 /* RSVP */
get_rsvp() const253 icalparameter_rsvp ICalParameter::get_rsvp() const
254 {
255     return icalparameter_get_rsvp(imp);
256 }
257 
set_rsvp(const icalparameter_rsvp & v)258 void ICalParameter::set_rsvp(const icalparameter_rsvp &v)
259 {
260     icalparameter_set_rsvp(imp, v);
261 }
262 
263 /* RANGE */
get_range() const264 icalparameter_range ICalParameter::get_range() const
265 {
266     return icalparameter_get_range(imp);
267 }
268 
set_range(const icalparameter_range & v)269 void ICalParameter::set_range(const icalparameter_range &v)
270 {
271     icalparameter_set_range(imp, v);
272 }
273 
274 /* DELEGATED-TO */
get_delegatedto() const275 std::string ICalParameter::get_delegatedto() const
276 {
277     return static_cast<std::string>(icalparameter_get_delegatedto(imp));
278 }
279 
set_delegatedto(const std::string & v)280 void ICalParameter::set_delegatedto(const std::string &v)
281 {
282     icalparameter_set_delegatedto(imp, v.c_str());
283 }
284 
285 /* CN */
get_cn() const286 std::string ICalParameter::get_cn() const
287 {
288     return static_cast<std::string>(icalparameter_get_cn(imp));
289 }
290 
set_cn(const std::string & v)291 void ICalParameter::set_cn(const std::string &v)
292 {
293     icalparameter_set_cn(imp, v.c_str());
294 }
295 
296 /* ROLE */
get_role() const297 icalparameter_role ICalParameter::get_role() const
298 {
299     return icalparameter_get_role(imp);
300 }
301 
set_role(const icalparameter_role & v)302 void ICalParameter::set_role(const icalparameter_role &v)
303 {
304     icalparameter_set_role(imp, v);
305 }
306 
307 /* X-LIC-COMPARETYPE */
get_xliccomparetype() const308 icalparameter_xliccomparetype ICalParameter::get_xliccomparetype() const
309 {
310     return icalparameter_get_xliccomparetype(imp);
311 }
312 
set_xliccomparetype(const icalparameter_xliccomparetype & v)313 void ICalParameter::set_xliccomparetype(const icalparameter_xliccomparetype &v)
314 {
315     icalparameter_set_xliccomparetype(imp, v);
316 }
317 
318 /* PARTSTAT */
get_partstat() const319 icalparameter_partstat ICalParameter::get_partstat() const
320 {
321     return icalparameter_get_partstat(imp);
322 }
323 
set_partstat(const icalparameter_partstat & v)324 void ICalParameter::set_partstat(const icalparameter_partstat &v)
325 {
326     icalparameter_set_partstat(imp, v);
327 }
328 
329 /* X-LIC-ERRORTYPE */
get_xlicerrortype() const330 icalparameter_xlicerrortype ICalParameter::get_xlicerrortype() const
331 {
332     return icalparameter_get_xlicerrortype(imp);
333 }
334 
set_xlicerrortype(const icalparameter_xlicerrortype & v)335 void ICalParameter::set_xlicerrortype(const icalparameter_xlicerrortype &v)
336 {
337     icalparameter_set_xlicerrortype(imp, v);
338 }
339 
340 /* MEMBER */
get_member() const341 std::string ICalParameter::get_member() const
342 {
343     return static_cast<std::string>(icalparameter_get_member(imp));
344 }
345 
set_member(const std::string & v)346 void ICalParameter::set_member(const std::string &v)
347 {
348     icalparameter_set_member(imp, v.c_str());
349 }
350 
351 /* X */
get_x() const352 std::string ICalParameter::get_x() const
353 {
354     return static_cast<std::string>(icalparameter_get_x(imp));
355 }
356 
set_x(const std::string & v)357 void ICalParameter::set_x(const std::string &v)
358 {
359     icalparameter_set_x(imp, v.c_str());
360 }
361 
362 /* CUTYPE */
get_cutype() const363 icalparameter_cutype ICalParameter::get_cutype() const
364 {
365     return icalparameter_get_cutype(imp);
366 }
367 
set_cutype(const icalparameter_cutype & v)368 void ICalParameter::set_cutype(const icalparameter_cutype &v)
369 {
370     icalparameter_set_cutype(imp, v);
371 }
372 
373 /* TZID */
get_tzid() const374 std::string ICalParameter::get_tzid() const
375 {
376     return static_cast<std::string>(icalparameter_get_tzid(imp));
377 }
378 
set_tzid(const std::string & v)379 void ICalParameter::set_tzid(const std::string &v)
380 {
381     icalparameter_set_tzid(imp, v.c_str());
382 }
383 
384 /* VALUE */
get_value() const385 icalparameter_value ICalParameter::get_value() const
386 {
387     return icalparameter_get_value(imp);
388 }
389 
set_value(const icalparameter_value & v)390 void ICalParameter::set_value(const icalparameter_value &v)
391 {
392     icalparameter_set_value(imp, v);
393 }
394 
395 /* DIR */
get_dir() const396 std::string ICalParameter::get_dir() const
397 {
398     return static_cast<std::string>(icalparameter_get_dir(imp));
399 }
400 
set_dir(const std::string & v)401 void ICalParameter::set_dir(const std::string &v)
402 {
403     icalparameter_set_dir(imp, v.c_str());
404 }
405