williamr@2: /* GLIB - Library of useful routines for C programming williamr@2: * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald williamr@2: * Portions copyright (c) 2006 Nokia Corporation. All rights reserved. williamr@2: * williamr@2: * This library is free software; you can redistribute it and/or williamr@2: * modify it under the terms of the GNU Lesser General Public williamr@2: * License as published by the Free Software Foundation; either williamr@2: * version 2 of the License, or (at your option) any later version. williamr@2: * williamr@2: * This library is distributed in the hope that it will be useful, williamr@2: * but WITHOUT ANY WARRANTY; without even the implied warranty of williamr@2: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU williamr@2: * Lesser General Public License for more details. williamr@2: * williamr@2: * You should have received a copy of the GNU Lesser General Public williamr@2: * License along with this library; if not, write to the williamr@2: * Free Software Foundation, Inc., 59 Temple Place - Suite 330, williamr@2: * Boston, MA 02111-1307, USA. williamr@2: */ williamr@2: williamr@2: /* williamr@2: * Modified by the GLib Team and others 1997-2000. See the AUTHORS williamr@2: * file for a list of people on the GLib Team. See the ChangeLog williamr@2: * files for a list of changes. These files are distributed with williamr@2: * GLib at ftp://ftp.gtk.org/pub/gtk/. williamr@2: */ williamr@2: williamr@2: #ifndef __G_DATASET_H__ williamr@2: #define __G_DATASET_H__ williamr@2: williamr@2: #include <_ansi.h> williamr@2: #include williamr@2: williamr@2: G_BEGIN_DECLS williamr@2: williamr@2: typedef struct _GData GData; williamr@2: williamr@2: typedef void (*GDataForeachFunc) (GQuark key_id, williamr@2: gpointer data, williamr@2: gpointer user_data); williamr@2: williamr@2: /* Keyed Data List williamr@2: */ williamr@2: IMPORT_C void g_datalist_init (GData **datalist); williamr@2: IMPORT_C void g_datalist_clear (GData **datalist); williamr@2: IMPORT_C gpointer g_datalist_id_get_data (GData **datalist, williamr@2: GQuark key_id); williamr@2: IMPORT_C void g_datalist_id_set_data_full (GData **datalist, williamr@2: GQuark key_id, williamr@2: gpointer data, williamr@2: GDestroyNotify destroy_func); williamr@2: IMPORT_C gpointer g_datalist_id_remove_no_notify (GData **datalist, williamr@2: GQuark key_id); williamr@2: IMPORT_C void g_datalist_foreach (GData **datalist, williamr@2: GDataForeachFunc func, williamr@2: gpointer user_data); williamr@2: williamr@2: /** williamr@2: * G_DATALIST_FLAGS_MASK: williamr@2: * williamr@2: * A bitmask that restricts the possible flags passed to williamr@2: * g_datalist_set_flags(). Passing a flags value where williamr@2: * flags & ~G_DATALIST_FLAGS_MASK != 0 is an error. williamr@2: */ williamr@2: #define G_DATALIST_FLAGS_MASK 0x3 williamr@2: williamr@2: IMPORT_C void g_datalist_set_flags (GData **datalist, williamr@2: guint flags); williamr@2: IMPORT_C void g_datalist_unset_flags (GData **datalist, williamr@2: guint flags); williamr@2: IMPORT_C guint g_datalist_get_flags (GData **datalist); williamr@2: williamr@2: #define g_datalist_id_set_data(dl, q, d) \ williamr@2: g_datalist_id_set_data_full ((dl), (q), (d), NULL) williamr@2: #define g_datalist_id_remove_data(dl, q) \ williamr@2: g_datalist_id_set_data ((dl), (q), NULL) williamr@2: #define g_datalist_get_data(dl, k) \ williamr@2: (g_datalist_id_get_data ((dl), g_quark_try_string (k))) williamr@2: #define g_datalist_set_data_full(dl, k, d, f) \ williamr@2: g_datalist_id_set_data_full ((dl), g_quark_from_string (k), (d), (f)) williamr@2: #define g_datalist_remove_no_notify(dl, k) \ williamr@2: g_datalist_id_remove_no_notify ((dl), g_quark_try_string (k)) williamr@2: #define g_datalist_set_data(dl, k, d) \ williamr@2: g_datalist_set_data_full ((dl), (k), (d), NULL) williamr@2: #define g_datalist_remove_data(dl, k) \ williamr@2: g_datalist_id_set_data ((dl), g_quark_try_string (k), NULL) williamr@2: williamr@2: williamr@2: /* Location Associated Keyed Data williamr@2: */ williamr@2: IMPORT_C void g_dataset_destroy (gconstpointer dataset_location); williamr@2: IMPORT_C gpointer g_dataset_id_get_data (gconstpointer dataset_location, williamr@2: GQuark key_id); williamr@2: IMPORT_C void g_dataset_id_set_data_full (gconstpointer dataset_location, williamr@2: GQuark key_id, williamr@2: gpointer data, williamr@2: GDestroyNotify destroy_func); williamr@2: IMPORT_C gpointer g_dataset_id_remove_no_notify (gconstpointer dataset_location, williamr@2: GQuark key_id); williamr@2: IMPORT_C void g_dataset_foreach (gconstpointer dataset_location, williamr@2: GDataForeachFunc func, williamr@2: gpointer user_data); williamr@2: #define g_dataset_id_set_data(l, k, d) \ williamr@2: g_dataset_id_set_data_full ((l), (k), (d), NULL) williamr@2: #define g_dataset_id_remove_data(l, k) \ williamr@2: g_dataset_id_set_data ((l), (k), NULL) williamr@2: #define g_dataset_get_data(l, k) \ williamr@2: (g_dataset_id_get_data ((l), g_quark_try_string (k))) williamr@2: #define g_dataset_set_data_full(l, k, d, f) \ williamr@2: g_dataset_id_set_data_full ((l), g_quark_from_string (k), (d), (f)) williamr@2: #define g_dataset_remove_no_notify(l, k) \ williamr@2: g_dataset_id_remove_no_notify ((l), g_quark_try_string (k)) williamr@2: #define g_dataset_set_data(l, k, d) \ williamr@2: g_dataset_set_data_full ((l), (k), (d), NULL) williamr@2: #define g_dataset_remove_data(l, k) \ williamr@2: g_dataset_id_set_data ((l), g_quark_try_string (k), NULL) williamr@2: williamr@2: G_END_DECLS williamr@2: williamr@2: #endif /* __G_DATASET_H__ */ williamr@2: williamr@2: williamr@2: williamr@2: