1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ 2 /* GMime 3 * Copyright (C) 2000-2014 Jeffrey Stedfast 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public License 7 * as published by the Free Software Foundation; either version 2.1 8 * of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library; if not, write to the Free 17 * Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 18 * 02110-1301, USA. 19 */ 20 21 22 #ifndef __GMIME_DATA_WRAPPER_H__ 23 #define __GMIME_DATA_WRAPPER_H__ 24 25 #include <glib.h> 26 #include <glib-object.h> 27 28 #include <gmime/gmime-content-type.h> 29 #include <gmime/gmime-encodings.h> 30 #include <gmime/gmime-stream.h> 31 #include <gmime/gmime-utils.h> 32 33 G_BEGIN_DECLS 34 35 #define GMIME_TYPE_DATA_WRAPPER (g_mime_data_wrapper_get_type ()) 36 #define GMIME_DATA_WRAPPER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GMIME_TYPE_DATA_WRAPPER, GMimeDataWrapper)) 37 #define GMIME_DATA_WRAPPER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GMIME_TYPE_DATA_WRAPPER, GMimeDataWrapperClass)) 38 #define GMIME_IS_DATA_WRAPPER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GMIME_TYPE_DATA_WRAPPER)) 39 #define GMIME_IS_DATA_WRAPPER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GMIME_TYPE_DATA_WRAPPER)) 40 #define GMIME_DATA_WRAPPER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GMIME_TYPE_DATA_WRAPPER, GMimeDataWrapperClass)) 41 42 typedef struct _GMimeDataWrapper GMimeDataWrapper; 43 typedef struct _GMimeDataWrapperClass GMimeDataWrapperClass; 44 45 46 /** 47 * GMimeDataWrapper: 48 * @parent_object: parent #GObject 49 * @encoding: the encoding of the content 50 * @stream: content stream 51 * 52 * A wrapper for a stream which may be encoded. 53 **/ 54 struct _GMimeDataWrapper { 55 GObject parent_object; 56 57 GMimeContentEncoding encoding; 58 GMimeStream *stream; 59 }; 60 61 struct _GMimeDataWrapperClass { 62 GObjectClass parent_class; 63 64 ssize_t (* write_to_stream) (GMimeDataWrapper *wrapper, GMimeStream *stream); 65 }; 66 67 68 GType g_mime_data_wrapper_get_type (void); 69 70 GMimeDataWrapper *g_mime_data_wrapper_new (void); 71 GMimeDataWrapper *g_mime_data_wrapper_new_with_stream (GMimeStream *stream, GMimeContentEncoding encoding); 72 73 void g_mime_data_wrapper_set_stream (GMimeDataWrapper *wrapper, GMimeStream *stream); 74 GMimeStream *g_mime_data_wrapper_get_stream (GMimeDataWrapper *wrapper); 75 76 void g_mime_data_wrapper_set_encoding (GMimeDataWrapper *wrapper, GMimeContentEncoding encoding); 77 GMimeContentEncoding g_mime_data_wrapper_get_encoding (GMimeDataWrapper *wrapper); 78 79 ssize_t g_mime_data_wrapper_write_to_stream (GMimeDataWrapper *wrapper, GMimeStream *stream); 80 81 G_END_DECLS 82 83 #endif /* __GMIME_DATA_WRAPPER_H__ */ 84