Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-06 08:41:16

0001 /* GLIB - Library of useful routines for C programming
0002  * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-or-later
0005  *
0006  * This library is free software; you can redistribute it and/or
0007  * modify it under the terms of the GNU Lesser General Public
0008  * License as published by the Free Software Foundation; either
0009  * version 2.1 of the License, or (at your option) any later version.
0010  *
0011  * This library is distributed in the hope that it will be useful,
0012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
0013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0014  * Lesser General Public License for more details.
0015  *
0016  * You should have received a copy of the GNU Lesser General Public
0017  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
0018  */
0019 
0020 /*
0021  * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
0022  * file for a list of people on the GLib Team.  See the ChangeLog
0023  * files for a list of changes.  These files are distributed with
0024  * GLib at ftp://ftp.gtk.org/pub/gtk/.
0025  */
0026 
0027 #ifndef __G_DATASET_H__
0028 #define __G_DATASET_H__
0029 
0030 #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
0031 #error "Only <glib.h> can be included directly."
0032 #endif
0033 
0034 #include <glib/gquark.h>
0035 
0036 G_BEGIN_DECLS
0037 
0038 typedef struct _GData           GData;
0039 
0040 typedef void            (*GDataForeachFunc)     (GQuark         key_id,
0041                                                  gpointer       data,
0042                                                  gpointer       user_data);
0043 
0044 /* Keyed Data List
0045  */
0046 GLIB_AVAILABLE_IN_ALL
0047 void     g_datalist_init                (GData            **datalist);
0048 GLIB_AVAILABLE_IN_ALL
0049 void     g_datalist_clear               (GData            **datalist);
0050 GLIB_AVAILABLE_IN_ALL
0051 gpointer g_datalist_id_get_data         (GData            **datalist,
0052                      GQuark             key_id);
0053 GLIB_AVAILABLE_IN_ALL
0054 void     g_datalist_id_set_data_full    (GData            **datalist,
0055                      GQuark             key_id,
0056                      gpointer           data,
0057                      GDestroyNotify     destroy_func);
0058 GLIB_AVAILABLE_IN_2_74
0059 void     g_datalist_id_remove_multiple  (GData            **datalist,
0060                                          GQuark            *keys,
0061                                          gsize              n_keys);
0062 
0063 typedef gpointer (*GDuplicateFunc) (gpointer data, gpointer user_data);
0064 
0065 GLIB_AVAILABLE_IN_2_34
0066 gpointer g_datalist_id_dup_data         (GData            **datalist,
0067                                          GQuark             key_id,
0068                                          GDuplicateFunc     dup_func,
0069                      gpointer           user_data);
0070 GLIB_AVAILABLE_IN_2_34
0071 gboolean g_datalist_id_replace_data     (GData            **datalist,
0072                                          GQuark             key_id,
0073                                          gpointer           oldval,
0074                                          gpointer           newval,
0075                                          GDestroyNotify     destroy,
0076                      GDestroyNotify    *old_destroy);
0077 
0078 GLIB_AVAILABLE_IN_ALL
0079 gpointer g_datalist_id_remove_no_notify (GData            **datalist,
0080                      GQuark             key_id);
0081 GLIB_AVAILABLE_IN_ALL
0082 void     g_datalist_foreach             (GData            **datalist,
0083                      GDataForeachFunc   func,
0084                      gpointer           user_data);
0085 
0086 /**
0087  * G_DATALIST_FLAGS_MASK:
0088  *
0089  * A bitmask that restricts the possible flags passed to
0090  * g_datalist_set_flags(). Passing a flags value where
0091  * flags & ~G_DATALIST_FLAGS_MASK != 0 is an error.
0092  */
0093 #define G_DATALIST_FLAGS_MASK 0x3
0094 
0095 GLIB_AVAILABLE_IN_ALL
0096 void     g_datalist_set_flags           (GData            **datalist,
0097                      guint              flags);
0098 GLIB_AVAILABLE_IN_ALL
0099 void     g_datalist_unset_flags         (GData            **datalist,
0100                      guint              flags);
0101 GLIB_AVAILABLE_IN_ALL
0102 guint    g_datalist_get_flags           (GData            **datalist);
0103 
0104 #define   g_datalist_id_set_data(dl, q, d)      \
0105      g_datalist_id_set_data_full ((dl), (q), (d), NULL)
0106 #define   g_datalist_id_remove_data(dl, q)      \
0107      g_datalist_id_set_data ((dl), (q), NULL)
0108 #define   g_datalist_set_data_full(dl, k, d, f) \
0109      g_datalist_id_set_data_full ((dl), g_quark_from_string (k), (d), (f))
0110 #define   g_datalist_remove_no_notify(dl, k)    \
0111      g_datalist_id_remove_no_notify ((dl), g_quark_try_string (k))
0112 #define   g_datalist_set_data(dl, k, d)         \
0113      g_datalist_set_data_full ((dl), (k), (d), NULL)
0114 #define   g_datalist_remove_data(dl, k)         \
0115      g_datalist_id_set_data ((dl), g_quark_try_string (k), NULL)
0116 
0117 /* Location Associated Keyed Data
0118  */
0119 GLIB_AVAILABLE_IN_ALL
0120 void      g_dataset_destroy             (gconstpointer    dataset_location);
0121 GLIB_AVAILABLE_IN_ALL
0122 gpointer  g_dataset_id_get_data         (gconstpointer    dataset_location,
0123                                          GQuark           key_id);
0124 GLIB_AVAILABLE_IN_ALL
0125 gpointer  g_datalist_get_data            (GData  **datalist,
0126                       const gchar *key);
0127 GLIB_AVAILABLE_IN_ALL
0128 void      g_dataset_id_set_data_full    (gconstpointer    dataset_location,
0129                                          GQuark           key_id,
0130                                          gpointer         data,
0131                                          GDestroyNotify   destroy_func);
0132 GLIB_AVAILABLE_IN_ALL
0133 gpointer  g_dataset_id_remove_no_notify (gconstpointer    dataset_location,
0134                                          GQuark           key_id);
0135 GLIB_AVAILABLE_IN_ALL
0136 void      g_dataset_foreach             (gconstpointer    dataset_location,
0137                                          GDataForeachFunc func,
0138                                          gpointer         user_data);
0139 #define   g_dataset_id_set_data(l, k, d)        \
0140      g_dataset_id_set_data_full ((l), (k), (d), NULL)
0141 #define   g_dataset_id_remove_data(l, k)        \
0142      g_dataset_id_set_data ((l), (k), NULL)
0143 #define   g_dataset_get_data(l, k)              \
0144      (g_dataset_id_get_data ((l), g_quark_try_string (k)))
0145 #define   g_dataset_set_data_full(l, k, d, f)   \
0146      g_dataset_id_set_data_full ((l), g_quark_from_string (k), (d), (f))
0147 #define   g_dataset_remove_no_notify(l, k)      \
0148      g_dataset_id_remove_no_notify ((l), g_quark_try_string (k))
0149 #define   g_dataset_set_data(l, k, d)           \
0150      g_dataset_set_data_full ((l), (k), (d), NULL)
0151 #define   g_dataset_remove_data(l, k)           \
0152      g_dataset_id_set_data ((l), g_quark_try_string (k), NULL)
0153 
0154 G_END_DECLS
0155 
0156 #endif /* __G_DATASET_H__ */