GMemoryOutputStream

GMemoryOutputStream — Streaming output operations on memory chunks

Synopsis


#include <gio.h>


gpointer            (*GReallocFunc)                     (gpointer data,
                                                         gsize size);
                    GMemoryOutputStream;
GOutputStream*      g_memory_output_stream_new          (gpointer data,
                                                         gsize len,
                                                         GReallocFunc realloc_fn,
                                                         GDestroyNotify destroy);
gpointer            g_memory_output_stream_get_data     (GMemoryOutputStream *ostream);
gsize               g_memory_output_stream_get_size     (GMemoryOutputStream *ostream);


Object Hierarchy


  GObject
   +----GOutputStream
         +----GMemoryOutputStream

Implemented Interfaces

GMemoryOutputStream implements GSeekable.

Description

GMemoryOutputStream is a class for using arbitrary memory chunks as output for GIO streaming output operations.

Details

GReallocFunc ()

gpointer            (*GReallocFunc)                     (gpointer data,
                                                         gsize size);

Changes the size of the memory block pointed to by data to size bytes.

The function should have the same semantics as realloc().

data :

memory block to reallocate

size :

size to reallocate data to

Returns :

a pointer to the reallocated memory

GMemoryOutputStream

typedef struct _GMemoryOutputStream GMemoryOutputStream;

Implements GOutputStream for arbitrary memory chunks.


g_memory_output_stream_new ()

GOutputStream*      g_memory_output_stream_new          (gpointer data,
                                                         gsize len,
                                                         GReallocFunc realloc_fn,
                                                         GDestroyNotify destroy);

Creates a new GMemoryOutputStream.

If data is non-NULL, the stream will use that for its internal storage. If realloc_fn is non-NULL, it will be used for resizing the internal storage when necessary. To construct a fixed-size output stream, pass NULL as realloc_fn.

/* a stream that can grow */
stream = g_memory_output_stream_new (NULL, 0, realloc, free);

/* a fixed-size stream */
data = malloc (200);
stream2 = g_memory_output_stream_new (data, 200, NULL, free);

data :

pointer to a chunk of memory to use, or NULL

len :

the size of data

realloc_fn :

a function with realloc() semantics to be called when data needs to be grown, or NULL

destroy :

a function to be called on data when the stream is finalized, or NULL

Returns :

A newly created GMemoryOutputStream object.

g_memory_output_stream_get_data ()

gpointer            g_memory_output_stream_get_data     (GMemoryOutputStream *ostream);

Gets any loaded data from the ostream.

Note that the returned pointer may become invalid on the next write or truncate operation on the stream.

ostream :

a GMemoryOutputStream

Returns :

pointer to the stream's data

g_memory_output_stream_get_size ()

gsize               g_memory_output_stream_get_size     (GMemoryOutputStream *ostream);

Gets the size of the loaded data from the ostream.

Note that the returned size may become invalid on the next write or truncate operation on the stream.

ostream :

a GMemoryOutputStream

Returns :

the size of the stream's data

See Also

GMemoryInputStream