GdaSet

GdaSet — Container for several values

Stability Level

Stable, unless otherwise indicated

Functions

GQuark gda_set_error_quark ()
GdaSetNode * gda_set_node_new ()
void gda_set_node_free ()
GdaSetNode * gda_set_node_copy ()
GdaHolder * gda_set_node_get_holder ()
void gda_set_node_set_holder ()
GdaDataModel * gda_set_node_get_data_model ()
void gda_set_node_set_data_model ()
gint gda_set_node_get_source_column ()
void gda_set_node_set_source_column ()
GdaSetGroup * gda_set_group_new ()
void gda_set_group_free ()
GdaSetGroup * gda_set_group_copy ()
void gda_set_group_add_node ()
GdaSetNode * gda_set_group_get_node ()
GSList * gda_set_group_get_nodes ()
gint gda_set_group_get_n_nodes ()
void gda_set_group_set_source ()
GdaSetSource * gda_set_group_get_source ()
GdaSetSource * gda_set_source_new ()
void gda_set_source_free ()
GdaSetSource * gda_set_source_copy ()
void gda_set_source_add_node ()
GSList * gda_set_source_get_nodes ()
gint gda_set_source_get_n_nodes ()
GdaDataModel * gda_set_source_get_data_model ()
void gda_set_source_set_data_model ()
GdaSet * gda_set_new ()
GdaSet * gda_set_copy ()
GdaSet * gda_set_new_inline ()
GdaSet * gda_set_new_from_spec_string ()
GdaSet * gda_set_new_from_spec_node ()
gboolean gda_set_set_holder_value ()
const GValue * gda_set_get_holder_value ()
GSList * gda_set_get_holders ()
GdaHolder * gda_set_get_holder ()
GdaHolder * gda_set_get_nth_holder ()
gboolean gda_set_add_holder ()
void gda_set_remove_holder ()
void gda_set_merge_with_set ()
gboolean gda_set_is_valid ()
void gda_set_replace_source_model ()
GSList * gda_set_get_nodes ()
GdaSetNode * gda_set_get_node ()
GSList * gda_set_get_sources ()
GdaSetSource * gda_set_get_source_for_model ()
GdaSetSource * gda_set_get_source ()
GSList * gda_set_get_groups ()
GdaSetGroup * gda_set_get_group ()
GdaSet * gda_set_new_read_only ()

Properties

gchar * description Read / Write
gpointer holders Write / Construct Only
gchar * id Read / Write
gchar * name Read / Write
gboolean validate-changes Read / Write

Types and Values

#define GDA_SET_ERROR
enum GdaSetError

Object Hierarchy

    GBoxed
    ├── GdaSetGroup
    ├── GdaSetNode
    ╰── GdaSetSource
    GObject
    ╰── GdaSet
        ╰── GdaDataModelIter

Description

The GdaSet object is a container for several values (as GdaHolder objects). Each GdaSet object also maintains some publicly accessible information about the GdaHolder objects, through the GdaSetNode, GdaSetSource and GdaSetGroup structures (see gda_set_get_node(), gda_set_get_source() and gda_set_get_group()).

It is possible to control the values a GdaHolder can have in the GdaSet by connecting to the

"before-holder-change" signal.

Functions

gda_set_error_quark ()

GQuark
gda_set_error_quark (void);

gda_set_node_new ()

GdaSetNode *
gda_set_node_new (GdaHolder *holder);

Creates a new GdaSetNode struct.

Return: (transfer full): a new GdaSetNode struct.

Parameters

holder

a GdaHolder to used by new GdaSetNode

 

Since: 5.2


gda_set_node_free ()

void
gda_set_node_free (GdaSetNode *node);

Frees any resources taken by node struct. If node is NULL, then nothing happens.

Parameters

node

a GdaSetNode struct to free.

[allow-none]

Since: 5.2


gda_set_node_copy ()

GdaSetNode *
gda_set_node_copy (GdaSetNode *node);

Copy constructor.

Parameters

node

a GdaSetNode to copy from

 

Returns

a new GdaSetNode

Since: 5.2


gda_set_node_get_holder ()

GdaHolder *
gda_set_node_get_holder (GdaSetNode *node);

Parameters

node

a GdaSetNode struct to get holder from

 

Returns

the GdaHolder used by node .

[transfer none]

Since: 5.2


gda_set_node_set_holder ()

void
gda_set_node_set_holder (GdaSetNode *node,
                         GdaHolder *holder);

Set a GdaHolder to node .

Parameters

node

