## GMemoryInputStream GMemoryInputStream — Streaming input operations on memory chunks |

## Synopsis

    #include <gio/gio.h>

                        GMemoryInputStream;
    GInputStream *      g_memory_input_stream_new           (void);
    GInputStream *      g_memory_input_stream_new_from_data (const void *data,
                                                             gssize len,
                                                             GDestroyNotify destroy);
    GInputStream *      g_memory_input_stream_new_from_bytes
                                                            (GBytes *bytes);
    void                g_memory_input_stream_add_data      (GMemoryInputStream *stream,
                                                             const void *data,
                                                             gssize len,
                                                             GDestroyNotify destroy);
    void                g_memory_input_stream_add_bytes     (GMemoryInputStream *stream,
                                                             GBytes *bytes);

## Object Hierarchy

      GObject
       +----GInputStream
             +----GMemoryInputStream

## Implemented Interfaces

GMemoryInputStream implements GSeekable and GPollableInputStream.

## Description

GMemoryInputStream is a class for using arbitrary memory chunks as input for GIO streaming input operations.

As of GLib 2.34, GMemoryInputStream implements GPollableInputStream.

## Details

### GMemoryInputStream

    typedef struct _GMemoryInputStream GMemoryInputStream;

Implements GInputStream for arbitrary memory chunks.

### g_memory_input_stream_new ()

    GInputStream *      g_memory_input_stream_new           (void);

Creates a new empty GMemoryInputStream.

Returns : | a new GInputStream

### g_memory_input_stream_new_from_data ()

    GInputStream *      g_memory_input_stream_new_from_data (const void *data,
                                                             gssize len,
                                                             GDestroyNotify destroy);

Creates a new GMemoryInputStream with data in memory of a given size.

`data` : | input data. [array length=len][element-type guint8][transfer full]
`len` : | length of the data, may be -1 if `data` is a nul-terminated string
`destroy` : | function that is called to free `data`, or `NULL`. [allow-none]
Returns : | new GInputStream read from `data` of `len` bytes.

### g_memory_input_stream_new_from_bytes ()

    GInputStream *      g_memory_input_stream_new_from_bytes
                                                            (GBytes *bytes);

Creates a new GMemoryInputStream with data from the given `bytes`.

`bytes` : | a GBytes
Returns : | new GInputStream read from `bytes`

Since 2.34

### g_memory_input_stream_add_data ()

    void                g_memory_input_stream_add_data      (GMemoryInputStream *stream,
                                                             const void *data,
                                                             gssize len,
                                                             GDestroyNotify destroy);

Appends `data` to data that can be read from the input stream

`stream` : | a GMemoryInputStream
`data` : | input data. [array length=len][element-type guint8][transfer full]
`len` : | length of the data, may be -1 if `data` is a nul-terminated string
`destroy` : | function that is called to free `data`, or `NULL`. [allow-none]

### g_memory_input_stream_add_bytes ()

    void                g_memory_input_stream_add_bytes     (GMemoryInputStream *stream,
                                                             GBytes *bytes);

Appends `bytes` to data that can be read from the input stream.

`stream` : | a GMemoryInputStream
`bytes` : | input data

Since 2.34

## See Also

GMemoryOutputStream