Back to home page

EIC code displayed by LXR

 
 

    


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

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_HASH_H__
0028 #define __G_HASH_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/gtypes.h>
0035 #include <glib/garray.h>
0036 #include <glib/glist.h>
0037 
0038 G_BEGIN_DECLS
0039 
0040 typedef struct _GHashTable  GHashTable;
0041 
0042 typedef gboolean  (*GHRFunc)  (gpointer  key,
0043                                gpointer  value,
0044                                gpointer  user_data);
0045 
0046 typedef struct _GHashTableIter GHashTableIter;
0047 
0048 struct _GHashTableIter
0049 {
0050   /*< private >*/
0051   gpointer      dummy1;
0052   gpointer      dummy2;
0053   gpointer      dummy3;
0054   int           dummy4;
0055   gboolean      dummy5;
0056   gpointer      dummy6;
0057 };
0058 
0059 GLIB_AVAILABLE_IN_ALL
0060 GHashTable* g_hash_table_new               (GHashFunc       hash_func,
0061                                             GEqualFunc      key_equal_func);
0062 GLIB_AVAILABLE_IN_ALL
0063 GHashTable* g_hash_table_new_full          (GHashFunc       hash_func,
0064                                             GEqualFunc      key_equal_func,
0065                                             GDestroyNotify  key_destroy_func,
0066                                             GDestroyNotify  value_destroy_func);
0067 GLIB_AVAILABLE_IN_2_72
0068 GHashTable *g_hash_table_new_similar       (GHashTable     *other_hash_table);
0069 GLIB_AVAILABLE_IN_ALL
0070 void        g_hash_table_destroy           (GHashTable     *hash_table);
0071 GLIB_AVAILABLE_IN_ALL
0072 gboolean    g_hash_table_insert            (GHashTable     *hash_table,
0073                                             gpointer        key,
0074                                             gpointer        value);
0075 GLIB_AVAILABLE_IN_ALL
0076 gboolean    g_hash_table_replace           (GHashTable     *hash_table,
0077                                             gpointer        key,
0078                                             gpointer        value);
0079 GLIB_AVAILABLE_IN_ALL
0080 gboolean    g_hash_table_add               (GHashTable     *hash_table,
0081                                             gpointer        key);
0082 GLIB_AVAILABLE_IN_ALL
0083 gboolean    g_hash_table_remove            (GHashTable     *hash_table,
0084                                             gconstpointer   key);
0085 GLIB_AVAILABLE_IN_ALL
0086 void        g_hash_table_remove_all        (GHashTable     *hash_table);
0087 GLIB_AVAILABLE_IN_ALL
0088 gboolean    g_hash_table_steal             (GHashTable     *hash_table,
0089                                             gconstpointer   key);
0090 GLIB_AVAILABLE_IN_2_58
0091 gboolean    g_hash_table_steal_extended    (GHashTable     *hash_table,
0092                                             gconstpointer   lookup_key,
0093                                             gpointer       *stolen_key,
0094                                             gpointer       *stolen_value);
0095 GLIB_AVAILABLE_IN_ALL
0096 void        g_hash_table_steal_all         (GHashTable     *hash_table);
0097 GLIB_AVAILABLE_IN_2_76
0098 GPtrArray * g_hash_table_steal_all_keys    (GHashTable     *hash_table);
0099 GLIB_AVAILABLE_IN_2_76
0100 GPtrArray * g_hash_table_steal_all_values  (GHashTable     *hash_table);
0101 GLIB_AVAILABLE_IN_ALL
0102 gpointer    g_hash_table_lookup            (GHashTable     *hash_table,
0103                                             gconstpointer   key);
0104 GLIB_AVAILABLE_IN_ALL
0105 gboolean    g_hash_table_contains          (GHashTable     *hash_table,
0106                                             gconstpointer   key);
0107 GLIB_AVAILABLE_IN_ALL
0108 gboolean    g_hash_table_lookup_extended   (GHashTable     *hash_table,
0109                                             gconstpointer   lookup_key,
0110                                             gpointer       *orig_key,
0111                                             gpointer       *value);
0112 GLIB_AVAILABLE_IN_ALL
0113 void        g_hash_table_foreach           (GHashTable     *hash_table,
0114                                             GHFunc          func,
0115                                             gpointer        user_data);
0116 GLIB_AVAILABLE_IN_ALL
0117 gpointer    g_hash_table_find              (GHashTable     *hash_table,
0118                                             GHRFunc         predicate,
0119                                             gpointer        user_data);
0120 GLIB_AVAILABLE_IN_ALL
0121 guint       g_hash_table_foreach_remove    (GHashTable     *hash_table,
0122                                             GHRFunc         func,
0123                                             gpointer        user_data);
0124 GLIB_AVAILABLE_IN_ALL
0125 guint       g_hash_table_foreach_steal     (GHashTable     *hash_table,
0126                                             GHRFunc         func,
0127                                             gpointer        user_data);
0128 GLIB_AVAILABLE_IN_ALL
0129 guint       g_hash_table_size              (GHashTable     *hash_table);
0130 GLIB_AVAILABLE_IN_ALL
0131 GList *     g_hash_table_get_keys          (GHashTable     *hash_table);
0132 GLIB_AVAILABLE_IN_ALL
0133 GList *     g_hash_table_get_values        (GHashTable     *hash_table);
0134 GLIB_AVAILABLE_IN_2_40
0135 gpointer *  g_hash_table_get_keys_as_array (GHashTable     *hash_table,
0136                                             guint          *length);
0137 GLIB_AVAILABLE_IN_2_76
0138 GPtrArray * g_hash_table_get_keys_as_ptr_array (GHashTable *hash_table);
0139 
0140 GLIB_AVAILABLE_IN_2_76
0141 GPtrArray * g_hash_table_get_values_as_ptr_array (GHashTable *hash_table);
0142 
0143 GLIB_AVAILABLE_IN_ALL
0144 void        g_hash_table_iter_init         (GHashTableIter *iter,
0145                                             GHashTable     *hash_table);
0146 GLIB_AVAILABLE_IN_ALL
0147 gboolean    g_hash_table_iter_next         (GHashTableIter *iter,
0148                                             gpointer       *key,
0149                                             gpointer       *value);
0150 GLIB_AVAILABLE_IN_ALL
0151 GHashTable* g_hash_table_iter_get_hash_table (GHashTableIter *iter);
0152 GLIB_AVAILABLE_IN_ALL
0153 void        g_hash_table_iter_remove       (GHashTableIter *iter);
0154 GLIB_AVAILABLE_IN_2_30
0155 void        g_hash_table_iter_replace      (GHashTableIter *iter,
0156                                             gpointer        value);
0157 GLIB_AVAILABLE_IN_ALL
0158 void        g_hash_table_iter_steal        (GHashTableIter *iter);
0159 
0160 GLIB_AVAILABLE_IN_ALL
0161 GHashTable* g_hash_table_ref               (GHashTable     *hash_table);
0162 GLIB_AVAILABLE_IN_ALL
0163 void        g_hash_table_unref             (GHashTable     *hash_table);
0164 
0165 #define g_hash_table_freeze(hash_table) ((void)0) GLIB_DEPRECATED_MACRO_IN_2_26
0166 #define g_hash_table_thaw(hash_table) ((void)0) GLIB_DEPRECATED_MACRO_IN_2_26
0167 
0168 /* Hash Functions
0169  */
0170 GLIB_AVAILABLE_IN_ALL
0171 gboolean g_str_equal    (gconstpointer  v1,
0172                          gconstpointer  v2);
0173 
0174 /* Macro for optimization in the case it is not used as callback function */
0175 #define g_str_equal(v1, v2) (strcmp ((const char *) (v1), (const char *) (v2)) == 0)
0176 
0177 GLIB_AVAILABLE_IN_ALL
0178 guint    g_str_hash     (gconstpointer  v);
0179 
0180 GLIB_AVAILABLE_IN_ALL
0181 gboolean g_int_equal    (gconstpointer  v1,
0182                          gconstpointer  v2);
0183 GLIB_AVAILABLE_IN_ALL
0184 guint    g_int_hash     (gconstpointer  v);
0185 
0186 GLIB_AVAILABLE_IN_ALL
0187 gboolean g_int64_equal  (gconstpointer  v1,
0188                          gconstpointer  v2);
0189 GLIB_AVAILABLE_IN_ALL
0190 guint    g_int64_hash   (gconstpointer  v);
0191 
0192 GLIB_AVAILABLE_IN_ALL
0193 gboolean g_double_equal (gconstpointer  v1,
0194                          gconstpointer  v2);
0195 GLIB_AVAILABLE_IN_ALL
0196 guint    g_double_hash  (gconstpointer  v);
0197 
0198 GLIB_AVAILABLE_IN_ALL
0199 guint    g_direct_hash  (gconstpointer  v) G_GNUC_CONST;
0200 GLIB_AVAILABLE_IN_ALL
0201 gboolean g_direct_equal (gconstpointer  v1,
0202                          gconstpointer  v2) G_GNUC_CONST;
0203 
0204 G_END_DECLS
0205 
0206 #endif /* __G_HASH_H__ */