a GdaSetNode struct to set holder to

 

Since: 5.2


gda_set_node_get_data_model ()

GdaDataModel *
gda_set_node_get_data_model (GdaSetNode *node);

Parameters

node

a GdaSetNode struct to get holder from

 

Returns

the GdaDataModel used by node .

[transfer none]

Since: 5.2


gda_set_node_set_data_model ()

void
gda_set_node_set_data_model (GdaSetNode *node,
                             GdaDataModel *model);

Set a GdaDataModel to be used by node . model increment its reference counting when set. Internally referenced column number is set to first column in model .

Parameters

node

a GdaSetNode struct to set data model to

 

model

a GdaDataModel to be used by node .

[allow-none]

Since: 5.2


gda_set_node_get_source_column ()

gint
gda_set_node_get_source_column (GdaSetNode *node);

Parameters

node

a GdaSetNode struct to get column source from

 

Returns

the number of column referenced in a given GdaDataModel. If negative no column is referenced or no GdaDataModel is used by node .

Since: 5.2


gda_set_node_set_source_column ()

void
gda_set_node_set_source_column (GdaSetNode *node,
                                gint column);

Set column number in the GdaDataModel used node . If no GdaDataModel is set then column is set to invalid (-1);

Parameters

node

a GdaSetNode struct to set column source to, from an used data model

 

Since: 5.2


gda_set_group_new ()

GdaSetGroup *
gda_set_group_new (GdaSetNode *node);

Creates a new GdaSetGroup struct. If source is NULL then new group contains just one GdaSetNode.

Return: (transfer full): a new GdaSetGroup struct.

Parameters

node

a GdaSetNode struct

 

Since: 5.2


gda_set_group_free ()

void
gda_set_group_free (GdaSetGroup *sg);

Frees any resources taken by sg struct. If sg is NULL, then nothing happens.

Parameters

sg

a GdaSetGroup struct to free.

[allow-none]

Since: 5.2


gda_set_group_copy ()

GdaSetGroup *
gda_set_group_copy (GdaSetGroup *sg);

Copy constructor.

Parameters

sg

a GdaSetGroup

 

Returns

a new GdaSetGroup

Since: 5.2


gda_set_group_add_node ()

void
gda_set_group_add_node (GdaSetGroup *sg,
                        GdaSetNode *node);

Parameters

sg

a GdaSetGroup

 

node

a GdaSetNode to set

 

Since: 5.2


gda_set_group_get_node ()

GdaSetNode *
gda_set_group_get_node (GdaSetGroup *sg);

This method always return first GdaSetNode in sg .

Parameters

sg

a GdaSetGroup

 

Returns

first GdaSetNode in sg .

Since: 5.2


gda_set_group_get_nodes ()

GSList *
gda_set_group_get_nodes (GdaSetGroup *sg);

Returns a GSList with the GdaSetNode grouped by sg . You must use g_slist_free on returned list.

Parameters

sg

a GdaSetGroup

 

Returns

a GSList with all nodes in sg .

[transfer none][element-type Gda.SetNode]

Since: 5.2


gda_set_group_get_n_nodes ()

gint
gda_set_group_get_n_nodes (GdaSetGroup *sg);

Parameters

sg

a GdaSetGroup

 

Returns

number of nodes in sg .

Since: 5.2


gda_set_group_set_source ()

void
gda_set_group_set_source (GdaSetGroup *sg,
                          GdaSetSource *source);

Parameters

sg

a GdaSetGroup

 

source

a GdaSetSource to set

 

Since: 5.2


gda_set_group_get_source ()

GdaSetSource *
gda_set_group_get_source (GdaSetGroup *sg);

Parameters

sg

a GdaSetGroup

 

Returns

a GdaSetSource. If NULL then sg contains just one element.

Since: 5.2


gda_set_source_new ()

GdaSetSource *
gda_set_source_new (GdaDataModel *model);

Creates a new GdaSetSource struct.

Return: (transfer full): a new GdaSetSource struct.

Parameters

model

a GdaDataModel

 

Since: 5.2


gda_set_source_free ()

void
gda_set_source_free (GdaSetSource *s);

Frees any resources taken by s struct. If s is NULL, then nothing happens.

Parameters

s

a GdaSetSource struct to free.

[allow-none]

Since: 5.2


gda_set_source_copy ()

GdaSetSource *
gda_set_source_copy (GdaSetSource *s);

Copy constructor.

Parameters

s

a GdaSetGroup

 

Returns

a new GdaSetSource

Since: 5.2


gda_set_source_add_node ()

