![]() |
![]() |
![]() |
GNOME Data Access 4 manual | ![]() |
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties | Signals |
GdaDataModelIter; const GValue * gda_data_model_iter_get_value_at (GdaDataModelIter *iter, gint col); const GValue * gda_data_model_iter_get_value_for_field (GdaDataModelIter *iter, const gchar *field_name); gboolean gda_data_model_iter_set_value_at (GdaDataModelIter *iter, gint col, const GValue *value, GError **error); gboolean gda_data_model_iter_is_valid (GdaDataModelIter *iter); gboolean gda_data_model_iter_move_to_row (GdaDataModelIter *iter, gint row); gboolean gda_data_model_iter_move_next (GdaDataModelIter *iter); gboolean gda_data_model_iter_move_prev (GdaDataModelIter *iter); gint gda_data_model_iter_get_row (GdaDataModelIter *iter); GdaHolder * gda_data_model_iter_get_holder_for_field (GdaDataModelIter *iter, gint col); void gda_data_model_iter_invalidate_contents (GdaDataModelIter *iter);
"current-row" gint : Read / Write "data-model" GdaDataModel* : Read / Write / Construct Only "forced-model" GdaDataModel* : Read / Write "update-model" gboolean : Read / Write
A GdaDataModelIter object is used to iterate through the rows of a GdaDataModel. If the data model is accessible
in a random access way then any number of GdaDataModelIter objects can be created on the same data model, and
if the data model only supports a cursor based access then only one GdaDataModelIter can be created. In any case
creating a GdaDataModelIter should be done using the gda_data_model_create_iter()
method. Note that if
the data model only supports a cursor based access, then calling this method several times will always return
the same GdaDataModelIter, but with its reference count increased by 1 (so you should call g_object_unref()
when
finished with it).
When a GdaDataModelIter is valid (that is when it points to an existing row in the data model it iterates through),
the individual values (corresponding to each column of the data model, at the pointer row) can be accessed
using the gda_data_model_iter_get_value_at()
or gda_data_model_iter_get_value_for_field()
methods
(or in the same way GdaSet's values are accessed as GdaDataModelIter inherits the GdaSet).
Right after being created, a GdaDataModelIter is invalid (does not point to any row of its data model). To read the
first row of the data model, use the gda_data_model_iter_move_next()
method. Calling this method several times will
move the iterator forward, up to when the data model has no more rows and the GdaDataModelIter will be declared invalid
(and gda_data_model_iter_move_next()
has returned FALSE). Note that at this point, the number of rows in the data
model will be known.
If the data model supports it, a GdaDataModelIter can be moved backwards using the gda_data_model_iter_move_prev()
method. However if the iterator is invalid, moving backwards will not be possible (on the contrary to
gda_data_model_iter_move_next()
which moves to the first row).
The gda_data_model_iter_move_to_row()
method, if the iterator can be moved both forward and backwards, can move the
iterator to a specific row (sometimes faster than moving it forward or backwards a number of times).
The following figure illustrates the GdaDataModelIter usage:
const GValue * gda_data_model_iter_get_value_at (GdaDataModelIter *iter, gint col);
Get the value stored at the column col
in iter
. The returned value must not be modified.
|
a GdaDataModelIter object |
|
the requested column |
Returns : |
the GValue, or NULL if the value could not be fetched
|
const GValue * gda_data_model_iter_get_value_for_field (GdaDataModelIter *iter, const gchar *field_name);
Get the value stored at the column field_name
in iter
|
a GdaDataModelIter object |
|
the requested column name |
Returns : |
the GValue, or NULL
|
gboolean gda_data_model_iter_set_value_at (GdaDataModelIter *iter, gint col, const GValue *value, GError **error);
Sets a value in iter
, at the column specified by col
|
a GdaDataModelIter object |
|
the column number |
|
a GValue (not NULL )
|
|
a place to store errors, or NULL
|
Returns : |
TRUE if no error occurred |
gboolean gda_data_model_iter_is_valid (GdaDataModelIter *iter);
Tells if iter
is a valid iterator (if it actually corresponds to a valid row in the model)
|
a GdaDataModelIter object |
Returns : |
TRUE if iter is valid
|
gboolean gda_data_model_iter_move_to_row (GdaDataModelIter *iter, gint row);
Synchronizes the values of the parameters in iter
with the values at the row
row.
If row
is not a valid row, then the returned value is FALSE, and the "current-row"
property is set to -1 (which means that gda_data_model_iter_is_valid()
would return FALSE)
If any other error occurred then the returned value is FALSE, but the "current-row"
property is set to the row
row.
|
a GdaDataModelIter object |
|
the row to set iter to
|
Returns : |
TRUE if no error occurred |
gboolean gda_data_model_iter_move_next (GdaDataModelIter *iter);
Moves iter
one row further than where it already is
(synchronizes the values of the parameters in iter
with the values at the new row).
If the iterator was on the data model's last row, then it can't be moved forward
anymore, and the returned value is FALSE; nore also that the "current-row" property
is set to -1 (which means that gda_data_model_iter_is_valid()
would return FALSE)
If any other error occurred then the returned value is FALSE, but the "current-row" property is set to the new current row (one row more than it was before the call).
|
a GdaDataModelIter object |
Returns : |
TRUE if the iterator is now at the next row |
gboolean gda_data_model_iter_move_prev (GdaDataModelIter *iter);
Moves iter
one row before where it already is (synchronizes the values of the parameters in iter
with the values at the new row).
If the iterator was on the data model's first row, then it can't be moved backwards
anymore, and the returned value is FALSE; note also that the "current-row" property
is set to -1 (which means that gda_data_model_iter_is_valid()
would return FALSE).
If any other error occurred then the returned value is FALSE, but the "current-row" property is set to the new current row (one row less than it was before the call).
|
a GdaDataModelIter object |
Returns : |
TRUE if the iterator is now at the previous row |
gint gda_data_model_iter_get_row (GdaDataModelIter *iter);
Get the row which iter
represents in the data model
|
a GdaDataModelIter object |
Returns : |
the row number, or -1 if iter is invalid
|
GdaHolder * gda_data_model_iter_get_holder_for_field (GdaDataModelIter *iter, gint col);
Fetch a pointer to the GdaHolder object which is synchronized with data at
column col
|
a GdaDataModelIter object |
|
the requested column |
Returns : |
the GdaHolder, or NULL if an error occurred
|
void gda_data_model_iter_invalidate_contents (GdaDataModelIter *iter);
Declare all the parameters in iter
invalid, without modifying the
GdaDataModel iter
is for or changing the row it represents. This method
is for internal usage. Note that for gda_data_model_iter_is_valid()
to return FALSE
,
it is also necessary to set the "current-row" property to -1.
|
a GdaDataModelIter object |
"current-row"
property"current-row" gint : Read / Write
Current represented row in the data model.
Allowed values: >= G_MAXULONG
Default value: -1
"data-model"
property"data-model" GdaDataModel* : Read / Write / Construct Only
Data model for which the iter is for.
"forced-model"
property"forced-model" GdaDataModel* : Read / Write
Overrides the data model the iter is attached to (reserved for internal usage).
"end-of-data"
signalvoid user_function (GdaDataModelIter *iter, gpointer user_data) : Run First
Gets emitted when iter
has reached the end of available data (which means the previous
row it was on was the last one).
|
the GdaDataModelIter |
|
user data set when the signal handler was connected. |
"row-changed"
signalvoid user_function (GdaDataModelIter *iter, gint row, gpointer user_data) : Run First
Gets emitted when the row iter
is currently pointing has changed
|
the GdaDataModelIter |
|
the new iter's row |
|
user data set when the signal handler was connected. |