Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
gnode.h File Reference
#include <glib/gmem.h>

Go to the source code of this file.

Data Structures

struct  _GNode
 

Macros

#define G_NODE_IS_ROOT(node)
 
#define G_NODE_IS_LEAF(node)   (((GNode*) (node))->children == NULL)
 
#define g_node_append(parent, node)    g_node_insert_before ((parent), NULL, (node))
 
#define g_node_insert_data(parent, position, data)    g_node_insert ((parent), (position), g_node_new (data))
 
#define g_node_insert_data_after(parent, sibling, data)    g_node_insert_after ((parent), (sibling), g_node_new (data))
 
#define g_node_insert_data_before(parent, sibling, data)    g_node_insert_before ((parent), (sibling), g_node_new (data))
 
#define g_node_prepend_data(parent, data)    g_node_prepend ((parent), g_node_new (data))
 
#define g_node_append_data(parent, data)    g_node_insert_before ((parent), NULL, g_node_new (data))
 
#define g_node_prev_sibling(node)
 
#define g_node_next_sibling(node)
 
#define g_node_first_child(node)
 

Typedefs

typedef typedefG_BEGIN_DECLS struct _GNode GNode
 
typedef gboolean(* GNodeTraverseFunc) (GNode *node, gpointer data)
 
typedef void(* GNodeForeachFunc) (GNode *node, gpointer data)
 

Enumerations

enum  GTraverseFlags {
  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
}
 
enum  GTraverseType { G_IN_ORDER , G_PRE_ORDER , G_POST_ORDER , G_LEVEL_ORDER }
 

Functions

GLIB_AVAILABLE_IN_ALL GNodeg_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 GNodeg_node_copy_deep (GNode *node, GCopyFunc copy_func, gpointer data)
 
GLIB_AVAILABLE_IN_ALL GNodeg_node_copy (GNode *node)
 
GLIB_AVAILABLE_IN_ALL GNodeg_node_insert (GNode *parent, gint position, GNode *node)
 
GLIB_AVAILABLE_IN_ALL GNodeg_node_insert_before (GNode *parent, GNode *sibling, GNode *node)
 
GLIB_AVAILABLE_IN_ALL GNodeg_node_insert_after (GNode *parent, GNode *sibling, GNode *node)
 
GLIB_AVAILABLE_IN_ALL GNodeg_node_prepend (GNode *parent, GNode *node)
 
GLIB_AVAILABLE_IN_ALL guint g_node_n_nodes (GNode *root, GTraverseFlags flags)
 
GLIB_AVAILABLE_IN_ALL GNodeg_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 GNodeg_node_find (GNode *root, GTraverseType order, GTraverseFlags flags, gpointer data)
 
GLIB_AVAILABLE_IN_ALL void g_node_traverse (GNode *root, GTraverseType order, GTraverseFlags flags, gint max_depth, GNodeTraverseFunc func, gpointer data)
 
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 GNodeg_node_nth_child (GNode *node, guint n)
 
GLIB_AVAILABLE_IN_ALL GNodeg_node_last_child (GNode *node)
 
GLIB_AVAILABLE_IN_ALL GNodeg_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 GNodeg_node_first_sibling (GNode *node)
 
GLIB_AVAILABLE_IN_ALL GNodeg_node_last_sibling (GNode *node)
 

Macro Definition Documentation

◆ g_node_append

#define g_node_append ( parent,
node )    g_node_insert_before ((parent), NULL, (node))

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

Definition at line 153 of file gnode.h.

153#define g_node_append(parent, node) \
154 g_node_insert_before ((parent), NULL, (node))

◆ g_node_append_data

#define g_node_append_data ( parent,
data )    g_node_insert_before ((parent), NULL, 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

Definition at line 217 of file gnode.h.

217#define g_node_append_data(parent, data) \
218 g_node_insert_before ((parent), NULL, g_node_new (data))

◆ g_node_first_child

#define g_node_first_child ( node)
Value:
((node) ? \
((GNode*) (node))->children : NULL)
#define NULL
Definition gmacros.h:924
typedefG_BEGIN_DECLS struct _GNode GNode
Definition gnode.h:38

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

Definition at line 304 of file gnode.h.

304#define g_node_first_child(node) ((node) ? \
305 ((GNode*) (node))->children : NULL)

