summaryrefslogtreecommitdiff
path: root/mcastseed/lib/gl_anytree_list1.h
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2016-07-21 12:14:51 +0200
committerLudovic Pouzenc <ludovic@pouzenc.fr>2016-07-21 12:14:51 +0200
commit7942d89835676b4eda70134b234398dfbc8c93e0 (patch)
treefad60c364d7dbfca071b1327928ac12dcc9774c5 /mcastseed/lib/gl_anytree_list1.h
parentaaf0c18c47daf5bec63b6250ab3377cea43bc4ae (diff)
downloadeficast-7942d89835676b4eda70134b234398dfbc8c93e0.tar.gz
eficast-7942d89835676b4eda70134b234398dfbc8c93e0.tar.bz2
eficast-7942d89835676b4eda70134b234398dfbc8c93e0.zip
gnulib set does not provide "get" operation, needed for dgrambuf.
Importing gnulib list instead.
Diffstat (limited to 'mcastseed/lib/gl_anytree_list1.h')
-rw-r--r--mcastseed/lib/gl_anytree_list1.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/mcastseed/lib/gl_anytree_list1.h b/mcastseed/lib/gl_anytree_list1.h
new file mode 100644
index 0000000..675f107
--- /dev/null
+++ b/mcastseed/lib/gl_anytree_list1.h
@@ -0,0 +1,41 @@
+/* Sequential list data type implemented by a binary tree.
+ Copyright (C) 2006, 2009-2016 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2006.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Common code of gl_avltree_list.c, gl_rbtree_list.c,
+ gl_avltreehash_list.c, gl_rbtreehash_list.c. */
+
+/* An item on the stack used for iterating across the elements. */
+typedef struct
+{
+ gl_list_node_t node;
+ size_t rightp;
+} iterstack_item_t;
+
+/* A stack used for iterating across the elements. */
+typedef iterstack_item_t iterstack_t[MAXHEIGHT];
+
+/* Free a non-empty subtree recursively.
+ This function is recursive and therefore not very fast. */
+static void
+free_subtree (gl_list_node_t node)
+{
+ if (node->left != NULL)
+ free_subtree (node->left);
+ if (node->right != NULL)
+ free_subtree (node->right);
+ free (node);
+}