## GsfBlob GsfBlob |

## Synopsis

                        GsfBlob;
                        GsfBlobClass;
                        GsfStructuredBlob;
    GsfBlob *           gsf_blob_new                        (gsize size,
                                                             gconstpointer data_to_copy,
                                                             GError **error);
    gsize               gsf_blob_get_size                   (GsfBlob const *blob);
    gconstpointer       gsf_blob_peek_data                  (GsfBlob const *blob);
    gboolean            gsf_structured_blob_write           (GsfStructuredBlob *blob,
                                                             GsfOutfile *container);
    GsfStructuredBlob * gsf_structured_blob_read            (GsfInput *input);

## Description

## Details

### GsfBlob

    typedef struct _GsfBlob GsfBlob;

### GsfBlobClass

    typedef struct _GsfBlobClass GsfBlobClass;

### GsfStructuredBlob

    typedef struct _GsfStructuredBlob GsfStructuredBlob;

### gsf_blob_new ()

    GsfBlob *           gsf_blob_new                        (gsize size,
                                                             gconstpointer data_to_copy,
                                                             GError **error);

Creates a new GsfBlob object to hold the specified data. The blob can then be used as a facility for reference-counting for the data. The data is copied internally, so the blob does not hold references to external chunks of memory.

`size` : | Size of the data in bytes.
`data_to_copy` : | Data which will be copied into the blob, or `NULL` if `size` is zero. [in][array length=size][element-type guint8]
`error` : | location to store error, or `NULL`.
Returns : | A newly-created GsfBlob, or `NULL` if the data could not be copied. Error domain: GSF_ERROR Possible errors: GSF_ERROR_OUT_OF_MEMORY if the `data_to_copy` could not be copied.

### gsf_blob_get_size ()

    gsize               gsf_blob_get_size                   (GsfBlob const *blob);

Queries the size in bytes of the data stored in the blob.

`blob` : | A GsfBlob.
Returns : | Size in bytes, or 0 if the data is `NULL`.

### gsf_blob_peek_data ()

    gconstpointer       gsf_blob_peek_data                  (GsfBlob const *blob);

Queries a pointer to the data stored in the blob. This does not copy the data for you; it returns a pointer to the actual buffer which the blob uses internally, so you should not free this buffer on your own.

`blob` : | A GsfBlob.
Returns : | Pointer to the data stored in the blob, or `NULL` if the size of the data is zero. [transfer none]

### gsf_structured_blob_write ()

    gboolean            gsf_structured_blob_write           (GsfStructuredBlob *blob,
                                                             GsfOutfile *container);

Dumps structured blob `blob` onto the `container`. Will fail if the output is not an Outfile and blob has multiple streams.

`blob` : | GsfStructuredBlob
`container` : | GsfOutfile
Returns : | `TRUE` on success.

### gsf_structured_blob_read ()

    GsfStructuredBlob * gsf_structured_blob_read            (GsfInput *input);

Create a tree of binary blobs with unknown content from a GsfInput or GsfInfile and store it in a newly created GsfStructuredBlob.

`input` : | An input (potentially a GsfInfile) holding the blob
Returns : | a new GsfStructuredBlob object which the caller is responsible for. [transfer full]