/* GIO - GLib Input, Output and Streaming Library
- *
+ *
* Copyright (C) 2006-2007 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
- * Public License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
*
- * Author: Christian Kellner <gicmo@gnome.org>
+ * Author: Christian Kellner <gicmo@gnome.org>
*/
+#ifndef __G_MEMORY_OUTPUT_STREAM_H__
+#define __G_MEMORY_OUTPUT_STREAM_H__
+
#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
#error "Only <gio/gio.h> can be included directly."
#endif
-#ifndef __G_MEMORY_OUTPUT_STREAM_H__
-#define __G_MEMORY_OUTPUT_STREAM_H__
-
-#include <glib-object.h>
#include <gio/goutputstream.h>
G_BEGIN_DECLS
/**
* GMemoryOutputStream:
- *
+ *
* Implements #GOutputStream for arbitrary memory chunks.
**/
-typedef struct _GMemoryOutputStream GMemoryOutputStream;
typedef struct _GMemoryOutputStreamClass GMemoryOutputStreamClass;
typedef struct _GMemoryOutputStreamPrivate GMemoryOutputStreamPrivate;
struct _GMemoryOutputStreamClass
{
- GOutputStreamClass parent_class;
+ GOutputStreamClass parent_class;
/*< private >*/
/* Padding for future expansion */
void (*_g_reserved5) (void);
};
+/**
+ * GReallocFunc:
+ * @data: memory block to reallocate
+ * @size: size to reallocate @data to
+ *
+ * Changes the size of the memory block pointed to by @data to
+ * @size bytes.
+ *
+ * The function should have the same semantics as realloc().
+ *
+ * Returns: a pointer to the reallocated memory
+ */
+typedef gpointer (* GReallocFunc) (gpointer data,
+ gsize size);
+
+GLIB_AVAILABLE_IN_ALL
+GType g_memory_output_stream_get_type (void) G_GNUC_CONST;
+
+GLIB_AVAILABLE_IN_ALL
+GOutputStream *g_memory_output_stream_new (gpointer data,
+ gsize size,
+ GReallocFunc realloc_function,
+ GDestroyNotify destroy_function);
+GLIB_AVAILABLE_IN_2_36
+GOutputStream *g_memory_output_stream_new_resizable (void);
+GLIB_AVAILABLE_IN_ALL
+gpointer g_memory_output_stream_get_data (GMemoryOutputStream *ostream);
+GLIB_AVAILABLE_IN_ALL
+gsize g_memory_output_stream_get_size (GMemoryOutputStream *ostream);
+GLIB_AVAILABLE_IN_ALL
+gsize g_memory_output_stream_get_data_size (GMemoryOutputStream *ostream);
+GLIB_AVAILABLE_IN_ALL
+gpointer g_memory_output_stream_steal_data (GMemoryOutputStream *ostream);
-GType g_memory_output_stream_get_type (void) G_GNUC_CONST;
-GOutputStream *g_memory_output_stream_new (GByteArray *data);
-void g_memory_output_stream_set_max_size (GMemoryOutputStream *ostream,
- guint max_size);
-GByteArray * g_memory_output_stream_get_data (GMemoryOutputStream *ostream);
-void g_memory_output_stream_set_free_data (GMemoryOutputStream *ostream,
- gboolean free_data);
+GLIB_AVAILABLE_IN_2_34
+GBytes * g_memory_output_stream_steal_as_bytes (GMemoryOutputStream *ostream);
G_END_DECLS