◆ g_node_insert_data

#define g_node_insert_data ( parent,
position,
data )    g_node_insert ((parent), (position), g_node_new (data))

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

Definition at line 167 of file gnode.h.

167#define g_node_insert_data(parent, position, data) \
168 g_node_insert ((parent), (position), g_node_new (data))

◆ g_node_insert_data_after

#define g_node_insert_data_after ( parent,
sibling,
data )    g_node_insert_after ((parent), (sibling), 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

Definition at line 181 of file gnode.h.

181#define g_node_insert_data_after(parent, sibling, data) \
182 g_node_insert_after ((parent), (sibling), g_node_new (data))

◆ g_node_insert_data_before

#define g_node_insert_data_before ( parent,
sibling,
data )    g_node_insert_before ((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

Definition at line 193 of file gnode.h.

193#define g_node_insert_data_before(parent, sibling, data) \
194 g_node_insert_before ((parent), (sibling), g_node_new (data))

◆ G_NODE_IS_LEAF

#define G_NODE_IS_LEAF ( node)    (((GNode*) (node))->children == 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)

Definition at line 98 of file gnode.h.

◆ G_NODE_IS_ROOT

#define G_NODE_IS_ROOT ( node)
Value:
(((GNode*) (node))->parent == NULL && \
((GNode*) (node))->prev == NULL && \
((GNode*) (node))->next == NULL)
#define next(ls)

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)

Definition at line 85 of file gnode.h.

85#define G_NODE_IS_ROOT(node) (((GNode*) (node))->parent == NULL && \
86 ((GNode*) (node))->prev == NULL && \
87 ((GNode*) (node))->next == NULL)

◆ g_node_next_sibling

#define g_node_next_sibling ( node)
Value:
((node) ? \
((GNode*) (node))->next : 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

Definition at line 292 of file gnode.h.

292#define g_node_next_sibling(node) ((node) ? \
293 ((GNode*) (node))->next : NULL)

◆ g_node_prepend_data

#define g_node_prepend_data ( parent,
data )    g_node_prepend ((parent), 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

Definition at line 205 of file gnode.h.

205#define g_node_prepend_data(parent, data) \
206 g_node_prepend ((parent), g_node_new (data))

◆ g_node_prev_sibling

#define g_node_prev_sibling ( node)
Value:
((node) ? \
((GNode*) (node))->prev : NULL)

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

Definition at line 280 of file gnode.h.

280#define g_node_prev_sibling(node) ((node) ? \
281 ((GNode*) (node))->prev : NULL)

Typedef Documentation

◆ GNode

typedef typedefG_BEGIN_DECLS struct _GNode GNode

Definition at line 38 of file gnode.h.

◆ GNodeForeachFunc

typedef void(* GNodeForeachFunc) (GNode *node, gpointer data)

Definition at line 62 of file gnode.h.

◆ GNodeTraverseFunc

typedef gboolean(* GNodeTraverseFunc) (GNode *node, gpointer data)

Definition at line 60 of file gnode.h.

Enumeration Type Documentation

◆ GTraverseFlags

Enumerator
G_TRAVERSE_LEAVES 
G_TRAVERSE_NON_LEAVES 
G_TRAVERSE_ALL 
G_TRAVERSE_MASK 
G_TRAVERSE_LEAFS 
G_TRAVERSE_NON_LEAFS 

Definition at line 41 of file gnode.h.

