Basics
Guides
API Reference
Basics
Guides
API Reference
[234:14] static extends: object
Generated metadata helpers for MemoryOutputStream class surfaces.
properties ()
Returns property metadata for
MemoryOutputStream.
A list.[15:7] extends: object
GMemoryOutputStream is a class for using arbitrary memory chunks as output
for GIO streaming output operations. As of GLib 2.34, GMemoryOutputStream
trivially implements [iface@Gio.PollableOutputStream]: it always polls as
ready.
GMemoryOutputStream (data = null, size = null, realloc_function = null, destroy_function = null)
Creates a new #GMemoryOutputStream. In most cases this is not the function you want. See g_memory_output_stream_new_resizable() instead. If
is non-%NULL, the stream will use that for its internal storage. Ifis non-%NULL, it will be used for resizing the internal storage when necessary and the stream will be considered resizable. In that case, the stream will start out being (conceptually) empty. @size is used only as a hint for how big @data is. Specifically, seeking to the end of a newly-created stream will seek to zero, not @size. Seeking past the end of the stream and then writing will introduce a zero-filled gap. If @realloc_fn is %NULL then the stream is fixed-sized. Seeking to the end will seek to @size exactly. Writing past the end will give an 'out of space' error. Attempting to seek past the end will fail. Unlike the resizable case, seeking to an offset within the stream and writing will preserve the bytes passed in as @data before that point and will return them as part of g_memory_output_stream_steal_data(). If you intend to seek you should probably therefore ensure that @data is properly initialised. It is probably only meaningful to provide @data and @size in the case that you want a fixed-sized stream. Put another way: ifis non-%NULL then it makes most sense to give @data as %NULL and @size as 0 (allowing #GMemoryOutputStream to do the initial allocation for itself). |[ // a stream that can grow stream = g_memory_output_stream_new (NULL, 0, realloc, free); // another stream that can grow stream2 = g_memory_output_stream_new (NULL, 0, g_realloc, g_free); // a fixed-size stream data = malloc (200); stream3 = g_memory_output_stream_new (data, 200, NULL, free); ]|data is pointer to a chunk of memory to use, or %NULL.size is the size of @data.realloc_function is a function with realloc() semantics (like g_realloc()) to be called when @data needs to be grown, or %NULL.destroy_function is a function to be called on @data when the stream is finalized, or %NULL.toNativeHandle (Source)
Normalizes a constructor argument into a raw pointer carrier. Accepts a raw NativeHandle, a raw NativeBuffer returned from
fn.call(...), another generated wrapper exposinghandle(), or null. Returns null when the argument carries no pointer.
Source is the raw handle, raw buffer, wrapper, or null.A raw pointer carrier or null when no pointer is present.getLib ()
Returns the opened native library for this generated wrapper.
The opened native library.handle ()
Returns the wrapped NativeHandle.
The wrapped NativeHandle.isNull ()
Returns true when the wrapped handle is null.
A bool.describe ()
Returns a small string for debugging generated wrappers.
A string.asOutputStream ()
Wraps this handle as
GOutputStream.
A GOutputStream object.asPollableOutputStream ()
Wraps this handle as
GPollableOutputStream.
A GPollableOutputStream object.asSeekable ()
Wraps this handle as
GSeekable.
A GSeekable object.get_data ()
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.
pointer to the stream's data, or %NULL if the data has been stolen.get_data_size ()
Returns the number of bytes from the start up to including the last byte written in the stream that has not been truncated away.
the number of bytes written to the stream.get_size ()
Gets the size of the currently allocated data area (available from g_memory_output_stream_get_data()). You probably don't want to use this function on resizable streams. See g_memory_output_stream_get_data_size() instead. For resizable streams the size returned by this function is an implementation detail and may be change at any time in response to operations on the stream. If the stream is fixed-sized (ie: no realloc was passed to g_memory_output_stream_new()) then this is the maximum size of the stream and further writes will return %G_IO_ERROR_NO_SPACE. In any case, if you want the number of bytes currently written to the stream, use g_memory_output_stream_get_data_size().
the number of bytes allocated for the data buffer.steal_as_bytes ()
Returns data from the @ostream as a #GBytes. @ostream must be closed before calling this function.
the stream's data.steal_data ()
Gets any loaded data from the @ostream. Ownership of the data is transferred to the caller; when no longer needed it must be freed using the free function set in @ostream's #GMemoryOutputStream:destroy-function property. @ostream must be closed before calling this function.
the stream's data, or %NULL if it has previously been stolen.[217:14] static extends: object
Alternate constructors for GMemoryOutputStream. Usage:
GMemoryOutputStreamCtors.<name>(...). The primary constructor lives
directly on GMemoryOutputStream.
newResizable ()
Creates a new #GMemoryOutputStream, using g_realloc() and g_free() for memory allocation.
A new GMemoryOutputStream.
Aussom
Write once. Embed everywhere.
Copyright 2026 Austin Lehman. All rights reserved.