From 769d31581dfbecd94a97201b7bddad3db9e53582 Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Fri, 19 Nov 2010 19:36:31 -0300 Subject: [PATCH] qpkg: removed non-generic jrb access functions - jrb.h, jrb.c (jrb_insert_str, jrb_insert_int, jrb_insert_dbl): removed - jrb.h, jrb.c (jrb_find_str, jrb_find_int, jrb_find_dbl): removed - jrb.h, jrb.c (jrb_find_gte_str, jrb_find_gte_int, jrb_find_gte_dbl): removed - jrb.c (jrb_print_tree, jrb_iprint_tree): removed unused tree dump functions --- qpkg/jrb.c | 191 ----------------------------------------------------- qpkg/jrb.h | 9 --- 2 files changed, 200 deletions(-) diff --git a/qpkg/jrb.c b/qpkg/jrb.c index f6088a1..442be48 100644 --- a/qpkg/jrb.c +++ b/qpkg/jrb.c @@ -50,8 +50,6 @@ static JRB lprev(JRB n); static JRB rprev(JRB n); static void recolor(JRB n); static void single_rotate(JRB y, int l); -static void jrb_print_tree(JRB t, int level); -static void jrb_iprint_tree(JRB t, int level); #define isred(n) (n->red) #define isblack(n) (!isred(n)) @@ -167,108 +165,6 @@ JRB make_jrb(void) return head; } -JRB jrb_find_gte_str(JRB n, char *key, int *fnd) -{ - int cmp; - - *fnd = 0; - if (!ishead(n)) { - fprintf(stderr, "jrb_find_gte_str called on non-head %p\n", n); - exit(1); - } - if (n->parent == n) return n; - cmp = strcmp(key, n->blink->key.s); - if (cmp == 0) { - *fnd = 1; - return n->blink; - } - if (cmp > 0) return n; - else n = n->parent; - while (1) { - if (isext(n)) return n; - cmp = strcmp(key, getlext(n)->key.s); - if (cmp == 0) { - *fnd = 1; - return getlext(n); - } - if (cmp < 0) n = n->flink ; else n = n->blink; - } -} - -JRB jrb_find_str(JRB n, char *key) -{ - int fnd; - JRB j; - j = jrb_find_gte_str(n, key, &fnd); - if (fnd) return j; else return NULL; -} - -JRB jrb_find_gte_int(JRB n, int ikey, int *fnd) -{ - *fnd = 0; - if (!ishead(n)) { - fprintf(stderr, "jrb_find_gte_int called on non-head %p\n", n); - exit(1); - } - if (n->parent == n) return n; - if (ikey == n->blink->key.i) { - *fnd = 1; - return n->blink; - } - if (ikey > n->blink->key.i) return n; - else n = n->parent; - while (1) { - if (isext(n)) return n; - if (ikey == getlext(n)->key.i) { - *fnd = 1; - return getlext(n); - } - n = (ikey < getlext(n)->key.i) ? n->flink : n->blink; - } -} - -JRB jrb_find_int(JRB n, int ikey) -{ - int fnd; - JRB j; - - j = jrb_find_gte_int(n, ikey, &fnd); - if (fnd) return j; else return NULL; -} - -JRB jrb_find_gte_dbl(JRB n, double dkey, int *fnd) -{ - *fnd = 0; - if (!ishead(n)) { - fprintf(stderr, "jrb_find_gte_dbl called on non-head %p\n", n); - exit(1); - } - if (n->parent == n) return n; - if (dkey == n->blink->key.d) { - *fnd = 1; - return n->blink; - } - if (dkey > n->blink->key.d) return n; - else n = n->parent; - while (1) { - if (isext(n)) return n; - if (dkey == getlext(n)->key.d) { - *fnd = 1; - return getlext(n); - } - n = (dkey < getlext(n)->key.d) ? n->flink : n->blink; - } -} - -JRB jrb_find_dbl(JRB n, double dkey) -{ - int fnd; - JRB j; - - j = jrb_find_gte_dbl(n, dkey, &fnd); - if (fnd) return j; else return NULL; -} - JRB jrb_find_gte_gen(JRB n, Jval key,int (*fxn)(Jval, Jval), int *fnd) { int cmp; @@ -549,59 +445,6 @@ void jrb_delete_node(JRB n) } } - -void jrb_print_tree(JRB t, int level) -{ - int i; - if (ishead(t) && t->parent == t) { - printf("tree %p is empty\n", t); - } else if (ishead(t)) { - printf("Head: %p. Root = %p\n", t, t->parent); - jrb_print_tree(t->parent, 0); - } else { - if (isext(t)) { - for (i = 0; i < level; i++) putchar(' '); - printf("Ext node %p: %c,%c: p=%p, k=%s\n", - t, isred(t)?'R':'B', isleft(t)?'l':'r', t->parent, t->key.s); - } else { - jrb_print_tree(t->flink, level+2); - jrb_print_tree(t->blink, level+2); - for (i = 0; i < level; i++) putchar(' '); - printf("Int node %p: %c,%c: l=%p, r=%p, p=%p, lr=(%s,%s)\n", - t, isred(t)?'R':'B', isleft(t)?'l':'r', t->flink, - t->blink, - t->parent, getlext(t)->key.s, getrext(t)->key.s); - } - } -} - -void jrb_iprint_tree(JRB t, int level) -{ - int i; - if (ishead(t) && t->parent == t) { - printf("tree %p is empty\n", t); - } else if (ishead(t)) { - printf("Head: %p. Root = %p, < = %p, > = %p\n", - t, t->parent, t->blink, t->flink); - jrb_iprint_tree(t->parent, 0); - } else { - if (isext(t)) { - for (i = 0; i < level; i++) putchar(' '); - printf("Ext node %p: %c,%c: p=%p, <=%p, >=%p k=%d\n", - t, isred(t)?'R':'B', isleft(t)?'l':'r', t->parent, - t->blink, t->flink, t->key.i); - } else { - jrb_iprint_tree(t->flink, level+2); - jrb_iprint_tree(t->blink, level+2); - for (i = 0; i < level; i++) putchar(' '); - printf("Int node %p: %c,%c: l=%p, r=%p, p=%p, lr=(%d,%d)\n", - t, isred(t)?'R':'B', isleft(t)?'l':'r', t->flink, - t->blink, - t->parent, getlext(t)->key.i, getrext(t)->key.i); - } - } -} - int jrb_nblack(JRB n) { int nb; @@ -650,40 +493,6 @@ Jval jrb_val(JRB n) return n->val; } -#if 0 -static JRB jrb_insert_a(JRB nd, Jval key, Jval val) -{ - return jrb_insert_b(nd->flink, key, val); -} -#endif - -JRB jrb_insert_str(JRB tree, char *key, Jval val) -{ - Jval k; - int fnd; - - k.s = key; - return jrb_insert_b(jrb_find_gte_str(tree, key, &fnd), k, val); -} - -JRB jrb_insert_int(JRB tree, int ikey, Jval val) -{ - Jval k; - int fnd; - - k.i = ikey; - return jrb_insert_b(jrb_find_gte_int(tree, ikey, &fnd), k, val); -} - -JRB jrb_insert_dbl(JRB tree, double dkey, Jval val) -{ - Jval k; - int fnd; - - k.d = dkey; - return jrb_insert_b(jrb_find_gte_dbl(tree, dkey, &fnd), k, val); -} - JRB jrb_insert_gen(JRB tree, Jval key, Jval val, int (*func)(Jval, Jval)) { diff --git a/qpkg/jrb.h b/qpkg/jrb.h index 5693cda..6a2b201 100644 --- a/qpkg/jrb.h +++ b/qpkg/jrb.h @@ -67,17 +67,11 @@ extern JRB make_jrb(void); /* Creates a new rb-tree */ jrb_insert uses strcmp() as comparison funcion. jrb_inserti uses <>=, jrb_insertg uses func() */ -extern JRB jrb_insert_str(JRB tree, char *key, Jval val); -extern JRB jrb_insert_int(JRB tree, int ikey, Jval val); -extern JRB jrb_insert_dbl(JRB tree, double dkey, Jval val); extern JRB jrb_insert_gen(JRB tree, Jval key, Jval val, int (*func)(Jval,Jval)); /* returns an external node in t whose value is equal k. Returns NULL if there is no such node in the tree */ -extern JRB jrb_find_str(JRB root, char *key); -extern JRB jrb_find_int(JRB root, int ikey); -extern JRB jrb_find_dbl(JRB root, double dkey); extern JRB jrb_find_gen(JRB root, Jval, int (*func)(Jval, Jval)); @@ -85,9 +79,6 @@ extern JRB jrb_find_gen(JRB root, Jval, int (*func)(Jval, Jval)); k or whose value is the smallest value greater than k. Sets found to 1 if the key was found, and 0 otherwise. */ -extern JRB jrb_find_gte_str(JRB root, char *key, int *found); -extern JRB jrb_find_gte_int(JRB root, int ikey, int *found); -extern JRB jrb_find_gte_dbl(JRB root, double dkey, int *found); extern JRB jrb_find_gte_gen(JRB root, Jval key, int (*func)(Jval, Jval), int *found);