## CtplOutputStream CtplOutputStream — CTPL's data output stream |

## Synopsis

    #include <ctpl/ctpl.h>

                        CtplOutputStream;
    CtplOutputStream *  ctpl_output_stream_new              (GOutputStream *stream);
    CtplOutputStream *  ctpl_output_stream_ref              (CtplOutputStream *stream);
    void                ctpl_output_stream_unref            (CtplOutputStream *stream);
    GOutputStream *     ctpl_output_stream_get_stream       (CtplOutputStream *stream);
    gboolean            ctpl_output_stream_write            (CtplOutputStream *stream,
                                                             const gchar *data,
                                                             gssize length,
                                                             GError **error);
    gboolean            ctpl_output_stream_put_c            (CtplOutputStream *stream,
                                                             gchar c,
                                                             GError **error);

## Description

The data output stream used by CTPL; built on top of GOutputStream.

A CtplOutputStream is created with `ctpl_output_stream_new()`. It uses a GObject-like refcounting, through `ctpl_output_stream_ref()` and `ctpl_output_stream_unref()`.

The errors that the functions in this module can throw comes from the `G_IO_ERROR` or `CTPL_IO_ERROR` domains unless otherwise mentioned.

## Details

### CtplOutputStream

    typedef struct _CtplOutputStream CtplOutputStream;

An opaque object representing an output data stream.

### ctpl_output_stream_new ()

    CtplOutputStream *  ctpl_output_stream_new              (GOutputStream *stream);

Creates a new CtplOutputStream for a given GOutputStream. This function adds a reference to the GOutputStream.

`stream` : | A GOutputStream
Returns : | A new CtplOutputStream.

Since 0.2

### ctpl_output_stream_ref ()

    CtplOutputStream *  ctpl_output_stream_ref              (CtplOutputStream *stream);

Adds a reference to a CtplOutputStream.

`stream` : | A CtplOutputStream
Returns : | The stream

Since 0.2

### ctpl_output_stream_unref ()

    void                ctpl_output_stream_unref            (CtplOutputStream *stream);

Removes a reference from a CtplOutputStream. When its reference count reaches 0, the stream is destroyed.

`stream` : | A CtplOutputStream

Since 0.2

### ctpl_output_stream_get_stream ()

    GOutputStream *     ctpl_output_stream_get_stream       (CtplOutputStream *stream);

Gets the underlying GOutputStream associated with a CtplOutputStream.

`stream` : | A CtplOutputStream
Returns : | The underlying GOutputStream of `stream`. [transfer none]

Since 0.3

### ctpl_output_stream_write ()

    gboolean            ctpl_output_stream_write            (CtplOutputStream *stream,
                                                             const gchar *data,
                                                             gssize length,
                                                             GError **error);

Writes a buffer to a CtplOutputStream.

`stream` : | A CtplOutputStream
`data` : | The data to write
`length` : | Length of the data in bytes, or -1 if it is a 0-terminated string
`error` : | Return location for errors, or `NULL` to ignore them
Returns : | `TRUE` on success, `FALSE` otherwise.

Since 0.2

### ctpl_output_stream_put_c ()

    gboolean            ctpl_output_stream_put_c            (CtplOutputStream *stream,
                                                             gchar c,
                                                             GError **error);

Writes a character to a CtplOutputStream.

`stream` : | A CtplOutputStream
`c` : | The character to write
`error` : | Return location for errors, or `NULL` to ignore them
Returns : | `TRUE` on success, `FALSE` otherwise.

Since 0.2