# GdaDataModelHash

## Name

GdaDataModelHash -- An implementation of GdaDataModel based on a hash table.

## Synopsis

    struct      GdaDataModelHashPrivate;
    GdaDataModel* gda_data_model_hash_new       (gint cols);
    const GdaValue* gda_data_model_hash_get_value_at
                                                (GdaDataModel *model,
                                                 gint col,
                                                 gint row);
    void        gda_data_model_hash_clear       (GdaDataModelHash *model);
    void        gda_data_model_hash_set_n_columns
                                                (GdaDataModelHash *model,
                                                 gint cols);
    void        gda_data_model_hash_insert_row  (GdaDataModelHash *model,
                                                 gint rownum,
                                                 GdaRow *row);
    const GdaRow* gda_data_model_hash_get_row   (GdaDataModel *model,
                                                 gint row);

## Description

Unlike GdaDataModelArray, this data model implementation stores the GdaRow in a hash table. So it only retrieves from the database backend exactly the requested rows (while in GdaDataModelArray you have to retrieve all the rows until the one requested).

## Details

### struct GdaDataModelHashPrivate

    struct GdaDataModelHashPrivate;

### gda_data_model_hash_new ()

    GdaDataModel* gda_data_model_hash_new       (gint cols);

`cols` : | number of columns for rows in this data model.
Returns : | A pointer to the newly created GdaDataModel.

### gda_data_model_hash_get_value_at ()

    const GdaValue* gda_data_model_hash_get_value_at
                                                (GdaDataModel *model,
                                                 gint col,
                                                 gint row);

Retrieve the value at a specified column and row.

`model` : | the GdaDataModelHash to retrieve the value from.
`col` : | column number (starting from 0).
`row` : | row number (starting from 0).
Returns : | a pointer to a GdaValue.

### gda_data_model_hash_clear ()

    void        gda_data_model_hash_clear       (GdaDataModelHash *model);

Frees all the rows inserted in `model`.

`model` : | the model to clear

### gda_data_model_hash_set_n_columns ()

    void        gda_data_model_hash_set_n_columns
                                                (GdaDataModelHash *model,
                                                 gint cols);

Set the nunber of columns for rows inserted in this model. `cols` must be greater than or equal to 0.

This function calls gda_data_model_hash_clear to free the existing rows if any.

`model` : | the GdaDataModelHash which is gonna hold the row.
`cols` : | the number of columns for rows inserted in `model`.

### gda_data_model_hash_insert_row ()

    void        gda_data_model_hash_insert_row  (GdaDataModelHash *model,
                                                 gint rownum,
                                                 GdaRow *row);

Inserts a row in the model.

`model` : | the GdaDataModelHash which is gonna hold the row.
`rownum` : | the number of the row.
`row` : | the row to insert. The model is responsible of freeing it!

### gda_data_model_hash_get_row ()

    const GdaRow* gda_data_model_hash_get_row   (GdaDataModel *model,
                                                 gint row);

Retrieves a row from the underlying hash table.

`model` : | the GdaDataModelHash
`row` : | row number
Returns : | a GdaRow or NULL if the requested row is not in the hash table.