1 /* -*- Mode: C -*- */ 2 /*====================================================================== 3 FILE: icaltypes.h 4 CREATOR: eric 20 March 1999 5 6 7 (C) COPYRIGHT 2000, Eric Busboom <eric@softwarestudio.org> 8 http://www.softwarestudio.org 9 10 This program is free software; you can redistribute it and/or modify 11 it under the terms of either: 12 13 The LGPL as published by the Free Software Foundation, version 14 2.1, available at: http://www.fsf.org/copyleft/lesser.html 15 16 Or: 17 18 The Mozilla Public License Version 1.0. You may obtain a copy of 19 the License at http://www.mozilla.org/MPL/ 20 21 The original code is icaltypes.h 22 23 ======================================================================*/ 24 25 #ifndef ICALTYPES_H 26 #define ICALTYPES_H 27 28 #include <time.h> 29 #include "icalenums.h" 30 #include "icaltime.h" 31 #include "icalduration.h" 32 #include "icalperiod.h" 33 34 35 struct icalgeotype 36 { 37 double lat; 38 double lon; 39 }; 40 41 42 struct icaldatetimeperiodtype 43 { 44 struct icaltimetype time; 45 struct icalperiodtype period; 46 }; 47 48 49 struct icaltriggertype 50 { 51 struct icaltimetype time; 52 struct icaldurationtype duration; 53 }; 54 55 struct icaltriggertype icaltriggertype_from_int(const int reltime); 56 struct icaltriggertype icaltriggertype_from_string(const char* str); 57 58 int icaltriggertype_is_null_trigger(struct icaltriggertype tr); 59 int icaltriggertype_is_bad_trigger(struct icaltriggertype tr); 60 61 /* struct icalreqstattype. This struct contains two string pointers, 62 but don't try to free either of them. The "desc" string is a pointer 63 to a static table inside the library. Don't try to free it. The 64 "debug" string is a pointer into the string that the called passed 65 into to icalreqstattype_from_string. Don't try to free it either, and 66 don't use it after the original string has been freed. 67 68 BTW, you would get that original string from 69 *icalproperty_get_requeststatus() or icalvalue_get_text(), when 70 operating on a the value of a request_status property. */ 71 72 struct icalreqstattype { 73 74 icalrequeststatus code; 75 const char* desc; 76 const char* debug; 77 }; 78 79 struct icalreqstattype icalreqstattype_from_string(const char* str); 80 const char* icalreqstattype_as_string(struct icalreqstattype); 81 char* icalreqstattype_as_string_r(struct icalreqstattype); 82 83 84 85 struct icaltimezonephase { 86 const char* tzname; 87 int is_stdandard; /* 1 = standard tme, 0 = daylight savings time */ 88 struct icaltimetype dtstart; 89 int offsetto; 90 int tzoffsetfrom; 91 const char* comment; 92 struct icaldatetimeperiodtype rdate; 93 const char* rrule; 94 }; 95 96 97 struct icaltimezonetype { 98 const char* tzid; 99 struct icaltimetype last_mod; 100 const char* tzurl; 101 102 /* Array of phases. The end of the array is a phase with tzname == 0 */ 103 struct icaltimezonephase *phases; 104 }; 105 106 void icaltimezonetype_free(struct icaltimezonetype tzt); 107 108 /* ical_unknown_token_handling : 109 * How should the ICAL library handle components, properties and parameters with 110 * unknown names? 111 * FIXME: Currently only affects parameters. Extend to components and properties. 112 */ 113 typedef enum ical_unknown_token_handling { 114 ICAL_ASSUME_IANA_TOKEN = 1, 115 ICAL_DISCARD_TOKEN = 2, 116 ICAL_TREAT_AS_ERROR = 3 117 } ical_unknown_token_handling; 118 119 ical_unknown_token_handling ical_get_unknown_token_handling_setting(void); 120 void ical_set_unknown_token_handling_setting(ical_unknown_token_handling newSetting); 121 122 #endif /* !ICALTYPES_H */ 123