void
gda_set_source_add_node (GdaSetSource *s,
                         GdaSetNode *node);

Set a GdaDataModel

Parameters

s

a GdaSetSource

 

node

a GdaSetNode to add

 

Since: 5.2


gda_set_source_get_nodes ()

GSList *
gda_set_source_get_nodes (GdaSetSource *s);

Parameters

s

a GdaSetSource

 

Returns

a list of GdaSetNode structs.

[transfer none][element-type Gda.SetNode]

Since: 5.2


gda_set_source_get_n_nodes ()

gint
gda_set_source_get_n_nodes (GdaSetSource *s);

Parameters

s

a GdaSetSource

 

Returns

number of nodes in sg .

Since: 5.2


gda_set_source_get_data_model ()

GdaDataModel *
gda_set_source_get_data_model (GdaSetSource *s);

Parameters

s

a GdaSetSource

 

Returns

a GdaDataModel used by s .

[transfer none]

Since: 5.2


gda_set_source_set_data_model ()

void
gda_set_source_set_data_model (GdaSetSource *s,
                               GdaDataModel *model);

Set a GdaDataModel

Parameters

s

a GdaSetSource struct to free

 

model

a GdaDataModel

 

Since: 5.2


gda_set_new ()

GdaSet *
gda_set_new (GSList *holders);

Creates a new GdaSet object, and populates it with the list given as argument. The list can then be freed as it is copied. All the value holders in holders are referenced counted and modified, so they should not be used anymore afterwards.

Parameters

holders

a list of GdaHolder objects.

[element-type Gda.Holder][transfer none]

Returns

a new GdaSet object


gda_set_copy ()

GdaSet *
gda_set_copy (GdaSet *set);

Creates a new GdaSet object, copy of set

Parameters

set

a GdaSet object

 

Returns

a new GdaSet object.

[transfer full]


gda_set_new_inline ()

GdaSet *
gda_set_new_inline (gint nb,
                    ...);

Creates a new GdaSet containing holders defined by each triplet in ... For each triplet (id, Glib type and value), the value must be of the correct type (gchar * if type is G_STRING, ...)

Note that this function is a utility function and that only a limited set of types are supported. Trying to use an unsupported type will result in a warning, and the returned value holder holding a safe default value.

Parameters

nb

the number of value holders which will be contained in the new GdaSet

 

...

a serie of a (const gchar*) id, (GType) type, and value

 

Returns

a new GdaSet object.

[transfer full]


gda_set_new_from_spec_string ()

GdaSet *
gda_set_new_from_spec_string (const gchar *xml_spec,
                              GError **error);

Creates a new GdaSet object from the xml_spec specifications

Parameters

xml_spec

a string

 

error

a place to store the error, or NULL.

[allow-none]

Returns

a new object, or NULL if an error occurred.

[transfer full]


gda_set_new_from_spec_node ()

GdaSet *
gda_set_new_from_spec_node (xmlNodePtr xml_spec,
                            GError **error);

Creates a new GdaSet object from the xml_spec specifications

Parameters

xml_spec

a xmlNodePtr for a <parameters> tag

 

error

a place to store the error, or NULL.

[allow-none]

Returns

a new object, or NULL if an error occurred.

[transfer full]


gda_set_set_holder_value ()

gboolean
gda_set_set_holder_value (GdaSet *set,
                          GError **error,
                          const gchar *holder_id,
                          ...);

Set the value of the GdaHolder which ID is holder_id to a specified value

Parameters

set

a GdaSet object

 

error

a place to store errors, or NULL.

[allow-none]

holder_id

the ID of the holder to set the value

 

...

value, of the correct type, depending on the requested holder's type (not NULL)

 

Returns

TRUE if no error occurred and the value was set correctly


gda_set_get_holder_value ()

const GValue *
gda_set_get_holder_value (GdaSet *set,
                          const gchar *holder_id);

Get the value of the GdaHolder which ID is holder_id

Parameters

set

a GdaSet object

 

holder_id

the ID of the holder to set the value

 

Returns

the requested GValue, or NULL (see gda_holder_get_value()).

[allow-none][transfer none]


gda_set_get_holders ()

GSList *
gda_set_get_holders (GdaSet *set);

Returns

a list of GdaHolder objects in the set.

[transfer none][element-type Gda.Holder]


gda_set_get_holder ()

GdaHolder *
gda_set_get_holder (GdaSet *set,
                    const gchar *holder_id);

Finds a GdaHolder using its ID

Parameters

set

a GdaSet object

 

holder_id

