Software and Services, Portable Libraries  2019.Mar.01
A library for managing digital certificates
icaldata.hpp
Go to the documentation of this file.
1 //
2 // BEGIN_DOUGLAS_MARK_ROYER_COPYRIGHT
3 //
4 // Copyright (C) 1993-2015 Douglas Mark Royer, All Rights Reserved.
5 //
6 // NOTICE:
7 //
8 // THIS SOURCE CODE BELONGS TO DOUGLAS MARK ROYER
9 // THIS CODE IS CONSIDERED A
10 // TRADE SECRET AND IS NOT TO BE DIVULGED OR USED BY PARTIES WHO HAVE
11 // NOT RECEIVED WRITTEN AUTHORIZATION FROM THE OWNER.
12 //
13 //
14 // THIS SOFTWARE AND MANUAL ARE BOTH PROTECTED BY UNITED STATES
15 // COPYRIGHT LAW (TITLE 17 UNITED STATES CODE). UNAUTHORIZED REPRODUCTION
16 // AND/OR SALE MAY RESULT IN IMPRISONMENT OF UP TO ONE YEAR AND FINES
17 // OF UP TO $100,000 (17 USC 506). COPYRIGHT INFRINGERS MAY ALSO
18 // BE SUBJECT TO CIVIL LIABILITY.
19 //
20 // THIS NOTICE AND THE ABOVE COPYRIGHT NOTICE MUST REMAIN IN ALL
21 // COPIES AND ANY DERIVED WORK.
22 //
23 // ALL OF THIS CODE IS ORIGINAL WORK BY THE COPYRIGHT HOLDER.
24 //
25 // THIS DOCUMENT AND THE INFORMATION CONTAINED HEREIN IS
26 // PROVIDED ON AN "AS IS" BASIS AND INET-CONSULTING.COM, INC.
27 // DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
28 // NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
29 // HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
30 // WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
31 // PURPOSE. ANY SERVICE CONTRACT WILL BE UNDER A SEPARATE
32 // LICENSE.
33 //
34 // END_DOUGLAS_MARK_ROYER_COPYRIGHT
35 //
36 
45 #ifndef __DOUGLAS_MARK_ROYER_LIBPCICALENDAR_ICALDATA_HPP__
46 #define __DOUGLAS_MARK_ROYER_LIBPCICALENDAR_ICALDATA_HPP__
47 
48 #ifdef BUILDING_LIBRARY_ICALENDAR
49 #include "iCalendar.hpp"
50 #include "action.hpp"
51 #include "action_param.hpp"
52 #include "allow_conflict.hpp"
53 #include "altrep.hpp"
54 #include "att_counter.hpp"
55 #include "attach.hpp"
56 #include "attendee.hpp"
57 #include "binary.hpp"
58 #include "binary_parameter.hpp"
59 #include "binary_property.hpp"
60 #include "boolean.hpp"
61 #include "boolean_parameter.hpp"
62 #include "boolean_property.hpp"
63 #include "cal_address.hpp"
65 #include "cal_address_property.hpp"
66 #include "cal_query.hpp"
67 #include "cal_query_parameter.hpp"
68 #include "cal_query_property.hpp"
69 #include "calid.hpp"
70 #include "calmaster.hpp"
71 #include "calscale.hpp"
72 #include "cap_version.hpp"
73 #include "car_level.hpp"
74 #include "carid.hpp"
75 #include "categories.hpp"
76 #include "class_prop.hpp"
77 #include "cmd.hpp"
78 #include "cn.hpp"
79 #include "comment.hpp"
80 #include "completed.hpp"
81 #include "component.hpp"
82 #include "components.hpp"
83 #include "contact.hpp"
84 #include "created.hpp"
85 #include "csid.hpp"
86 #include "cutype.hpp"
87 #include "date.hpp"
88 #include "date_parameter.hpp"
89 #include "date_property.hpp"
90 #include "date_time.hpp"
91 #include "date_time_parameter.hpp"
92 #include "date_time_property.hpp"
93 #include "daylightValue.hpp"
94 #include "decreed.hpp"
95 #include "default_charset.hpp"
96 #include "default_locale.hpp"
97 #include "default_tzid.hpp"
98 #include "default_vcars.hpp"
99 #include "delegated_from.hpp"
100 #include "delegated_to.hpp"
101 #include "deny.hpp"
102 #include "description.hpp"
103 #include "dir.hpp"
104 #include "dtend.hpp"
105 #include "dtstamp.hpp"
106 #include "dtstart.hpp"
107 #include "due.hpp"
108 #include "dur_parameter.hpp"
109 #include "dur_property.hpp"
110 #include "dur_value.hpp"
111 #include "duration.hpp"
112 #include "enable.hpp"
113 #include "encoding.hpp"
114 #include "exdate.hpp"
115 #include "expand.hpp"
116 #include "exrule.hpp"
117 #include "fbtype.hpp"
118 #include "float_parameter.hpp"
119 #include "float_property.hpp"
120 #include "float_value.hpp"
121 #include "fmttype.hpp"
122 #include "freebusy.hpp"
123 #include "geo.hpp"
124 #include "grant.hpp"
125 #include "iCalError.hpp"
126 #include "icalbody.hpp"
127 #include "id.hpp"
128 #include "integer.hpp"
129 #include "integer_parameter.hpp"
130 #include "integer_property.hpp"
131 #include "itip_version.hpp"
132 #include "language.hpp"
133 #include "last_modified.hpp"
134 #include "latency.hpp"
135 #include "local.hpp"
136 #include "localize.hpp"
137 #include "location.hpp"
138 #include "max_comp_size.hpp"
139 #include "maxdate.hpp"
140 #include "member.hpp"
141 #include "method.hpp"
142 #include "mindate.hpp"
143 #include "multipart.hpp"
144 #include "name.hpp"
145 #include "options.hpp"
146 #include "organizer.hpp"
147 #include "owner.hpp"
148 #include "parameter.hpp"
149 #include "partstat.hpp"
150 #include "percent_complete.hpp"
151 #include "period.hpp"
152 #include "period_parameter.hpp"
153 #include "period_property.hpp"
154 #include "permission.hpp"
155 #include "priority.hpp"
156 #include "prodid.hpp"
157 #include "property.hpp"
158 #include "query.hpp"
159 #include "query_level.hpp"
160 #include "queryid.hpp"
161 #include "range.hpp"
162 #include "rdate.hpp"
163 #include "recur.hpp"
164 #include "recur_accepted.hpp"
165 #include "recur_expand.hpp"
166 #include "recur_limit.hpp"
167 #include "recur_parameter.hpp"
168 #include "recur_property.hpp"
169 #include "recurrence_id.hpp"
170 #include "related.hpp"
171 #include "related_to.hpp"
172 #include "reltype.hpp"
173 #include "repeat.hpp"
174 #include "request_status.hpp"
175 #include "resources.hpp"
176 #include "restriction.hpp"
177 #include "role.hpp"
178 #include "rrule.hpp"
179 #include "rsvp.hpp"
180 #include "scope.hpp"
181 #include "sent_by.hpp"
182 #include "sequence.hpp"
183 #include "standardValue.hpp"
184 #include "status.hpp"
185 #include "stores_expanded.hpp"
186 #include "summary.hpp"
187 #include "target.hpp"
188 #include "text.hpp"
189 #include "text_parameter.hpp"
190 #include "text_property.hpp"
191 #include "time.hpp"
192 #include "time_parameter.hpp"
193 #include "time_property.hpp"
194 #include "transp.hpp"
195 #include "trigger.hpp"
196 #include "tzid.hpp"
197 #include "tzidparam.hpp"
198 #include "tznameValue.hpp"
199 #include "tzoffsetfrom.hpp"
200 #include "tzoffsetto.hpp"
201 #include "tzurl.hpp"
202 #include "uid.hpp"
203 #include "upn_filter.hpp"
204 #include "upn_filter_parameter.hpp"
205 #include "upn_filter_property.hpp"
206 #include "upn_parameter.hpp"
207 #include "upn_property.hpp"
208 #include "upn_value.hpp"
209 #include "uri.hpp"
210 #include "uri_parameter.hpp"
211 #include "uri_property.hpp"
212 #include "url.hpp"
213 #include "utc_offset.hpp"
214 #include "utc_offset_parameter.hpp"
215 #include "utc_offset_property.hpp"
216 #include "vagenda.hpp"
217 #include "valarm.hpp"
218 #include "value.hpp"
219 #include "BaseValueType.hpp"
220 #include "valuetype.hpp"
221 #include "vcalendar.hpp"
222 #include "vcalstore.hpp"
223 #include "vcar.hpp"
224 #include "vcard.hpp"
225 #include "vcard_adr.hpp"
226 #include "vcard_agent.hpp"
227 #include "vcard_bday.hpp"
228 #include "vcard_email.hpp"
229 #include "vcard_fn.hpp"
230 #include "vcard_key.hpp"
231 #include "vcard_label.hpp"
232 #include "vcard_logo.hpp"
233 #include "vcard_mailer.hpp"
234 #include "vcard_n.hpp"
235 #include "vcard_nickname.hpp"
236 #include "vcard_note.hpp"
237 #include "vcard_org.hpp"
238 #include "vcard_photo.hpp"
239 #include "vcard_rev.hpp"
240 #include "vcard_sort_string.hpp"
241 #include "vcard_sound.hpp"
242 #include "vcard_tel.hpp"
243 #include "vcard_title.hpp"
244 #include "vcard_tz.hpp"
245 #include "vcard_version.hpp"
246 #include "version.hpp"
247 #include "vevent.hpp"
248 #include "vfreebusy.hpp"
249 #include "vjournal.hpp"
250 #include "vquery.hpp"
251 #include "vreply.hpp"
252 #include "vright.hpp"
253 #include "vtimezone.hpp"
254 #include "vtodo.hpp"
255 #include "x-component.hpp"
256 #include "x-param.hpp"
257 #include "x-sas-color.hpp"
258 #include "x-sas-data.hpp"
259 #include "x-sas-description.hpp"
260 #include "x-sas-fixed-recur.hpp"
261 #include "x-sas-font.hpp"
262 #include "x-sas-group.hpp"
263 #include "x-sas-id.hpp"
264 #include "x-sas-image.hpp"
265 #include "x-sas-invited.hpp"
266 #include "x-sas-local.hpp"
267 #include "x-sas-parent.hpp"
268 #include "x-sas-photo.hpp"
269 #include "x-sas-sound.hpp"
270 #include "x-sas-admin.hpp"
271 #include "x-sas-realm.hpp"
272 #include "x-sas-vrealm.hpp"
273 #include "x-prop.hpp"
274 #include "x-param.hpp"
275 #else
276 #include <SaS/iCalendar/iCalendar.hpp>
277 #include <SaS/iCalendar/action.hpp>
278 #include <SaS/iCalendar/action_param.hpp>
279 #include <SaS/iCalendar/allow_conflict.hpp>
280 #include <SaS/iCalendar/altrep.hpp>
281 #include <SaS/iCalendar/att_counter.hpp>
282 #include <SaS/iCalendar/attach.hpp>
283 #include <SaS/iCalendar/attendee.hpp>
284 #include <SaS/iCalendar/binary.hpp>
285 #include <SaS/iCalendar/binary_parameter.hpp>
286 #include <SaS/iCalendar/binary_property.hpp>
287 #include <SaS/iCalendar/boolean.hpp>
288 #include <SaS/iCalendar/boolean_parameter.hpp>
289 #include <SaS/iCalendar/boolean_property.hpp>
290 #include <SaS/iCalendar/cal_address.hpp>
291 #include <SaS/iCalendar/cal_address_parameter.hpp>
292 #include <SaS/iCalendar/cal_address_property.hpp>
293 #include <SaS/iCalendar/cal_query.hpp>
294 #include <SaS/iCalendar/cal_query_parameter.hpp>
295 #include <SaS/iCalendar/cal_query_property.hpp>
296 #include <SaS/iCalendar/calid.hpp>
297 #include <SaS/iCalendar/calmaster.hpp>
298 #include <SaS/iCalendar/calscale.hpp>
299 #include <SaS/iCalendar/cap_version.hpp>
300 #include <SaS/iCalendar/car_level.hpp>
301 #include <SaS/iCalendar/carid.hpp>
302 #include <SaS/iCalendar/categories.hpp>
303 #include <SaS/iCalendar/class_prop.hpp>
304 #include <SaS/iCalendar/cmd.hpp>
305 #include <SaS/iCalendar/cn.hpp>
306 #include <SaS/iCalendar/comment.hpp>
307 #include <SaS/iCalendar/completed.hpp>
308 #include <SaS/iCalendar/component.hpp>
309 #include <SaS/iCalendar/components.hpp>
310 #include <SaS/iCalendar/contact.hpp>
311 #include <SaS/iCalendar/created.hpp>
312 #include <SaS/iCalendar/csid.hpp>
313 #include <SaS/iCalendar/cutype.hpp>
314 #include <SaS/iCalendar/date.hpp>
315 #include <SaS/iCalendar/date_parameter.hpp>
316 #include <SaS/iCalendar/date_property.hpp>
317 #include <SaS/iCalendar/date_time.hpp>
318 #include <SaS/iCalendar/date_time_parameter.hpp>
319 #include <SaS/iCalendar/date_time_property.hpp>
320 #include <SaS/iCalendar/daylightValue.hpp>
321 #include <SaS/iCalendar/decreed.hpp>
322 #include <SaS/iCalendar/default_charset.hpp>
323 #include <SaS/iCalendar/default_locale.hpp>
324 #include <SaS/iCalendar/default_tzid.hpp>
325 #include <SaS/iCalendar/default_vcars.hpp>
326 #include <SaS/iCalendar/delegated_from.hpp>
327 #include <SaS/iCalendar/delegated_to.hpp>
328 #include <SaS/iCalendar/deny.hpp>
329 #include <SaS/iCalendar/description.hpp>
330 #include <SaS/iCalendar/dir.hpp>
331 #include <SaS/iCalendar/dtend.hpp>
332 #include <SaS/iCalendar/dtstamp.hpp>
333 #include <SaS/iCalendar/dtstart.hpp>
334 #include <SaS/iCalendar/due.hpp>
335 #include <SaS/iCalendar/dur_parameter.hpp>
336 #include <SaS/iCalendar/dur_property.hpp>
337 #include <SaS/iCalendar/dur_value.hpp>
338 #include <SaS/iCalendar/duration.hpp>
339 #include <SaS/iCalendar/enable.hpp>
340 #include <SaS/iCalendar/encoding.hpp>
341 #include <SaS/iCalendar/exdate.hpp>
342 #include <SaS/iCalendar/expand.hpp>
343 #include <SaS/iCalendar/exrule.hpp>
344 #include <SaS/iCalendar/fbtype.hpp>
345 #include <SaS/iCalendar/float_parameter.hpp>
346 #include <SaS/iCalendar/float_property.hpp>
347 #include <SaS/iCalendar/float_value.hpp>
348 #include <SaS/iCalendar/fmttype.hpp>
349 #include <SaS/iCalendar/freebusy.hpp>
350 #include <SaS/iCalendar/geo.hpp>
351 #include <SaS/iCalendar/grant.hpp>
352 #include <SaS/iCalendar/iCalError.hpp>
353 #include <SaS/iCalendar/icalbody.hpp>
354 #include <SaS/iCalendar/id.hpp>
355 #include <SaS/iCalendar/integer.hpp>
356 #include <SaS/iCalendar/integer_parameter.hpp>
357 #include <SaS/iCalendar/integer_property.hpp>
358 #include <SaS/iCalendar/itip_version.hpp>
359 #include <SaS/iCalendar/language.hpp>
360 #include <SaS/iCalendar/last_modified.hpp>
361 #include <SaS/iCalendar/latency.hpp>
362 #include <SaS/iCalendar/local.hpp>
363 #include <SaS/iCalendar/localize.hpp>
364 #include <SaS/iCalendar/location.hpp>
365 #include <SaS/iCalendar/max_comp_size.hpp>
366 #include <SaS/iCalendar/maxdate.hpp>
367 #include <SaS/iCalendar/member.hpp>
368 #include <SaS/iCalendar/method.hpp>
369 #include <SaS/iCalendar/mindate.hpp>
370 #include <SaS/iCalendar/multipart.hpp>
371 #include <SaS/iCalendar/name.hpp>
372 #include <SaS/iCalendar/options.hpp>
373 #include <SaS/iCalendar/organizer.hpp>
374 #include <SaS/iCalendar/owner.hpp>
375 #include <SaS/iCalendar/parameter.hpp>
376 #include <SaS/iCalendar/partstat.hpp>
377 #include <SaS/iCalendar/percent_complete.hpp>
378 #include <SaS/iCalendar/period.hpp>
379 #include <SaS/iCalendar/period_parameter.hpp>
380 #include <SaS/iCalendar/period_property.hpp>
381 #include <SaS/iCalendar/permission.hpp>
382 #include <SaS/iCalendar/priority.hpp>
383 #include <SaS/iCalendar/prodid.hpp>
384 #include <SaS/iCalendar/property.hpp>
385 #include <SaS/iCalendar/query.hpp>
386 #include <SaS/iCalendar/query_level.hpp>
387 #include <SaS/iCalendar/queryid.hpp>
388 #include <SaS/iCalendar/range.hpp>
389 #include <SaS/iCalendar/rdate.hpp>
390 #include <SaS/iCalendar/recur.hpp>
391 #include <SaS/iCalendar/recur_accepted.hpp>
392 #include <SaS/iCalendar/recur_expand.hpp>
393 #include <SaS/iCalendar/recur_limit.hpp>
394 #include <SaS/iCalendar/recur_parameter.hpp>
395 #include <SaS/iCalendar/recur_property.hpp>
396 #include <SaS/iCalendar/recurrence_id.hpp>
397 #include <SaS/iCalendar/related.hpp>
398 #include <SaS/iCalendar/related_to.hpp>
399 #include <SaS/iCalendar/reltype.hpp>
400 #include <SaS/iCalendar/repeat.hpp>
401 #include <SaS/iCalendar/request_status.hpp>
402 #include <SaS/iCalendar/resources.hpp>
403 #include <SaS/iCalendar/restriction.hpp>
404 #include <SaS/iCalendar/role.hpp>
405 #include <SaS/iCalendar/rrule.hpp>
406 #include <SaS/iCalendar/rsvp.hpp>
407 #include <SaS/iCalendar/scope.hpp>
408 #include <SaS/iCalendar/sent_by.hpp>
409 #include <SaS/iCalendar/sequence.hpp>
410 #include <SaS/iCalendar/standardValue.hpp>
411 #include <SaS/iCalendar/status.hpp>
412 #include <SaS/iCalendar/stores_expanded.hpp>
413 #include <SaS/iCalendar/summary.hpp>
414 #include <SaS/iCalendar/target.hpp>
415 #include <SaS/iCalendar/text.hpp>
416 #include <SaS/iCalendar/text_parameter.hpp>
417 #include <SaS/iCalendar/text_property.hpp>
418 #include <SaS/iCalendar/time.hpp>
419 #include <SaS/iCalendar/time_parameter.hpp>
420 #include <SaS/iCalendar/time_property.hpp>
421 #include <SaS/iCalendar/transp.hpp>
422 #include <SaS/iCalendar/trigger.hpp>
423 #include <SaS/iCalendar/tzid.hpp>
424 #include <SaS/iCalendar/tzidparam.hpp>
425 #include <SaS/iCalendar/tznameValue.hpp>
426 #include <SaS/iCalendar/tzoffsetfrom.hpp>
427 #include <SaS/iCalendar/tzoffsetto.hpp>
428 #include <SaS/iCalendar/tzurl.hpp>
429 #include <SaS/iCalendar/uid.hpp>
430 #include <SaS/iCalendar/upn_filter.hpp>
431 #include <SaS/iCalendar/upn_filter_parameter.hpp>
432 #include <SaS/iCalendar/upn_filter_property.hpp>
433 #include <SaS/iCalendar/upn_parameter.hpp>
434 #include <SaS/iCalendar/upn_property.hpp>
435 #include <SaS/iCalendar/upn_value.hpp>
436 #include <SaS/iCalendar/uri.hpp>
437 #include <SaS/iCalendar/uri_parameter.hpp>
438 #include <SaS/iCalendar/uri_property.hpp>
439 #include <SaS/iCalendar/url.hpp>
440 #include <SaS/iCalendar/utc_offset.hpp>
441 #include <SaS/iCalendar/utc_offset_parameter.hpp>
442 #include <SaS/iCalendar/utc_offset_property.hpp>
443 #include <SaS/iCalendar/vagenda.hpp>
444 #include <SaS/iCalendar/valarm.hpp>
445 #include <SaS/iCalendar/value.hpp>
446 #include <SaS/iCalendar/BaseValueType.hpp>
447 #include <SaS/iCalendar/valuetype.hpp>
448 #include <SaS/iCalendar/vcalendar.hpp>
449 #include <SaS/iCalendar/vcalstore.hpp>
450 #include <SaS/iCalendar/vcar.hpp>
451 #include <SaS/iCalendar/vcard.hpp>
452 #include <SaS/iCalendar/vcard_adr.hpp>
453 #include <SaS/iCalendar/vcard_agent.hpp>
454 #include <SaS/iCalendar/vcard_bday.hpp>
455 #include <SaS/iCalendar/vcard_email.hpp>
456 #include <SaS/iCalendar/vcard_fn.hpp>
457 #include <SaS/iCalendar/vcard_key.hpp>
458 #include <SaS/iCalendar/vcard_label.hpp>
459 #include <SaS/iCalendar/vcard_logo.hpp>
460 #include <SaS/iCalendar/vcard_mailer.hpp>
461 #include <SaS/iCalendar/vcard_n.hpp>
462 #include <SaS/iCalendar/vcard_nickname.hpp>
463 #include <SaS/iCalendar/vcard_note.hpp>
464 #include <SaS/iCalendar/vcard_org.hpp>
465 #include <SaS/iCalendar/vcard_photo.hpp>
466 #include <SaS/iCalendar/vcard_rev.hpp>
467 #include <SaS/iCalendar/vcard_sort_string.hpp>
468 #include <SaS/iCalendar/vcard_sound.hpp>
469 #include <SaS/iCalendar/vcard_tel.hpp>
470 #include <SaS/iCalendar/vcard_title.hpp>
471 #include <SaS/iCalendar/vcard_tz.hpp>
472 #include <SaS/iCalendar/vcard_version.hpp>
473 #include <SaS/iCalendar/version.hpp>
474 #include <SaS/iCalendar/vevent.hpp>
475 #include <SaS/iCalendar/vfreebusy.hpp>
476 #include <SaS/iCalendar/vjournal.hpp>
477 #include <SaS/iCalendar/vquery.hpp>
478 #include <SaS/iCalendar/vreply.hpp>
479 #include <SaS/iCalendar/vright.hpp>
480 #include <SaS/iCalendar/vtimezone.hpp>
481 #include <SaS/iCalendar/vtodo.hpp>
482 #include <SaS/iCalendar/x-component.hpp>
483 #include <SaS/iCalendar/x-param.hpp>
484 #include <SaS/iCalendar/x-sas-color.hpp>
485 #include <SaS/iCalendar/x-sas-data.hpp>
486 #include <SaS/iCalendar/x-sas-description.hpp>
487 #include <SaS/iCalendar/x-sas-fixed-recur.hpp>
488 #include <SaS/iCalendar/x-sas-font.hpp>
489 #include <SaS/iCalendar/x-sas-group.hpp>
490 #include <SaS/iCalendar/x-sas-id.hpp>
491 #include <SaS/iCalendar/x-sas-image.hpp>
492 #include <SaS/iCalendar/x-sas-invited.hpp>
493 #include <SaS/iCalendar/x-sas-local.hpp>
494 #include <SaS/iCalendar/x-sas-parent.hpp>
495 #include <SaS/iCalendar/x-sas-photo.hpp>
496 #include <SaS/iCalendar/x-sas-sound.hpp>
497 #include <SaS/iCalendar/x-sas-admin.hpp>
498 #include <SaS/iCalendar/x-sas-realm.hpp>
499 #include <SaS/iCalendar/x-sas-vrealm.hpp>
500 #include <SaS/iCalendar/x-prop.hpp>
501 #include <SaS/iCalendar/x-param.hpp>
502 #endif
503 
504 #include <map>
505 
506 #if defined(USE_POSTGRES) || defined(USE_MYSQL) || defined(USE_ORACLE) || defined(USE_ODBC)
507 #ifndef SQL_SUPPORT
508 #define SQL_SUPPORT
509 #endif
510 #endif // defined(USE_POSTGRES) || defined(USE_MYSQL) || defined(USE_ORACLE)
511 
512 #ifdef USE_POSTGRES
513 #include <SaS/Sql/SQL_postgres.hpp>
514 #endif
515 
516 #ifdef USE_MYSQL
517 #include <SaS/Sql/SQL_MySql.hpp>
518 #endif
519 
520 #ifdef USE_ORACLE
521 #include <SaS/Sql/SQL_Oracle.hpp>
522 #endif
523 
524 #ifdef USE_ODBC
525 #include <SaS/Sql/SQL_Odbc.hpp>
526 #endif
527 
528 #ifndef EXPORT_ICALENDAR
529 #ifdef BUILDING_LIBRARY_ICALENDAR
530 #define EXPORT_ICALENDAR EXPORT_OUT
531 #else
532 #define EXPORT_ICALENDAR EXPORT_IN
533 #endif
534 #endif
535 
536 #ifdef SQL_SUPPORT
537 #include <SaS/iCalendar/icalSQL.hpp>
538 #endif
539 
540 #ifndef WIN32
541 #include <sys/time.h>
542 #include <sys/timeb.h>
543 #else
544 #include <sys/timeb.h>
545 #endif
546 
547 namespace SoftwareAndServices
548 {
549  namespace Library
550  {
551  namespace iCalendar
552  {
553 
554  class icalSQL; // Forward ref when needed.
555 
561  class EXPORT_ICALENDAR tzidEntry
562  {
563 
564  public:
565 
569  tzidEntry();
570 
574  virtual ~tzidEntry();
575 
579  bool isStd;
580 
585 
590 
594  long offsetTo;
595  };
596 
601  class EXPORT_ICALENDAR icalInstances
602  {
603 
604  public:
605 
613  icalInstances(propertyVec * list, ComponentId_t compId);
614 
618  virtual ~icalInstances();
619 
625 
629  ComponentId_t id;
630  };
631 
636  class EXPORT_ICALENDAR icalData
637  : virtual public instance<icalData>
638  {
639 
640  public:
641 
642  enum data_t {
644  isNotUsed_t = 0,
645 
647  isiCalendar_t = 1,
648 
650  isComponent_t = 2,
651 
653  isProperty_t = 3,
654 
656  isParameter_t = 4
657  };
658 
662  icalData();
663 
667  virtual ~icalData();
668 
673 
678 
683 
688  std::vector<icalInstances*> * instancesFound;
689 
693  property * propertyPtr;
694 
699 
700 
701 #ifdef SQL_SUPPORT
702 
706 #endif
707 
712 
716  unsigned long long id;
717 
721  Tokens_t tokenType;
722 
726  ::Uri * theUrl;
727 
731  //int incInstance() const;
732  //int getInstance() const;
733 
734  //void operator delete(void * data);
735 
739  static std::map<unsigned long long,
740  icalData*>::iterator
741  findComponent(component * existing);
742 
746  static std::map<unsigned long long,icalData*>::iterator
747  findProperty(property * existing);
748 
752  static std::map<unsigned long long,icalData*>::iterator
753  findParameter(parameter * existing);
754 
758  static CalendarId_t addCalendar(iCalendar * newCal,
759  ::Uri * aUrl);
760 
764  static ComponentId_t addComponent(icalData * parent,
765  component * newComp);
766 
770  static void cacheVtimezone(CalendarId_t calId);
771 
775  static void cacheVtimezone(iCalendar * ical);
776 
780  static PropertyId_t addProperty(icalData* parent, property * newProp);
781 
785  static ParameterId_t addParameter(icalData * parent, parameter * newParam);
786 
790  static std::map<unsigned long long, icalData *> * objects;
791 
795  static std::map<void *, icalData *> * rObjects;
796 
801  static unsigned long long itemId;
802 
803  private:
804  //mutable int _instance;
805  };
806 
811  class EXPORT_ICALENDAR tzidData
812  {
813 
814  public:
815 
821  tzidData(CalendarId_t calId);
822 
826  virtual ~tzidData();
827 
839  static long getUtcOffset(iCalendar * ical,
840  const char * tzid,
841  date * aDate);
842 
854  static long getUtcOffset(iCalendar * ical,
855  const char * tzid,
856  date_time * dt);
857 
858  // Get the time zone offset for the named tzid.
859  //
860  //static long getTzOffset(iCalendar * ical,
861  // const char * tzid,
862  // date_time * dt);
863  //
864  //static long getTzOffset(iCalendar * ical,
865  // const char * tzid,
866  // date * dt);
867 
879  date_time * dtToUtc(iCalendar * ical,
880  date_time * dt,
881  const char * tzid);
882 
894  bool addTzid(const char * tzid,
895  iCalendar * ical);
896 
906  static vtimezone * getvTimezone(iCalendar * ical,
907  const char * tzid);
908 
913  class EXPORT_ICALENDAR tzidKey
914  {
915 
916  public:
920  tzidKey();
921 
929  tzidKey(const char * tzid, CalendarId_t calId);
930 
931  virtual ~tzidKey();
932 
936  const char * tzid;
937 
941  CalendarId_t calid;
942  };
943 
950  class EXPORT_ICALENDAR tzidUpdate
951  {
952 
953  public:
954 
962  tzidUpdate(time_t switchAt, long switchTo);
963 
967  virtual ~tzidUpdate();
968 
973 
979  };
980 
984  std::vector<tzidEntry*> * entries;
985 
989  std::vector<tzidUpdate*> * instances;
990 
994  CalendarId_t calId;
995 
999  static std::map<tzidKey*, tzidData*> * tzidCache;
1000 
1010  static tzidData * findTzidData(const char * tzid, CalendarId_t calid);
1011 
1012  static tzidData * findTzidData(const char * tzid,
1013  iCalendar * ical);
1014 
1015  };
1016 
1020  EXPORT_ICALENDAR propertyVec * getInstances(icalData * data,
1021  component * foundComp,
1022  date_time * fromDateTime,
1023  date_time * toDateTime);
1024 
1028  EXPORT_ICALENDAR time_t getUtcTime(iCalendar * ical,
1029  tzidparam * tzid,
1030  date_time * dt);
1031 
1035  EXPORT_ICALENDAR time_t getUtcTime(iCalendar * ical,
1036  tzidparam * tzid,
1037  date * dt);
1038 
1042  EXPORT_ICALENDAR time_t getUtcTime(iCalendar * ical,
1043  property * oneWithTzid);
1044 
1048  EXPORT_ICALENDAR void cacheVtimezone(CalendarId_t calId);
1049 
1053  EXPORT_ICALENDAR icalData * findCalendar(CalendarId_t calid);
1054 
1058  EXPORT_ICALENDAR CalendarId_t findCalendarId(iCalendar * existing);
1059 
1063  EXPORT_ICALENDAR std::map<unsigned long long,icalData*>::iterator findCalendar(iCalendar * existing);
1064 
1068  EXPORT_ICALENDAR iCalendar * getiCalFromProp(property * prop);
1069 
1070  }
1071  }
1072 }
1073 
1074 #endif //___DOUGLAS_MARK_ROYER_LIBPCICALENDAR_ICALDATA_HPP__
EXPORT_ICALENDAR void cacheVtimezone(CalendarId_t calId)
Cache a VTIMEZONE.
Tokens_t tokenType
Type of object in iCalendar terms.
Definition: icaldata.hpp:721
icalSQL * sql
Pointer back to the SQL object.
Definition: icaldata.hpp:705
component * componentPtr
If component, pointer back to component.
Definition: icaldata.hpp:682
EXPORT_ICALENDAR CalendarId_t findCalendarId(iCalendar *existing)
Find CALID from an iCalendar.
EXPORT_ICALENDAR time_t getUtcTime(iCalendar *ical, tzidparam *tzid, date_time *dt)
Get the UTC time.
bool isStd
When TRUE, is standard time, else daylight savings time.
Definition: icaldata.hpp:579
Maps instances of an iCalendar object, to the component id.
Definition: icaldata.hpp:601
std::vector< tzidUpdate * > * instances
Array of instances if tzidUpdate when expanded.
Definition: icaldata.hpp:989
Calendar store - SQL database.
Definition: icalSQL.hpp:98
An RFC-iCalendar implementation of TZID property.
Definition: tzid.hpp:82
::Uri * theUrl
If URL, this is a pointer to the URL.
Definition: icaldata.hpp:726
property * propertyPtr
If Property, pointer back to property.
Definition: icaldata.hpp:693
EXPORT_ICALENDAR propertyVec * getInstances(icalData *data, component *foundComp, date_time *fromDateTime, date_time *toDateTime)
Internal getInstances, get the instances using TZID data.
An RFC-iCalendar implementation of id parameter.
Definition: id.hpp:77
std::vector< icalInstances * > * instancesFound
If component: Pointers to instances when expanded to include recurrence rules.
Definition: icaldata.hpp:688
iCalendar * ical
Pointer back to calendar object.
Definition: icaldata.hpp:677
parameter * parameterPtr
If a parameter, pointer back to the parameter.
Definition: icaldata.hpp:698
static std::map< unsigned long long, icalData * > * objects
A Forward map of all objects in cache.
Definition: icaldata.hpp:790
An RFC-iCalendar implementation of a DATE-TIME parameter.
Definition: date_time.hpp:90
Base class for all RFC-iCalendar properties.
Definition: property.hpp:79
EXPORT_ICALENDAR iCalendar * getiCalFromProp(property *prop)
Find an iCalendar from a property (find its oldest ancestor)
propertyVec * list
A list of properties (dtstart) that describe the start time for the instances.
Definition: icaldata.hpp:624
std::vector< tzidEntry * > * entries
Array of tzidEntry object.
Definition: icaldata.hpp:984
long switchToValue
When time is switchAtValue, then switch to this many seconds offset (+ or -).
Definition: icaldata.hpp:978
This is used internally to represent an instance of change in a VTIMEZONE.
Definition: icaldata.hpp:561
static unsigned long long itemId
Last item-ID used.
Definition: icaldata.hpp:801
An RFC-iCalendar implementation of TZID parameter.
Definition: tzidparam.hpp:78
EXPORT_ICALENDAR typedef vector< property * > propertyVec
An array of property.
Definition: iCalendar.hpp:425
An implementation of a RFC-CAP VTIMEZONE component.
Definition: vtimezone.hpp:82
static std::map< void *, icalData * > * rObjects
A Reverse map of all objects in cache.
Definition: icaldata.hpp:795
Copyright Douglas Mark Royer DouglasRoyer@gmail.com.
Definition: Base.hpp:98
A list of instance times and switch to value to be used when expanding instance date and date-time va...
Definition: icaldata.hpp:950
An RFC-iCalendar implementation of CALID property.
Definition: calid.hpp:82
unsigned long long id
Unique id for this object.
Definition: icaldata.hpp:716
date_time * start
Start of time zone rune - date_time.
Definition: icaldata.hpp:584
The base class for calendar objects.
Definition: iCalendar.hpp:434
static std::map< tzidKey *, tzidData * > * tzidCache
A cache of tzidData objects ordered by tzidKey.
Definition: icaldata.hpp:999
time_t switchAtValue
When time is this, switch to next tz offset.
Definition: icaldata.hpp:972
icalData * parent
If object has a parent, pointer to the parent.
Definition: icaldata.hpp:711
EXPORT_ICALENDAR icalData * findCalendar(CalendarId_t calid)
Find the cache data for a CALID.
Manages a cache of time zone information.
Definition: icaldata.hpp:811
This object represents an RFC-iCalendar DATE object.
Definition: date.hpp:80
Manages a cache of iCalendar objects.
Definition: icaldata.hpp:636
Base class for all RFC-iCalendar components.
Definition: component.hpp:98