Top |
Functions
#define | g_dataset_id_set_data() |
void | g_dataset_id_set_data_full () |
void | (*GDestroyNotify) () |
gpointer | g_dataset_id_get_data () |
#define | g_dataset_id_remove_data() |
gpointer | g_dataset_id_remove_no_notify () |
#define | g_dataset_set_data() |
#define | g_dataset_set_data_full() |
#define | g_dataset_get_data() |
#define | g_dataset_remove_data() |
#define | g_dataset_remove_no_notify() |
void | g_dataset_foreach () |
void | (*GDataForeachFunc) () |
void | g_dataset_destroy () |
Description
Datasets associate groups of data elements with particular memory locations. These are useful if you need to associate data with a structure returned from an external library. Since you cannot modify the structure, you use its location in memory as the key into a dataset, where you can associate any number of data elements with it.
There are two forms of most of the dataset functions. The first form
uses strings to identify the data elements associated with a
location. The second form uses GQuark identifiers, which are
created with a call to g_quark_from_string()
or
g_quark_from_static_string()
. The second form is quicker, since it
does not require looking up the string in the hash table of GQuark
identifiers.
There is no function to create a dataset. It is automatically created as soon as you add elements to it.
To add data elements to a dataset use g_dataset_id_set_data()
,
g_dataset_id_set_data_full()
, g_dataset_set_data()
and
g_dataset_set_data_full()
.
To get data elements from a dataset use g_dataset_id_get_data()
and
g_dataset_get_data()
.
To iterate over all data elements in a dataset use
g_dataset_foreach()
(not thread-safe).
To remove data elements from a dataset use
g_dataset_id_remove_data()
and g_dataset_remove_data()
.
To destroy a dataset, use g_dataset_destroy()
.
Functions
g_dataset_id_set_data()
#define g_dataset_id_set_data(l, k, d)
Sets the data element associated with the given GQuark id. Any previous data with the same key is removed, and its destroy function is called.
Parameters
l |
the location identifying the dataset. |
|
k |
the GQuark id to identify the data element. |
|
d |
the data element. |
g_dataset_id_set_data_full ()
void g_dataset_id_set_data_full (gconstpointer dataset_location
,GQuark key_id
,gpointer data
,GDestroyNotify destroy_func
);
Sets the data element associated with the given GQuark id, and also the function to call when the data element is destroyed. Any previous data with the same key is removed, and its destroy function is called.
[skip]
Parameters
dataset_location |
the location identifying the dataset. |
[not nullable] |
key_id |
the GQuark id to identify the data element. |
|
data |
the data element. |
|
destroy_func |
the function to call when the data element is removed. This function will be called with the data element and can be used to free any memory allocated for it. |
GDestroyNotify ()
void
(*GDestroyNotify) (gpointer data
);
Specifies the type of function which is called when a data element is destroyed. It is passed the pointer to the data element and should free any memory and resources allocated for it.
g_dataset_id_get_data ()
gpointer g_dataset_id_get_data (gconstpointer dataset_location
,GQuark key_id
);
Gets the data element corresponding to a GQuark.
Parameters
dataset_location |
the location identifying the dataset. |
[not nullable] |
key_id |
the GQuark id to identify the data element. |
g_dataset_id_remove_data()
#define g_dataset_id_remove_data(l, k)
Removes a data element from a dataset. The data element's destroy function is called if it has been set.
g_dataset_id_remove_no_notify ()
gpointer g_dataset_id_remove_no_notify (gconstpointer dataset_location
,GQuark key_id
);
Removes an element, without calling its destroy notification function.
[skip]
Parameters
dataset_location |
the location identifying the dataset. |
[not nullable] |
key_id |
the GQuark ID identifying the data element. |
g_dataset_set_data()
#define g_dataset_set_data(l, k, d)
Sets the data corresponding to the given string identifier.
g_dataset_set_data_full()
#define g_dataset_set_data_full(l, k, d, f)
Sets the data corresponding to the given string identifier, and the function to call when the data element is destroyed.
g_dataset_get_data()
#define g_dataset_get_data(l, k)
Gets the data element corresponding to a string.
Returns
the data element corresponding to
the string, or NULL
if it is not found.
[transfer none][nullable]
g_dataset_remove_data()
#define g_dataset_remove_data(l, k)
Removes a data element corresponding to a string. Its destroy function is called if it has been set.
g_dataset_remove_no_notify()
#define g_dataset_remove_no_notify(l, k)
Removes an element, without calling its destroy notifier.
g_dataset_foreach ()
void g_dataset_foreach (gconstpointer dataset_location
,GDataForeachFunc func
,gpointer user_data
);
Calls the given function for each data element which is associated
with the given location. Note that this function is NOT thread-safe.
So unless dataset_location
can be protected from any modifications
during invocation of this function, it should not be called.
func
can make changes to the dataset, but the iteration will not
reflect changes made during the g_dataset_foreach()
call, other
than skipping over elements that are removed.
GDataForeachFunc ()
void (*GDataForeachFunc) (GQuark key_id
,gpointer data
,gpointer user_data
);
Specifies the type of function passed to g_dataset_foreach()
. It is
called with each GQuark id and associated data element, together
with the user_data
parameter supplied to g_dataset_foreach()
.
Parameters
key_id |
the GQuark id to identifying the data element. |
|
data |
the data element. |
|
user_data |
user data passed to |
[closure] |
g_dataset_destroy ()
void
g_dataset_destroy (gconstpointer dataset_location
);
Destroys the dataset, freeing all memory allocated, and calling any destroy functions set for data elements.