GdaDataAccessWrapper

GdaDataAccessWrapper — Offers a random access on top of a cursor-only access data model

Stability Level

Stable, unless otherwise indicated

Synopsis

struct              GdaDataAccessWrapper;
struct              GdaDataAccessWrapperClass;
                    GdaDataAccessWrapperPrivate;
GdaDataModel *      gda_data_access_wrapper_new         (GdaDataModel *model);
gboolean            gda_data_access_wrapper_set_mapping (GdaDataAccessWrapper *wrapper,
                                                         const gint *mapping,
                                                         gint mapping_size);

Object Hierarchy

  GObject
   +----GdaDataAccessWrapper

Implemented Interfaces

GdaDataAccessWrapper implements GdaDataModel.

Properties

  "model"                    GdaDataModel*         : Read / Write / Construct Only

Description

The GdaDataAccessWrapper object simply wraps another GdaDataModel data model object and allows data to be accessed in a random way while remaining memory efficient as much as possible.

Details

struct GdaDataAccessWrapper

struct GdaDataAccessWrapper;

struct GdaDataAccessWrapperClass

struct GdaDataAccessWrapperClass {
	GObjectClass                   parent_class;
};

GdaDataAccessWrapperPrivate

typedef struct _GdaDataAccessWrapperPrivate GdaDataAccessWrapperPrivate;

gda_data_access_wrapper_new ()

GdaDataModel *      gda_data_access_wrapper_new         (GdaDataModel *model);

Creates a new GdaDataModel object which buffers the rows of model. This object is useful only if model can only be accessed using cursor based method.

model :

a GdaDataModel

Returns :

a pointer to the newly created GdaDataModel. [transfer full]

gda_data_access_wrapper_set_mapping ()

gboolean            gda_data_access_wrapper_set_mapping (GdaDataAccessWrapper *wrapper,
                                                         const gint *mapping,
                                                         gint mapping_size);

wrapper will report as many columns as mapping_size, and for each value at position 'i' in mapping, wrapper will report the 'i'th column, mapped to the wrapped data model column at position mapping[i]. For example if mapping is {3, 4, 0}, then wrapper will report 3 columns, respectively mapped to the 4th, 5th and 1st columns of the wrapped data model (as column numbers start at 0).

If mapping is NULL, then no mapping is done and wrapper's columns will be the same as the wrapped data model.

If a column in mapping does not exist in the wrapped data model, then it is simply ignored (no error reported).

Please note that if wrapper has already been used and if the wrapped data model offers a cursor forward access mode, then this method will return FALSE and no action will be done.

If the mapping is applied, then any existing iterator will be invalid, and wrapper is reset as if it had just been created.

wrapper :

a GdaDataAccessWrapper object

mapping :

an array of gint which represents the mapping between wrapper's columns and the columns of the wrapped data model. [allow-none][array length=mapping_size]

mapping_size :

the size of mapping.

Returns :

TRUE if the mapping actually changed

Since 5.2

Property Details

The "model" property

  "model"                    GdaDataModel*         : Read / Write / Construct Only

Data model being wrapped.

See Also

GdaDataModel