Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Günther Wagner
gnome-builder
Commits
5d2dae9a
Commit
5d2dae9a
authored
Jan 15, 2019
by
Daniel Buch Hansen
Committed by
Christian Hergert
Jan 15, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tree: introduce ide_tree_node_insert_sorted()
parent
f0ac9544
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
51 additions
and
0 deletions
+51
-0
src/libide/tree/ide-tree-node.c
src/libide/tree/ide-tree-node.c
+31
-0
src/libide/tree/ide-tree-node.h
src/libide/tree/ide-tree-node.h
+20
-0
No files found.
src/libide/tree/ide-tree-node.c
View file @
5d2dae9a
...
...
@@ -808,6 +808,37 @@ ide_tree_node_append (IdeTreeNode *self,
ide_tree_node_row_inserted
(
self
,
child
);
}
/**
* ide_tree_node_insert_sorted:
* @self: an #IdeTreeNode
* @child: an #IdeTreeNode
* @cmpfn: (scope call): an #IdeTreeNodeCompare
*
* Insert @child as a child of @self at the sorted position determined by @cmpfn
*
* This operation is O(n).
*
* Since: 3.32
*/
void
ide_tree_node_insert_sorted
(
IdeTreeNode
*
self
,
IdeTreeNode
*
child
,
IdeTreeNodeCompare
cmpfn
)
{
GList
*
link
;
g_return_if_fail
(
IDE_IS_TREE_NODE
(
self
));
g_return_if_fail
(
IDE_IS_TREE_NODE
(
child
));
g_return_if_fail
(
child
->
parent
==
NULL
);
link
=
g_queue_find_custom
(
&
self
->
children
,
child
,
(
GCompareFunc
)
cmpfn
);
if
(
link
!=
NULL
)
ide_tree_node_insert_before
(
IDE_TREE_NODE
(
link
->
data
),
child
);
else
ide_tree_node_append
(
self
,
child
);
}
/**
* ide_tree_node_insert_before:
* @self: a #IdeTreeNode
...
...
src/libide/tree/ide-tree-node.h
View file @
5d2dae9a
...
...
@@ -50,6 +50,22 @@ typedef enum
typedef
IdeTreeNodeVisit
(
*
IdeTreeTraverseFunc
)
(
IdeTreeNode
*
node
,
gpointer
user_data
);
/**
* IdeTreeNodeCompare:
* @node: an #IdeTreeNode that iterate over children
* @child: an #IdeTreeNode to be inserted
*
* This callback function is a convenience wrapper around GCompareFunc
*
* Returns: int
*
* Since: 3.32
*/
typedef
int
(
*
IdeTreeNodeCompare
)
(
IdeTreeNode
*
node
,
IdeTreeNode
*
child
);
IDE_AVAILABLE_IN_3_32
IdeTreeNode
*
ide_tree_node_new
(
void
);
IDE_AVAILABLE_IN_3_32
...
...
@@ -120,6 +136,10 @@ IDE_AVAILABLE_IN_3_32
void
ide_tree_node_append
(
IdeTreeNode
*
self
,
IdeTreeNode
*
child
);
IDE_AVAILABLE_IN_3_32
void
ide_tree_node_insert_sorted
(
IdeTreeNode
*
self
,
IdeTreeNode
*
child
,
IdeTreeNodeCompare
cmpfn
);
IDE_AVAILABLE_IN_3_32
void
ide_tree_node_insert_before
(
IdeTreeNode
*
self
,
IdeTreeNode
*
child
);
IDE_AVAILABLE_IN_3_32
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment