aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--structures/rope/rope.c47
-rw-r--r--structures/rope/rope.h2
2 files changed, 48 insertions, 1 deletions
diff --git a/structures/rope/rope.c b/structures/rope/rope.c
index 50c7fef..aed104b 100644
--- a/structures/rope/rope.c
+++ b/structures/rope/rope.c
@@ -28,6 +28,53 @@ rope* rope_new()
return tmp;
}
+void rope_debug_print_aux(root, s)
+rope *root;
+int s;
+{
+ int i;
+
+ for (i = 0; i < s; i++)
+ printf("| ");
+
+ if (!root) {
+ printf("\n");
+ return;
+ }
+
+#ifdef ROPE_DEBUG_PARENT
+ printf("[%p]\n", root->parent);
+#endif
+
+ printf("{len:%d,str:\'%s\'}[%p]\n", root->len, root->str, root);
+
+ if (root->str)
+ return;
+
+ rope_debug_print_aux(root->left, ++s);
+ rope_debug_print_aux(root->right, s);
+
+}
+
+void rope_debug_print(root)
+rope *root;
+{
+ rope_debug_print_aux(root, 0);
+}
+
+void rope_print(root)
+rope *root;
+{
+ if (!root)
+ return;
+
+ if (root->str)
+ printf("%s", root->str);
+
+ rope_print(root->left);
+ rope_print(root->right);
+}
+
size_t rope_len(root)
rope *root;
{
diff --git a/structures/rope/rope.h b/structures/rope/rope.h
index f012cc1..86d9ae3 100644
--- a/structures/rope/rope.h
+++ b/structures/rope/rope.h
@@ -1,7 +1,7 @@
#ifndef ROPE_H
#define ROPE_H
-typede struct rope_s rope;
+typedef struct rope_s rope;
rope* rope_new();
rope* str_to_rope(char*);