Back to home page

EIC code displayed by LXR

 
 

    


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

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_TREE_H__
0028 #define __G_TREE_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/gnode.h>
0035 
0036 G_BEGIN_DECLS
0037 
0038 #undef G_TREE_DEBUG
0039 
0040 typedef struct _GTree  GTree;
0041 
0042 /**
0043  * GTreeNode:
0044  *
0045  * An opaque type which identifies a specific node in a #GTree.
0046  *
0047  * Since: 2.68
0048  */
0049 typedef struct _GTreeNode GTreeNode;
0050 
0051 typedef gboolean (*GTraverseFunc) (gpointer  key,
0052                                    gpointer  value,
0053                                    gpointer  data);
0054 
0055 /**
0056  * GTraverseNodeFunc:
0057  * @node: a #GTreeNode
0058  * @data: user data passed to g_tree_foreach_node()
0059  *
0060  * Specifies the type of function passed to g_tree_foreach_node(). It is
0061  * passed each node, together with the @user_data parameter passed to
0062  * g_tree_foreach_node(). If the function returns %TRUE, the traversal is
0063  * stopped.
0064  *
0065  * Returns: %TRUE to stop the traversal
0066  * Since: 2.68
0067  */
0068 typedef gboolean (*GTraverseNodeFunc) (GTreeNode *node,
0069                                        gpointer   data);
0070 
0071 /* Balanced binary trees
0072  */
0073 GLIB_AVAILABLE_IN_ALL
0074 GTree*   g_tree_new             (GCompareFunc      key_compare_func);
0075 GLIB_AVAILABLE_IN_ALL
0076 GTree*   g_tree_new_with_data   (GCompareDataFunc  key_compare_func,
0077                                  gpointer          key_compare_data);
0078 GLIB_AVAILABLE_IN_ALL
0079 GTree*   g_tree_new_full        (GCompareDataFunc  key_compare_func,
0080                                  gpointer          key_compare_data,
0081                                  GDestroyNotify    key_destroy_func,
0082                                  GDestroyNotify    value_destroy_func);
0083 GLIB_AVAILABLE_IN_2_68
0084 GTreeNode *g_tree_node_first (GTree *tree);
0085 GLIB_AVAILABLE_IN_2_68
0086 GTreeNode *g_tree_node_last (GTree *tree);
0087 GLIB_AVAILABLE_IN_2_68
0088 GTreeNode *g_tree_node_previous (GTreeNode *node);
0089 GLIB_AVAILABLE_IN_2_68
0090 GTreeNode *g_tree_node_next (GTreeNode *node);
0091 GLIB_AVAILABLE_IN_ALL
0092 GTree*   g_tree_ref             (GTree            *tree);
0093 GLIB_AVAILABLE_IN_ALL
0094 void     g_tree_unref           (GTree            *tree);
0095 GLIB_AVAILABLE_IN_ALL
0096 void     g_tree_destroy         (GTree            *tree);
0097 GLIB_AVAILABLE_IN_2_68
0098 GTreeNode *g_tree_insert_node (GTree *tree,
0099                                gpointer key,
0100                                gpointer value);
0101 GLIB_AVAILABLE_IN_ALL
0102 void     g_tree_insert          (GTree            *tree,
0103                                  gpointer          key,
0104                                  gpointer          value);
0105 GLIB_AVAILABLE_IN_2_68
0106 GTreeNode *g_tree_replace_node (GTree *tree,
0107                                 gpointer key,
0108                                 gpointer value);
0109 GLIB_AVAILABLE_IN_ALL
0110 void     g_tree_replace         (GTree            *tree,
0111                                  gpointer          key,
0112                                  gpointer          value);
0113 GLIB_AVAILABLE_IN_ALL
0114 gboolean g_tree_remove          (GTree            *tree,
0115                                  gconstpointer     key);
0116 
0117 GLIB_AVAILABLE_IN_2_70
0118 void     g_tree_remove_all      (GTree            *tree);
0119 
0120 GLIB_AVAILABLE_IN_ALL
0121 gboolean g_tree_steal           (GTree            *tree,
0122                                  gconstpointer     key);
0123 GLIB_AVAILABLE_IN_2_68
0124 gpointer g_tree_node_key (GTreeNode *node);
0125 GLIB_AVAILABLE_IN_2_68
0126 gpointer g_tree_node_value (GTreeNode *node);
0127 GLIB_AVAILABLE_IN_2_68
0128 GTreeNode *g_tree_lookup_node (GTree *tree,
0129                                gconstpointer key);
0130 GLIB_AVAILABLE_IN_ALL
0131 gpointer g_tree_lookup          (GTree            *tree,
0132                                  gconstpointer     key);
0133 GLIB_AVAILABLE_IN_ALL
0134 gboolean g_tree_lookup_extended (GTree            *tree,
0135                                  gconstpointer     lookup_key,
0136                                  gpointer         *orig_key,
0137                                  gpointer         *value);
0138 GLIB_AVAILABLE_IN_ALL
0139 void     g_tree_foreach         (GTree            *tree,
0140                                  GTraverseFunc     func,
0141                                  gpointer      user_data);
0142 GLIB_AVAILABLE_IN_2_68
0143 void g_tree_foreach_node (GTree *tree,
0144                           GTraverseNodeFunc func,
0145                           gpointer user_data);
0146 
0147 GLIB_DEPRECATED
0148 void     g_tree_traverse        (GTree            *tree,
0149                                  GTraverseFunc     traverse_func,
0150                                  GTraverseType     traverse_type,
0151                                  gpointer          user_data);
0152 
0153 GLIB_AVAILABLE_IN_2_68
0154 GTreeNode *g_tree_search_node (GTree *tree,
0155                                GCompareFunc search_func,
0156                                gconstpointer user_data);
0157 GLIB_AVAILABLE_IN_ALL
0158 gpointer g_tree_search          (GTree            *tree,
0159                                  GCompareFunc      search_func,
0160                                  gconstpointer     user_data);
0161 GLIB_AVAILABLE_IN_2_68
0162 GTreeNode *g_tree_lower_bound (GTree *tree,
0163                                gconstpointer key);
0164 GLIB_AVAILABLE_IN_2_68
0165 GTreeNode *g_tree_upper_bound (GTree *tree,
0166                                gconstpointer key);
0167 GLIB_AVAILABLE_IN_ALL
0168 gint     g_tree_height          (GTree            *tree);
0169 GLIB_AVAILABLE_IN_ALL
0170 gint     g_tree_nnodes          (GTree            *tree);
0171 
0172 #ifdef G_TREE_DEBUG
0173 /*< private >*/
0174 #ifndef __GTK_DOC_IGNORE__
0175 void g_tree_dump (GTree *tree);
0176 #endif  /* !__GTK_DOC_IGNORE__ */
0177 #endif  /* G_TREE_DEBUG */
0178 
0179 G_END_DECLS
0180 
0181 #endif /* __G_TREE_H__ */