1 /* -*- Mode: C -*- */
2 /*======================================================================
3   FILE: icalvalue.h
4   CREATOR: eric 20 March 1999
5 
6 
7   $Id: icalvalue.h,v 1.10 2008-01-15 23:17:43 dothebart Exp $
8   $Locker:  $
9 
10  (C) COPYRIGHT 2000, Eric Busboom <eric@softwarestudio.org>
11      http://www.softwarestudio.org
12 
13  This program is free software; you can redistribute it and/or modify
14  it under the terms of either:
15 
16     The LGPL as published by the Free Software Foundation, version
17     2.1, available at: http://www.fsf.org/copyleft/lesser.html
18 
19   Or:
20 
21     The Mozilla Public License Version 1.0. You may obtain a copy of
22     the License at http://www.mozilla.org/MPL/
23 
24   The original code is icalvalue.h
25 
26   ======================================================================*/
27 
28 #ifndef ICALVALUE_H
29 #define ICALVALUE_H
30 
31 #include <time.h>
32 #include "icalenums.h"
33 #include "icaltypes.h"
34 #include "icalrecur.h"
35 #include "icalduration.h"
36 #include "icalperiod.h"
37 #include "icalderivedproperty.h" /* For icalproperty_method, etc. */
38 #include "icalderivedparameter.h"
39 #include "icalderivedvalue.h"
40 
41 /* Defined in icalderivedvalue.h */
42 /*typedef struct icalvalue_impl icalvalue;*/
43 
44 icalvalue* icalvalue_new(icalvalue_kind kind);
45 
46 icalvalue* icalvalue_new_clone(const icalvalue* value);
47 
48 icalvalue* icalvalue_new_from_string(icalvalue_kind kind, const char* str);
49 
50 void icalvalue_free(icalvalue* value);
51 
52 int icalvalue_is_valid(const icalvalue* value);
53 
54 const char* icalvalue_as_ical_string(const icalvalue* value);
55 char* icalvalue_as_ical_string_r(const icalvalue* value);
56 
57 icalvalue_kind icalvalue_isa(const icalvalue* value);
58 
59 int icalvalue_isa_value(void*);
60 
61 icalparameter_xliccomparetype icalvalue_compare(const icalvalue* a, const icalvalue *b);
62 
63 
64 /* Special, non autogenerated value accessors */
65 
66 /* Defined in icalderivedvalue.h */
67 /* icalvalue* icalvalue_new_recur (struct icalrecurrencetype v); */
68 /* void icalvalue_set_recur(icalvalue* value, struct icalrecurrencetype v); */
69 /* struct icalrecurrencetype icalvalue_get_recur(const icalvalue* value); */
70 
71 /* icalvalue* icalvalue_new_trigger (struct icaltriggertype v); */
72 /* void icalvalue_set_trigger(icalvalue* value, struct icaltriggertype v); */
73 /* struct icaltriggertype icalvalue_get_trigger(const icalvalue* value); */
74 
75 /* icalvalue* icalvalue_new_datetimeperiod (struct icaldatetimeperiodtype v); */
76 /* void icalvalue_set_datetimeperiod(icalvalue* value,  */
77 /* 				  struct icaldatetimeperiodtype v); */
78 /* struct icaldatetimeperiodtype icalvalue_get_datetimeperiod(const icalvalue* value); */
79 
80 /* Convert enumerations */
81 
82 icalvalue_kind icalvalue_string_to_kind(const char* str);
83 const char* icalvalue_kind_to_string(const icalvalue_kind kind);
84 
85 /** Check validity of a specific icalvalue_kind **/
86 int icalvalue_kind_is_valid(const icalvalue_kind kind);
87 
88 /** Encode a character string in ical format, esacpe certain characters, etc. */
89 int icalvalue_encode_ical_string(const char *szText, char *szEncText, int MaxBufferLen);
90 
91 /** Extract the original character string encoded by the above function **/
92 int icalvalue_decode_ical_string(const char *szText, char *szDecText, int nMaxBufferLen);
93 
94 #endif /*ICALVALUE_H*/
95