Fix FSF address (Tobias Mueller, #470445)
[platform/upstream/evolution-data-server.git] / camel / camel-data-wrapper.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  *  Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
4  *           Michael Zucchi <notzed@ximian.com>
5  *           Jeffrey Stedfast <fejj@ximian.com>
6  *
7  *  Copyright 1999-2003 Ximian, Inc. (www.ximian.com)
8  *
9  *  This program is free software; you can redistribute it and/or modify
10  *  it under the terms of the GNU Lesser General Public License as published by
11  *  the Free Software Foundation; either version 2 of the License, or
12  *  (at your option) any later version.
13  *
14  *  This program is distributed in the hope that it will be useful,
15  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  *  GNU Lesser General Public License for more details.
18  *
19  *  You should have received a copy of the GNU Lesser General Public License
20  *  along with this program; if not, write to the Free Software
21  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22  *
23  */
24
25
26 #ifndef CAMEL_DATA_WRAPPER_H
27 #define CAMEL_DATA_WRAPPER_H 1
28
29 #include <glib.h>
30 #include <sys/types.h>
31 #include <camel/camel-object.h>
32 #include <camel/camel-mime-utils.h>
33
34 #define CAMEL_DATA_WRAPPER_TYPE     (camel_data_wrapper_get_type ())
35 #define CAMEL_DATA_WRAPPER(obj)     (CAMEL_CHECK_CAST((obj), CAMEL_DATA_WRAPPER_TYPE, CamelDataWrapper))
36 #define CAMEL_DATA_WRAPPER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_DATA_WRAPPER_TYPE, CamelDataWrapperClass))
37 #define CAMEL_IS_DATA_WRAPPER(o)    (CAMEL_CHECK_TYPE((o), CAMEL_DATA_WRAPPER_TYPE))
38
39 G_BEGIN_DECLS
40
41 struct _CamelDataWrapper {
42         CamelObject parent_object;
43         struct _CamelDataWrapperPrivate *priv;
44         
45         CamelTransferEncoding encoding;
46         
47         CamelContentType *mime_type;
48         CamelStream *stream;
49         
50         unsigned int offline:1;
51 };
52
53 typedef struct {
54         CamelObjectClass parent_class;
55         
56         /* Virtual methods */
57         void                (*set_mime_type)          (CamelDataWrapper *data_wrapper,
58                                                        const char *mime_type);
59         char *              (*get_mime_type)          (CamelDataWrapper *data_wrapper);
60         CamelContentType *  (*get_mime_type_field)    (CamelDataWrapper *data_wrapper);
61         void                (*set_mime_type_field)    (CamelDataWrapper *data_wrapper,
62                                                        CamelContentType *mime_type_field);
63         
64         ssize_t             (*write_to_stream)        (CamelDataWrapper *data_wrapper,
65                                                        CamelStream *stream);
66         
67         ssize_t             (*decode_to_stream)       (CamelDataWrapper *data_wrapper,
68                                                        CamelStream *stream);
69         
70         int                 (*construct_from_stream)  (CamelDataWrapper *data_wrapper,
71                                                        CamelStream *);
72         
73         gboolean            (*is_offline)             (CamelDataWrapper *data_wrapper);
74 } CamelDataWrapperClass;
75
76 /* Standard Camel function */
77 CamelType camel_data_wrapper_get_type (void);
78
79 /* public methods */
80 CamelDataWrapper *camel_data_wrapper_new(void);
81 ssize_t           camel_data_wrapper_write_to_stream        (CamelDataWrapper *data_wrapper,
82                                                              CamelStream *stream);
83 ssize_t           camel_data_wrapper_decode_to_stream       (CamelDataWrapper *data_wrapper,
84                                                              CamelStream *stream);
85
86 void              camel_data_wrapper_set_mime_type          (CamelDataWrapper *data_wrapper,
87                                                              const char *mime_type);
88 char             *camel_data_wrapper_get_mime_type          (CamelDataWrapper *data_wrapper);
89 CamelContentType *camel_data_wrapper_get_mime_type_field    (CamelDataWrapper *data_wrapper);
90 void              camel_data_wrapper_set_mime_type_field    (CamelDataWrapper *data_wrapper,
91                                                              CamelContentType *mime_type);
92
93 int               camel_data_wrapper_construct_from_stream  (CamelDataWrapper *data_wrapper,
94                                                              CamelStream *stream);
95
96 gboolean          camel_data_wrapper_is_offline             (CamelDataWrapper *data_wrapper);
97
98 G_END_DECLS
99
100 #endif /* CAMEL_DATA_WRAPPER_H */