golden hour
/usr/include/glib-2.0/glib
⬆️ Go Up
Upload
File/Folder
Size
Actions
deprecated
-
Del
OK
galloca.h
3.82 KB
Del
OK
garray.h
11.12 KB
Del
OK
gasyncqueue.h
5.59 KB
Del
OK
gatomic.h
26.57 KB
Del
OK
gbacktrace.h
2.73 KB
Del
OK
gbase64.h
2.27 KB
Del
OK
gbitlock.h
2.83 KB
Del
OK
gbookmarkfile.h
12.33 KB
Del
OK
gbytes.h
3.26 KB
Del
OK
gcharset.h
1.54 KB
Del
OK
gchecksum.h
3.77 KB
Del
OK
gconvert.h
5.78 KB
Del
OK
gdataset.h
6.1 KB
Del
OK
gdate.h
12.13 KB
Del
OK
gdatetime.h
12.44 KB
Del
OK
gdir.h
1.6 KB
Del
OK
genviron.h
2.31 KB
Del
OK
gerror.h
10.88 KB
Del
OK
gfileutils.h
7.68 KB
Del
OK
ggettext.h
2.37 KB
Del
OK
ghash.h
7.7 KB
Del
OK
ghmac.h
3.39 KB
Del
OK
ghook.h
6.21 KB
Del
OK
ghostutils.h
1.42 KB
Del
OK
gi18n-lib.h
1.34 KB
Del
OK
gi18n.h
1.14 KB
Del
OK
giochannel.h
13.63 KB
Del
OK
gkeyfile.h
14.56 KB
Del
OK
glib-autocleanups.h
4.79 KB
Del
OK
glist.h
6.77 KB
Del
OK
gmacros.h
45.12 KB
Del
OK
gmain.h
27.55 KB
Del
OK
gmappedfile.h
1.94 KB
Del
OK
gmarkup.h
10.62 KB
Del
OK
gmem.h
14.51 KB
Del
OK
gmessages.h
26.56 KB
Del
OK
gnode.h
8.5 KB
Del
OK
goption.h
15.72 KB
Del
OK
gpattern.h
1.74 KB
Del
OK
gpoll.h
4.03 KB
Del
OK
gprimes.h
1.65 KB
Del
OK
gprintf.h
1.94 KB
Del
OK
gqsort.h
1.46 KB
Del
OK
gquark.h
2.63 KB
Del
OK
gqueue.h
7.57 KB
Del
OK
grand.h
3.11 KB
Del
OK
grcbox.h
3.9 KB
Del
OK
grefcount.h
3.89 KB
Del
OK
grefstring.h
1.82 KB
Del
OK
gregex.h
27.44 KB
Del
OK
gscanner.h
8.65 KB
Del
OK
gsequence.h
8.6 KB
Del
OK
gshell.h
1.71 KB
Del
OK
gslice.h
4.48 KB
Del
OK
gslist.h
6.4 KB
Del
OK
gspawn.h
12.89 KB
Del
OK
gstdio.h
4.99 KB
Del
OK
gstrfuncs.h
13.14 KB
Del
OK
gstring.h
8.14 KB
Del
OK
gstringchunk.h
2.08 KB
Del
OK
gstrvbuilder.h
1.58 KB
Del
OK
gtestutils.h
34.31 KB
Del
OK
gthread.h
18.32 KB
Del
OK
gthreadpool.h
3.73 KB
Del
OK
gtimer.h
2.52 KB
Del
OK
gtimezone.h
3.81 KB
Del
OK
gtrashstack.h
1.86 KB
Del
OK
gtree.h
6.3 KB
Del
OK
gtypes.h
20.04 KB
Del
OK
gunicode.h
40.25 KB
Del
OK
guri.h
16.06 KB
Del
OK
gutils.h
14.22 KB
Del
OK
guuid.h
1.26 KB
Del
OK
gvariant.h
28.87 KB
Del
OK
gvarianttype.h
12.93 KB
Del
OK
gversion.h
1.93 KB
Del
OK
gversionmacros.h
46.56 KB
Del
OK
gwin32.h
4.56 KB
Del
OK
Edit: gnode.h
/* GLIB - Library of useful routines for C programming * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, see <http://www.gnu.org/licenses/>. */ /* * Modified by the GLib Team and others 1997-2000. See the AUTHORS * file for a list of people on the GLib Team. See the ChangeLog * files for a list of changes. These files are distributed with * GLib at ftp://ftp.gtk.org/pub/gtk/. */ #ifndef __G_NODE_H__ #define __G_NODE_H__ #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) #error "Only <glib.h> can be included directly." #endif #include <glib/gmem.h> G_BEGIN_DECLS typedef struct _GNode GNode; /* Tree traverse flags */ typedef enum { G_TRAVERSE_LEAVES = 1 << 0, G_TRAVERSE_NON_LEAVES = 1 << 1, G_TRAVERSE_ALL = G_TRAVERSE_LEAVES | G_TRAVERSE_NON_LEAVES, G_TRAVERSE_MASK = 0x03, G_TRAVERSE_LEAFS = G_TRAVERSE_LEAVES, G_TRAVERSE_NON_LEAFS = G_TRAVERSE_NON_LEAVES } GTraverseFlags; /* Tree traverse orders */ typedef enum { G_IN_ORDER, G_PRE_ORDER, G_POST_ORDER, G_LEVEL_ORDER } GTraverseType; typedef gboolean (*GNodeTraverseFunc) (GNode *node, gpointer data); typedef void (*GNodeForeachFunc) (GNode *node, gpointer data); /* N-way tree implementation */ struct _GNode { gpointer data; GNode *next; GNode *prev; GNode *parent; GNode *children; }; /** * G_NODE_IS_ROOT: * @node: a #GNode * * Returns %TRUE if a #GNode is the root of a tree. * * Returns: %TRUE if the #GNode is the root of a tree * (i.e. it has no parent or siblings) */ #define G_NODE_IS_ROOT(node) (((GNode*) (node))->parent == NULL && \ ((GNode*) (node))->prev == NULL && \ ((GNode*) (node))->next == NULL) /** * G_NODE_IS_LEAF: * @node: a #GNode * * Returns %TRUE if a #GNode is a leaf node. * * Returns: %TRUE if the #GNode is a leaf node * (i.e. it has no children) */ #define G_NODE_IS_LEAF(node) (((GNode*) (node))->children == NULL) GLIB_AVAILABLE_IN_ALL GNode* g_node_new (gpointer data); GLIB_AVAILABLE_IN_ALL void g_node_destroy (GNode *root); GLIB_AVAILABLE_IN_ALL void g_node_unlink (GNode *node); GLIB_AVAILABLE_IN_ALL GNode* g_node_copy_deep (GNode *node, GCopyFunc copy_func, gpointer data); GLIB_AVAILABLE_IN_ALL GNode* g_node_copy (GNode *node); GLIB_AVAILABLE_IN_ALL GNode* g_node_insert (GNode *parent, gint position, GNode *node); GLIB_AVAILABLE_IN_ALL GNode* g_node_insert_before (GNode *parent, GNode *sibling, GNode *node); GLIB_AVAILABLE_IN_ALL GNode* g_node_insert_after (GNode *parent, GNode *sibling, GNode *node); GLIB_AVAILABLE_IN_ALL GNode* g_node_prepend (GNode *parent, GNode *node); GLIB_AVAILABLE_IN_ALL guint g_node_n_nodes (GNode *root, GTraverseFlags flags); GLIB_AVAILABLE_IN_ALL GNode* g_node_get_root (GNode *node); GLIB_AVAILABLE_IN_ALL gboolean g_node_is_ancestor (GNode *node, GNode *descendant); GLIB_AVAILABLE_IN_ALL guint g_node_depth (GNode *node); GLIB_AVAILABLE_IN_ALL GNode* g_node_find (GNode *root, GTraverseType order, GTraverseFlags flags, gpointer data); /* convenience macros */ /** * g_node_append: * @parent: the #GNode to place the new #GNode under * @node: the #GNode to insert * * Inserts a #GNode as the last child of the given parent. * * Returns: the inserted #GNode */ #define g_node_append(parent, node) \ g_node_insert_before ((parent), NULL, (node)) /** * g_node_insert_data: * @parent: the #GNode to place the new #GNode under * @position: the position to place the new #GNode at. If position is -1, * the new #GNode is inserted as the last child of @parent * @data: the data for the new #GNode * * Inserts a new #GNode at the given position. * * Returns: the new #GNode */ #define g_node_insert_data(parent, position, data) \ g_node_insert ((parent), (position), g_node_new (data)) /** * g_node_insert_data_after: * @parent: the #GNode to place the new #GNode under * @sibling: the sibling #GNode to place the new #GNode after * @data: the data for the new #GNode * * Inserts a new #GNode after the given sibling. * * Returns: the new #GNode */ #define g_node_insert_data_after(parent, sibling, data) \ g_node_insert_after ((parent), (sibling), g_node_new (data)) /** * g_node_insert_data_before: * @parent: the #GNode to place the new #GNode under * @sibling: the sibling #GNode to place the new #GNode before * @data: the data for the new #GNode * * Inserts a new #GNode before the given sibling. * * Returns: the new #GNode */ #define g_node_insert_data_before(parent, sibling, data) \ g_node_insert_before ((parent), (sibling), g_node_new (data)) /** * g_node_prepend_data: * @parent: the #GNode to place the new #GNode under * @data: the data for the new #GNode * * Inserts a new #GNode as the first child of the given parent. * * Returns: the new #GNode */ #define g_node_prepend_data(parent, data) \ g_node_prepend ((parent), g_node_new (data)) /** * g_node_append_data: * @parent: the #GNode to place the new #GNode under * @data: the data for the new #GNode * * Inserts a new #GNode as the last child of the given parent. * * Returns: the new #GNode */ #define g_node_append_data(parent, data) \ g_node_insert_before ((parent), NULL, g_node_new (data)) /* traversal function, assumes that 'node' is root * (only traverses 'node' and its subtree). * this function is just a high level interface to * low level traversal functions, optimized for speed. */ GLIB_AVAILABLE_IN_ALL void g_node_traverse (GNode *root, GTraverseType order, GTraverseFlags flags, gint max_depth, GNodeTraverseFunc func, gpointer data); /* return the maximum tree height starting with 'node', this is an expensive * operation, since we need to visit all nodes. this could be shortened by * adding 'guint height' to struct _GNode, but then again, this is not very * often needed, and would make g_node_insert() more time consuming. */ GLIB_AVAILABLE_IN_ALL guint g_node_max_height (GNode *root); GLIB_AVAILABLE_IN_ALL void g_node_children_foreach (GNode *node, GTraverseFlags flags, GNodeForeachFunc func, gpointer data); GLIB_AVAILABLE_IN_ALL void g_node_reverse_children (GNode *node); GLIB_AVAILABLE_IN_ALL guint g_node_n_children (GNode *node); GLIB_AVAILABLE_IN_ALL GNode* g_node_nth_child (GNode *node, guint n); GLIB_AVAILABLE_IN_ALL GNode* g_node_last_child (GNode *node); GLIB_AVAILABLE_IN_ALL GNode* g_node_find_child (GNode *node, GTraverseFlags flags, gpointer data); GLIB_AVAILABLE_IN_ALL gint g_node_child_position (GNode *node, GNode *child); GLIB_AVAILABLE_IN_ALL gint g_node_child_index (GNode *node, gpointer data); GLIB_AVAILABLE_IN_ALL GNode* g_node_first_sibling (GNode *node); GLIB_AVAILABLE_IN_ALL GNode* g_node_last_sibling (GNode *node); /** * g_node_prev_sibling: * @node: a #GNode * * Gets the previous sibling of a #GNode. * * Returns: the previous sibling of @node, or %NULL if @node is the first * node or %NULL */ #define g_node_prev_sibling(node) ((node) ? \ ((GNode*) (node))->prev : NULL) /** * g_node_next_sibling: * @node: a #GNode * * Gets the next sibling of a #GNode. * * Returns: the next sibling of @node, or %NULL if @node is the last node * or %NULL */ #define g_node_next_sibling(node) ((node) ? \ ((GNode*) (node))->next : NULL) /** * g_node_first_child: * @node: a #GNode * * Gets the first child of a #GNode. * * Returns: the first child of @node, or %NULL if @node is %NULL * or has no children */ #define g_node_first_child(node) ((node) ? \ ((GNode*) (node))->children : NULL) G_END_DECLS #endif /* __G_NODE_H__ */
Save