aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--structures/rope/rope.c17
-rw-r--r--structures/rope/rope.h1
2 files changed, 18 insertions, 0 deletions
diff --git a/structures/rope/rope.c b/structures/rope/rope.c
index f3828df..50c7fef 100644
--- a/structures/rope/rope.c
+++ b/structures/rope/rope.c
@@ -55,3 +55,20 @@ char *str;
return tmp;
}
+rope* rope_concat(node1, node2)
+rope *node1, *node2;
+{
+ rope *tmp;
+
+ if (!node1 || !node2)
+ return node1 ? node1 : node2;
+
+ tmp = rope_new();
+ tmp->len = rope_len(node1);
+ tmp->left = node1;
+ tmp->right = node2;
+ node1->parent = tmp;
+ node2->parent = tmp;
+
+ return tmp;
+}
diff --git a/structures/rope/rope.h b/structures/rope/rope.h
index 80e60a3..f012cc1 100644
--- a/structures/rope/rope.h
+++ b/structures/rope/rope.h
@@ -5,5 +5,6 @@ typede struct rope_s rope;
rope* rope_new();
rope* str_to_rope(char*);
+rope* rope_concate(rope*, rope*);
#endif