the ID of the requested value holder

 

Returns

the requested GdaHolder or NULL.

[transfer none]


gda_set_get_nth_holder ()

GdaHolder *
gda_set_get_nth_holder (GdaSet *set,
                        gint pos);

Finds a GdaHolder using its position

Parameters

set

a GdaSet object

 

pos

the position of the requested GdaHolder, starting at 0

 

Returns

the requested GdaHolder or NULL.

[transfer none]

Since: 4.2


gda_set_add_holder ()

gboolean
gda_set_add_holder (GdaSet *set,
                    GdaHolder *holder);

Adds holder to the list of holders managed within set .

NOTE: if set already has a GdaHolder with the same ID as holder , then holder will not be added to the set (even if holder 's type or value is not the same as the one already in set ).

Parameters

set

a GdaSet object

 

holder

a GdaHolder object.

[transfer none]

Returns

TRUE if holder has been added to set (and FALSE if it has not been added because there is another GdaHolder with the same ID)


gda_set_remove_holder ()

void
gda_set_remove_holder (GdaSet *set,
                       GdaHolder *holder);

Removes a GdaHolder from the list of holders managed by set

Parameters

set

a GdaSet object

 

holder

the GdaHolder to remove from set

 

gda_set_merge_with_set ()

void
gda_set_merge_with_set (GdaSet *set,
                        GdaSet *set_to_merge);

Add to set all the holders of set_to_merge . Note1: only the GdaHolder of set_to_merge for which no holder in set has the same ID are merged Note2: all the GdaHolder merged in set are still used by set_to_merge .

Parameters

set

a GdaSet object

 

set_to_merge

a GdaSet object

 

gda_set_is_valid ()

gboolean
gda_set_is_valid (GdaSet *set,
                  GError **error);

This method tells if all set 's GdaHolder objects are valid, and if they represent a valid combination of values, as defined by rules external to Libgda: the "validate-set" signal is emitted and if none of the signal handlers return an error, then the returned value is TRUE, otherwise the return value is FALSE as soon as a signal handler returns an error.

Parameters

set

a GdaSet object

 

error

a place to store validation errors, or NULL.

[allow-none]

Returns

TRUE if the set is valid


gda_set_replace_source_model ()

void
gda_set_replace_source_model (GdaSet *set,
                              GdaSetSource *source,
                              GdaDataModel *model);

Replaces source->data_model with model , which must have the same characteristics as source->data_model (same column types)

Also for each GdaHolder for which source->data_model is a source model, this method calls gda_holder_set_source_model() with model to replace the source by the new model

Parameters

set

a GdaSet object

 

source

a pointer to a GdaSetSource in set

 

model

a GdaDataModel

 

Since: 4.2


gda_set_get_nodes ()

GSList *
gda_set_get_nodes (GdaSet *set);

Returns

a list of GdaSetNode objects in the set.

[transfer none][element-type Gda.SetNode]


gda_set_get_node ()

GdaSetNode *
gda_set_get_node (GdaSet *set,
                  GdaHolder *holder);

Finds a GdaSetNode holding information for holder , don't modify the returned structure

Parameters

set

a GdaSet object

 

holder

a GdaHolder object

 

Returns

the requested GdaSetNode or NULL.

[transfer none]


gda_set_get_sources ()

GSList *
gda_set_get_sources (GdaSet *set);

Returns

a list of GdaSetSource objects in the set.

[transfer none][element-type Gda.SetSource]


gda_set_get_source_for_model ()

GdaSetSource *
gda_set_get_source_for_model (GdaSet *set,
                              GdaDataModel *model);

Finds the GdaSetSource structure used in set for which model is a the data model (the returned structure should not be modified).

Parameters

set

a GdaSet object

 

model

a GdaDataModel object

 

Returns

the requested GdaSetSource pointer or NULL.

[transfer none]


gda_set_get_source ()

GdaSetSource *
gda_set_get_source (GdaSet *set,
                    GdaHolder *holder);

Finds a GdaSetSource which contains the GdaDataModel restricting the possible values of holder , don't modify the returned structure.

Parameters

set

a GdaSet object

 

holder

a GdaHolder object

 

Returns

the requested GdaSetSource or NULL.

[transfer none]


gda_set_get_groups ()

GSList *
gda_set_get_groups (GdaSet *set);

Returns

a list of GdaSetGroup objects in the set.

[transfer none][element-type Gda.SetGroup]


gda_set_get_group ()

GdaSetGroup *
gda_set_get_group (GdaSet *set,
                   GdaHolder *holder);

Finds a GdaSetGroup which lists a GdaSetNode containing holder , don't modify the returned structure.

Parameters

set

a GdaSet object

 

holder

a GdaHolder object

 

Returns

the requested GdaSetGroup or NULL.

[transfer none]


gda_set_new_read_only ()

GdaSet *
gda_set_new_read_only (GSList *holders);

Creates a new GdaSet like gda_set_new(), but does not allow modifications to any of the GdaHolder object in holders . This function is used for Libgda's database providers' implementation.

Parameters

holders

a list of GdaHolder objects.

[element-type Gda.Holder][transfer none]

Returns

a new GdaSet object

Since: 4.2

Types and Values

GDA_SET_ERROR

#define GDA_SET_ERROR gda_set_error_quark ()

enum GdaSetError

Members

GDA_SET_XML_SPEC_ERROR

   

GDA_SET_HOLDER_NOT_FOUND_ERROR

   

GDA_SET_INVALID_ERROR

   

GDA_SET_READ_ONLY_ERROR

   

GDA_SET_IMPLEMENTATION_ERROR

   

Property Details

The “description” property

  “description”              gchar *

Description.

Flags: Read / Write

Default value: NULL


The “holders” property

  “holders”                  gpointer

GdaHolder objects the set should contain.

Flags: Write / Construct Only


The “id” property

  “id”                       gchar *

Id.

Flags: Read / Write

Default value: NULL


The “name” property

  “name”                     gchar *

Name.

Flags: Read / Write

Default value: NULL


The “validate-changes” property

  “validate-changes”         gboolean

Defines if the "validate-set" signal gets emitted when any holder in the data set changes. This property also affects the GdaHolder:validate-changes property.

Flags: Read / Write

Default value: TRUE

Since: 5.2.0

Signal Details

The “holder-attr-changed” signal

void
user_function (GdaSet    *set,
               GdaHolder *holder,
               gchar     *attr_name,
               GValue    *attr_value,
               gpointer   user_data)

Gets emitted when an attribute for any of the GdaHolder objects managed by set has changed

Parameters

set

the GdaSet

 

holder

the GdaHolder for which an attribute changed

 

attr_name

attribute's name

 

attr_value

attribute's value

 

user_data

user data set when the signal handler was connected.

 

Flags: Run First


The “holder-changed” signal

void
user_function (GdaSet    *gdaset,
               GdaHolder *arg1,
               gpointer   user_data)

Flags: Run First


The “holder-type-set” signal

void
user_function (GdaSet    *set,
               GdaHolder *holder,
               gpointer   user_data)

Gets emitted when holder in set has its type finally set, in case it was GDA_TYPE_NULL

Parameters

set

the GdaSet

 

holder

the GdaHolder for which the GType has been set

 

user_data

user data set when the signal handler was connected.

 

Flags: Run First

Since: 4.2


The “public-data-changed” signal

void
user_function (GdaSet  *set,
               gpointer user_data)

Gets emitted when set 's public data (GdaSetNode, GdaSetGroup or GdaSetSource values) have changed

Parameters

set

the GdaSet

 

user_data

user data set when the signal handler was connected.

 

Flags: Run First


The “source-model-changed” signal

void
user_function (GdaSet  *set,
               gpointer source,
               gpointer user_data)

Gets emitted when the data model in source has changed

Parameters

set

the GdaSet

 

source

the GdaSetSource for which the data_model attribute has changed

 

user_data

user data set when the signal handler was connected.

 

Flags: Run First

Since: 4.2


The “validate-holder-change” signal

GError*
user_function (GdaSet    *set,
               GdaHolder *holder,
               GValue    *new_value,
               gpointer   user_data)

Gets emitted when a GdaHolder's in set is going to change its value. One can connect to this signal to control which values holder can have (for example to implement some business rules)

Parameters

set

the GdaSet

 

holder

the GdaHolder which is going to change

 

new_value

the proposed new value for holder

 

user_data

user data set when the signal handler was connected.

 

Returns

NULL if holder is allowed to change its value to new_value , or a GError otherwise.

Flags: Run Last


The “validate-set” signal

GError*
user_function (GdaSet  *set,
               gpointer user_data)

Gets emitted when gda_set_is_valid() is called, use this signal to control which combination of values set 's holder can have (for example to implement some business rules)

Parameters

set

the GdaSet

 

user_data

user data set when the signal handler was connected.

 

Returns

NULL if set 's contents has been validated, or a GError otherwise.

Flags: Run Last

See Also

GdaHolder