summaryrefslogtreecommitdiff
path: root/sys/src/libavl/avl.c
diff options
context:
space:
mode:
authorftrvxmtrx <ftrvxmtrx@gmail.com>2016-11-17 23:07:54 +0100
committerftrvxmtrx <ftrvxmtrx@gmail.com>2016-11-17 23:07:54 +0100
commitee9b0eef895209023ab7d7cc1808f33318834999 (patch)
tree39ae64a35ddcf156847fa46b9d5cb23400277e79 /sys/src/libavl/avl.c
parented76659c054ce781ae6050e563de9ad40b3d25cd (diff)
libavl, libregexp: put debug functions back
Diffstat (limited to 'sys/src/libavl/avl.c')
-rw-r--r--sys/src/libavl/avl.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/sys/src/libavl/avl.c b/sys/src/libavl/avl.c
index ec60df209..59266d36d 100644
--- a/sys/src/libavl/avl.c
+++ b/sys/src/libavl/avl.c
@@ -204,6 +204,17 @@ _deleteavl(Avl **tp, Avl *p, Avl *rx, int(*cmp)(Avl*,Avl*), Avl **del,
return -(ob != 0 && (*tp)->bal == 0);
}
+static void
+checkparents(Avl *a, Avl *p)
+{
+ if(a == nil)
+ return;
+ if(a->p != p)
+ print("bad parent\n");
+ checkparents(a->n[0], a);
+ checkparents(a->n[1], a);
+}
+
struct Avltree
{
Avl *root;
@@ -413,3 +424,13 @@ endwalk(Avlwalk *w)
}
free(w);
}
+
+static void
+walkavl(Avl *t, void (*f)(Avl*, void*), void *v)
+{
+ if(t == nil)
+ return;
+ walkavl(t->n[0], f, v);
+ f(t, v);
+ walkavl(t->n[1], f, v);
+}