结构体

GLibNode

描述 [源代码链接]

struct GNode {
  gpointer data;
  GNode* next;
  GNode* prev;
  GNode* parent;
  GNode* children;
}

GNode 结构体表示 [n 元树][glib-N-ary-Trees] 中的一个节点。

结构成员
data

包含节点的实际数据。

next

指向节点的下一个兄弟节点(兄弟节点是另一个具有相同父节点的 GNode)。

prev

指向节点的前一个兄弟节点。

parent

指向 GNode 的父节点,如果 GNode 是树的根节点,则为 NULL

children

指向 GNode 的第一个子节点。其他子节点可以通过使用每个子节点的 next 指针进行访问。

函数

g_node_new

创建包含给定数据的新 GNode。用于创建树中的第一个节点。

g_node_pop_allocator
无可用描述。

g_node_push_allocator
无可用描述。

实例方法

g_node_child_index

获取包含给定数据的 GNode 的第一个子节点的位置。

g_node_child_position

获取 GNode 相对于其兄弟节点的位置。child 必须是 node 的子节点。第一个子节点编号为 0,第二个子节点编号为 1,依次类推。

g_node_children_foreach

GNode 的各个子节点调用函数。请注意,它不会进入子节点下方。func 不应执行任何可能修改树结构的操作。

g_node_copy

递归复制 GNode(但不深度复制节点中的数据,如需深度复制,请参见 g_node_copy_deep())。

g_node_copy_deep

递归复制 GNode 及其数据。

自:2.4

g_node_depth

获取 GNode 的深度。

g_node_destroy

从树中删除 root 及其子节点,并释放所有已分配的内存。

g_node_find

在树中查找一个 GNode

g_node_find_child

查找具有给定数据的 GNode 的第一个子节点。

g_node_first_sibling

获取 GNode 的第一个兄弟节点。这可能是节点本身。

g_node_get_root

获取树的根节点。

g_node_insert

在父节点下插入 GNode,位置在给定的位置。

g_node_insert_after

在给定的兄弟节点之后,在父节点下插入 GNode

g_node_insert_before

在给定同级之前,在父节点下面插入一个 GNode

g_node_is_ancestor

如果 nodedescendant 的祖先,则返回 TRUE。如果 node 是 descendant 的父节点,或者 node 是 descendant 的祖父节点等,则是这种情况。

g_node_last_child

获取一个 GNode 的最后一个子节点。

g_node_last_sibling

获取一个 GNode 的最后一个兄弟节点。这个节点也可能就是它本身。

g_node_max_height

获取一个 GNode 下面的所有分支的最大高度。这是从该 GNode 到所有叶节点的最大距离。

g_node_n_children

获取一个 GNode 的子节点数。

g_node_n_nodes

获取一棵树中的节点数。

g_node_nth_child

使用给定的索引,获取一个 GNode 的子节点。第一个子节点的索引为 0。如果索引太大,则返回 NULL

g_node_prepend

将一个 GNode 插入为给定父节点的第一个子节点。

g_node_reverse_children

反转一个 GNode 的子节点的顺序。(这不会改变孙节点的顺序。)

g_node_traverse

从给定的根 GNode 开始遍历一棵树。它为访问的每个节点调用给定的函数。通过从 func 返回 TRUE,可以随时停止遍历。func 不得执行任何可能修改树结构的操作。

g_node_unlink

从一棵树中取消一个 GNode 的链接,从而形成两棵分开的树。