## Blobs

Blobs — Blobs handling

## Synopsis

                        GdaBlobOp;
    glong               gda_blob_op_get_length              (GdaBlobOp *op);
    glong               gda_blob_op_read                    (GdaBlobOp *op,
                                                             GdaBlob *blob,
                                                             glong offset,
                                                             glong size);
    gboolean            gda_blob_op_read_all                (GdaBlobOp *op,
                                                             GdaBlob *blob);
    glong               gda_blob_op_write                   (GdaBlobOp *op,
                                                             GdaBlob *blob,
                                                             glong offset);
    gboolean            gda_blob_op_write_all               (GdaBlobOp *op,
                                                             GdaBlob *blob);

## Object Hierarchy

      GObject
       +----GdaBlobOp

## Description

This object is a base class for individual database providers which support BLOB types. It supports operations to read and write data in a BLOB.

## Details

### GdaBlobOp

    typedef struct _GdaBlobOp GdaBlobOp;

### gda_blob_op_get_length ()

    glong               gda_blob_op_get_length              (GdaBlobOp *op);

Opens an existing BLOB. The BLOB must be initialized by gda_connection_create_blob or obtained from a GValue. FIXME: `gda_connection_create_blob()` no longer exists.

`op` : | an existing GdaBlobOp
Returns : | the length of the blob in bytes. In case of error, -1 is returned and the provider should have added an error (a GdaConnectionEvent) to the connection.

### gda_blob_op_read ()

    glong               gda_blob_op_read                    (GdaBlobOp *op,
                                                             GdaBlob *blob,
                                                             glong offset,
                                                             glong size);

Reads a chunk of bytes from the BLOB into `blob`.

`op` : | a GdaBlobOp
`blob` : | a GdaBlob to read data to
`offset` : | offset to read from the start of the blob (starts at 0)
`size` : | maximum number of bytes to read.
Returns : | the number of bytes actually read. In case of error, -1 is returned and the provider should have added an error to the connection.

### gda_blob_op_read_all ()

    gboolean            gda_blob_op_read_all                (GdaBlobOp *op,
                                                             GdaBlob *blob);

Reads the whole contents of the blob manipulated by `op` into `blob`

`op` : | a GdaBlobOp
`blob` : | a GdaBlob to read data to
Returns : | TRUE if `blob->data` contains the whole BLOB manipulated by `op`

### gda_blob_op_write ()

    glong               gda_blob_op_write                   (GdaBlobOp *op,
                                                             GdaBlob *blob,
                                                             glong offset);

Writes a chunk of bytes from a `blob` to the BLOB accessible through `op`.

`op` : | a GdaBlobOp
`blob` : | a GdaBlob which contains the data to write
`offset` : | offset to write from the start of the blob (starts at 0)
Returns : | the number of bytes written. In case of error, -1 is returned and the provider should have added an error to the connection.

### gda_blob_op_write_all ()

    gboolean            gda_blob_op_write_all               (GdaBlobOp *op,
                                                             GdaBlob *blob);

Writes the whole contents of `blob` into the blob manipulated by `op`. If necessary the resulting blob is truncated from its previous length.

`op` : | a GdaBlobOp
`blob` : | a GdaBlob which contains the data to write
Returns : | TRUE on success