This file is indexed.

/usr/include/libgda-5.0/libgda/gda-data-model-iter.h is in libgda-5.0-dev 5.2.4-9.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/*
 * Copyright (C) 2006 - 2007 Murray Cumming <murrayc@murrayc.com>
 * Copyright (C) 2006 - 2012 Vivien Malerba <malerba@gnome-db.org>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA  02110-1301, USA.
 */


#ifndef __GDA_DATA_MODEL_ITER_H_
#define __GDA_DATA_MODEL_ITER_H_

#include "gda-decl.h"
#include "gda-set.h"

G_BEGIN_DECLS

#define GDA_TYPE_DATA_MODEL_ITER          (gda_data_model_iter_get_type())
#define GDA_DATA_MODEL_ITER(obj)          G_TYPE_CHECK_INSTANCE_CAST (obj, gda_data_model_iter_get_type(), GdaDataModelIter)
#define GDA_DATA_MODEL_ITER_CLASS(klass)  G_TYPE_CHECK_CLASS_CAST (klass, gda_data_model_iter_get_type (), GdaDataModelIterClass)
#define GDA_IS_DATA_MODEL_ITER(obj)       G_TYPE_CHECK_INSTANCE_TYPE (obj, gda_data_model_iter_get_type ())


/* error reporting */
extern GQuark gda_data_model_iter_error_quark (void);
#define GDA_DATA_MODEL_ITER_ERROR gda_data_model_iter_error_quark ()

typedef enum
{
	GDA_DATA_MODEL_ITER_COLUMN_OUT_OF_RANGE_ERROR
} GdaDataModelIterError;


/* struct for the object's data */
struct _GdaDataModelIter
{
	GdaSet                     object;
	GdaDataModelIterPrivate   *priv;
};

/* struct for the object's class */
struct _GdaDataModelIterClass
{
	GdaSetClass                parent_class;

	void                    (* row_changed)      (GdaDataModelIter *iter, gint row);
	void                    (* end_of_data)      (GdaDataModelIter *iter);

	/*< private >*/
	/* Padding for future expansion */
	void (*_gda_reserved1) (void);
	void (*_gda_reserved2) (void);
	void (*_gda_reserved3) (void);
	void (*_gda_reserved4) (void);
};

/**
 * SECTION:gda-data-model-iter
 * @short_description: Data model iterator
 * @title: GdaDataModelIter
 * @stability: Stable
 * @see_also: #GdaDataModel
 *
 * 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:
 * <mediaobject>
 *   <imageobject role="html">
 *     <imagedata fileref="GdaDataModelIter.png" format="PNG" contentwidth="190mm"/>
 *   </imageobject>
 *   <textobject>
 *     <phrase>GdaDataModelIter's usage</phrase>
 *   </textobject>
 * </mediaobject>
 *
 * Note: the new #GdaDataModelIter does not hold any reference to the data model it iterates through (ie.
 * if this data model is destroyed at some point, the new iterator will become useless but in
 * any case it will not prevent the data model from being destroyed).
 *
 * Note: when the data model emits the "reset" signal, then:
 * <itemizedlist>
 *  <listitem><para>the number of columns of the iterator can change to reflect the new data model
 *    being itered on. In this case the iterator's position is reset as if it was
 *    just created</para></listitem>
 *  <listitem><para>some column types which were unknown (i.e. GDA_TYPE_NULL type), can change
 *    to their correct type. In this case there is no other iterator change</para></listitem>
 *  <listitem><para>some column types which were not GDA_TYPE_NULL can change, and in this case
 *    the iterator's position is reset as if it was just created</para></listitem>
 * </itemizedlist>
 */

GType             gda_data_model_iter_get_type             (void) G_GNUC_CONST;

const GValue     *gda_data_model_iter_get_value_at         (GdaDataModelIter *iter, gint col);
const GValue     *gda_data_model_iter_get_value_at_e       (GdaDataModelIter *iter, gint col, GError **error);
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_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);

void              gda_data_model_iter_invalidate_contents  (GdaDataModelIter *iter);
gboolean          gda_data_model_iter_is_valid             (GdaDataModelIter *iter);

GdaHolder        *gda_data_model_iter_get_holder_for_field (GdaDataModelIter *iter, gint col);
gint              gda_data_model_iter_get_column_for_param (GdaDataModelIter *iter, GdaHolder *param);

#define gda_data_model_iter_move_at_row gda_data_model_iter_move_to_row

G_END_DECLS

#endif