From 5ca85834c4b85a53943eda1ca10f3cd39b263915 Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga Date: Tue, 12 Aug 2025 22:44:34 +0200 Subject: piece-table: create vs create_from (string) --- src/piece-table.c | 15 ++++++++++----- src/piece-table.h | 3 ++- tests/piece-table-delete.c | 8 ++++---- tests/piece-table-insert.c | 2 +- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/piece-table.c b/src/piece-table.c index 7ca95f1..85966f7 100644 --- a/src/piece-table.c +++ b/src/piece-table.c @@ -363,18 +363,16 @@ piece_table_delete(piece_table *pt, size_t pos, size_t len) pt->length -= len; } - piece_table * -piece_table_create (char *orig) +piece_table_create_from (char *orig, size_t size) { piece *original; piece_table * pt = malloc (sizeof (*pt)); - size_t len = strlen(orig); /* obtain from the outside? */ - pt->length = len; + pt->length = size; /* Original buffer */ text_buffer_init(&pt->orig); - text_buffer_fill(&pt->orig, orig, len); + text_buffer_fill(&pt->orig, orig, size); /* Add buffer */ text_buffer_init(&pt->add); @@ -397,6 +395,13 @@ piece_table_create (char *orig) return pt; } +piece_table * +piece_table_create (char *orig, size_t size) +{ + return piece_table_create_from ("", 0); +} + + void piece_table_destroy (piece_table *pt) { diff --git a/src/piece-table.h b/src/piece-table.h index ee39958..0182aad 100644 --- a/src/piece-table.h +++ b/src/piece-table.h @@ -22,7 +22,8 @@ typedef struct _piece_table piece_table; -piece_table *piece_table_create (); +piece_table *piece_table_create (void); +piece_table * piece_table_create_from (char *orig, size_t size); void piece_table_destroy (piece_table * piece_table); char piece_table_index (piece_table *pt, size_t pos); diff --git a/tests/piece-table-delete.c b/tests/piece-table-delete.c index 4a99b79..6d6d3af 100644 --- a/tests/piece-table-delete.c +++ b/tests/piece-table-delete.c @@ -5,7 +5,7 @@ int main() { - piece_table *pt = piece_table_create("0123456789"); + piece_table *pt = piece_table_create_from("0123456789", 10); char tmp[100]; piece_table_delete(pt, 0, 10); @@ -14,21 +14,21 @@ main() return 1; piece_table_destroy(pt); - pt = piece_table_create("0123456789"); + pt = piece_table_create_from("0123456789", 10); piece_table_delete(pt, 0, 1); piece_table_to_string(pt, tmp, 99); if (strcmp(tmp, "123456789")) return 2; piece_table_destroy(pt); - pt = piece_table_create("0123456789"); + pt = piece_table_create_from("0123456789", 10); piece_table_delete(pt, 9, 1); piece_table_to_string(pt, tmp, 99); if (strcmp(tmp, "012345678")) return 3; piece_table_destroy(pt); - pt = piece_table_create("0123456789"); + pt = piece_table_create_from("0123456789", 10); piece_table_delete(pt, 7, 1); piece_table_delete(pt, 0, 1); piece_table_to_string(pt, tmp, 99); diff --git a/tests/piece-table-insert.c b/tests/piece-table-insert.c index 54ff842..c22a317 100644 --- a/tests/piece-table-insert.c +++ b/tests/piece-table-insert.c @@ -5,7 +5,7 @@ int main() { - piece_table *pt = piece_table_create("0123456789"); + piece_table *pt = piece_table_create_from("0123456789", 10); char tmp[100]; piece_table_insert(pt, 10, "abcdefgh", 8); -- cgit v1.2.3