42{
43 G_TRAVERSE_LEAVES = 1 << 0,
44 G_TRAVERSE_NON_LEAVES = 1 << 1,
46 G_TRAVERSE_MASK = 0x03,
GTraverseFlags
Definition gnode.h:42
@ G_TRAVERSE_LEAVES
Definition gnode.h:43
@ G_TRAVERSE_ALL
Definition gnode.h:45
@ G_TRAVERSE_MASK
Definition gnode.h:46
@ G_TRAVERSE_LEAFS
Definition gnode.h:47
@ G_TRAVERSE_NON_LEAFS
Definition gnode.h:48
@ G_TRAVERSE_NON_LEAVES
Definition gnode.h:44

◆ GTraverseType

Enumerator
G_IN_ORDER 
G_PRE_ORDER 
G_POST_ORDER 
G_LEVEL_ORDER 

Definition at line 52 of file gnode.h.

53{
GTraverseType
Definition gnode.h:53
@ G_POST_ORDER
Definition gnode.h:56
@ G_IN_ORDER
Definition gnode.h:54
@ G_LEVEL_ORDER
Definition gnode.h:57
@ G_PRE_ORDER
Definition gnode.h:55

Function Documentation

◆ g_node_child_index()

GLIB_AVAILABLE_IN_ALL gint g_node_child_index ( GNode * node,
gpointer data )

◆ g_node_child_position()

GLIB_AVAILABLE_IN_ALL gint g_node_child_position ( GNode * node,
GNode * child )

◆ g_node_children_foreach()

GLIB_AVAILABLE_IN_ALL void g_node_children_foreach ( GNode * node,
GTraverseFlags flags,
GNodeForeachFunc func,
gpointer data )

◆ g_node_copy()

GLIB_AVAILABLE_IN_ALL GNode * g_node_copy ( GNode * node)

◆ g_node_copy_deep()

GLIB_AVAILABLE_IN_ALL GNode * g_node_copy_deep ( GNode * node,
GCopyFunc copy_func,
gpointer data )

◆ g_node_depth()

GLIB_AVAILABLE_IN_ALL guint g_node_depth ( GNode * node)

◆ g_node_destroy()

GLIB_AVAILABLE_IN_ALL void g_node_destroy ( GNode * root)

◆ g_node_find()

GLIB_AVAILABLE_IN_ALL GNode * g_node_find ( GNode * root,
GTraverseType order,
GTraverseFlags flags,
gpointer data )

◆ g_node_find_child()

GLIB_AVAILABLE_IN_ALL GNode * g_node_find_child ( GNode * node,
GTraverseFlags flags,
gpointer data )

◆ g_node_first_sibling()

GLIB_AVAILABLE_IN_ALL GNode * g_node_first_sibling ( GNode * node)

◆ g_node_get_root()

GLIB_AVAILABLE_IN_ALL GNode * g_node_get_root ( GNode * node)

◆ g_node_insert()

GLIB_AVAILABLE_IN_ALL GNode * g_node_insert ( GNode * parent,
gint position,
GNode * node )

◆ g_node_insert_after()

GLIB_AVAILABLE_IN_ALL GNode * g_node_insert_after ( GNode * parent,
GNode * sibling,
GNode * node )

◆ g_node_insert_before()

GLIB_AVAILABLE_IN_ALL GNode * g_node_insert_before ( GNode * parent,
GNode * sibling,
GNode * node )

◆ g_node_is_ancestor()

GLIB_AVAILABLE_IN_ALL gboolean g_node_is_ancestor ( GNode * node,
GNode * descendant )

◆ g_node_last_child()

GLIB_AVAILABLE_IN_ALL GNode * g_node_last_child ( GNode * node)

◆ g_node_last_sibling()

GLIB_AVAILABLE_IN_ALL GNode * g_node_last_sibling ( GNode * node)

◆ g_node_max_height()

GLIB_AVAILABLE_IN_ALL guint g_node_max_height ( GNode * root)

◆ g_node_n_children()

GLIB_AVAILABLE_IN_ALL guint g_node_n_children ( GNode * node)

◆ g_node_n_nodes()

GLIB_AVAILABLE_IN_ALL guint g_node_n_nodes ( GNode * root,
GTraverseFlags flags )

◆ g_node_new()

GLIB_AVAILABLE_IN_ALL GNode * g_node_new ( gpointer data)

◆ g_node_nth_child()

GLIB_AVAILABLE_IN_ALL GNode * g_node_nth_child ( GNode * node,
guint n )

◆ g_node_prepend()

GLIB_AVAILABLE_IN_ALL GNode * g_node_prepend ( GNode * parent,
GNode * node )

◆ g_node_reverse_children()

GLIB_AVAILABLE_IN_ALL void g_node_reverse_children ( GNode * node)

◆ g_node_traverse()

GLIB_AVAILABLE_IN_ALL void g_node_traverse ( GNode * root,
GTraverseType order,
GTraverseFlags flags,
gint max_depth,
GNodeTraverseFunc func,
gpointer data )

◆ g_node_unlink()

GLIB_AVAILABLE_IN_ALL void g_node_unlink ( GNode * node)