From c18df0ab19713b9eb8bbcc982c4c3ec14e5bd7c3 Mon Sep 17 00:00:00 2001 From: Laria Carolin Chabowski Date: Sun, 30 Oct 2022 22:15:29 +0100 Subject: [PATCH] Make apfl_string_builder_init easier to use It was a bit silly that you've first had to declare a string builder variable and then pass a reference to that into the init function, which could not fail. Instead just return a ready to use string builder :) --- src/apfl.h | 2 +- src/error.c | 3 +-- src/functional-test-runner.c | 6 ++---- src/strings.c | 10 ++++++---- src/tokenizer.c | 9 +++------ 5 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/apfl.h b/src/apfl.h index 71e7d1f..47593e1 100644 --- a/src/apfl.h +++ b/src/apfl.h @@ -106,7 +106,7 @@ struct apfl_string_builder { size_t cap; }; -void apfl_string_builder_init(struct apfl_allocator allocator, struct apfl_string_builder *); +struct apfl_string_builder apfl_string_builder_init(struct apfl_allocator allocator); void apfl_string_builder_deinit(struct apfl_string_builder *); bool apfl_string_builder_append(struct apfl_string_builder *, struct apfl_string_view); bool apfl_string_builder_append_byte(struct apfl_string_builder *, char byte); diff --git a/src/error.c b/src/error.c index 468433b..4a05879 100644 --- a/src/error.c +++ b/src/error.c @@ -208,8 +208,7 @@ apfl_error_print(struct apfl_error error, FILE *file) bool apfl_error_as_string(struct apfl_error error, struct apfl_allocator allocator, struct apfl_string *out) { - struct apfl_string_builder builder; - apfl_string_builder_init(allocator, &builder); + struct apfl_string_builder builder = apfl_string_builder_init(allocator); TRY(format_error(apfl_format_string_writer(&builder), error)); *out = apfl_string_builder_move_string(&builder); return true; diff --git a/src/functional-test-runner.c b/src/functional-test-runner.c index a7caa21..736c406 100644 --- a/src/functional-test-runner.c +++ b/src/functional-test-runner.c @@ -66,8 +66,7 @@ file_get_contents(const char *filename, struct apfl_string *str, struct apfl_all return false; } - struct apfl_string_builder sb; - apfl_string_builder_init(allocator, &sb); + struct apfl_string_builder sb = apfl_string_builder_init(allocator); char buf[BUFSIZE]; while (!feof(f)) { @@ -157,8 +156,7 @@ runtest(const char *filename) return T_ERR; } - struct apfl_string_builder output; - apfl_string_builder_init(allocator, &output); + struct apfl_string_builder output = apfl_string_builder_init(allocator); apfl_ctx ctx = apfl_ctx_new((struct apfl_config) { .allocator = allocator, diff --git a/src/strings.c b/src/strings.c index 36a6c41..1f78cd2 100644 --- a/src/strings.c +++ b/src/strings.c @@ -105,11 +105,13 @@ builder_reset(struct apfl_string_builder *builder) apfl_resizable_init((void **)&(builder->bytes), &(builder->len), &(builder->cap)); } -void -apfl_string_builder_init(struct apfl_allocator allocator, struct apfl_string_builder *builder) +struct apfl_string_builder +apfl_string_builder_init(struct apfl_allocator allocator) { - builder->allocator = allocator; - builder_reset(builder); + struct apfl_string_builder builder; + builder.allocator = allocator; + builder_reset(&builder); + return builder; } void diff --git a/src/tokenizer.c b/src/tokenizer.c index d445af9..d3b5da1 100644 --- a/src/tokenizer.c +++ b/src/tokenizer.c @@ -266,8 +266,7 @@ comment(apfl_tokenizer_ptr tokenizer) struct apfl_position pos = tokenizer->position; struct apfl_position last_pos; - struct apfl_string_builder text; - apfl_string_builder_init(tokenizer->allocator, &text); + struct apfl_string_builder text = apfl_string_builder_init(tokenizer->allocator); for (;;) { last_pos = tokenizer->position; @@ -591,8 +590,7 @@ inner_string(apfl_tokenizer_ptr tokenizer, struct apfl_string_builder *text) static enum apfl_parse_result string(apfl_tokenizer_ptr tokenizer) { - struct apfl_string_builder text; - apfl_string_builder_init(tokenizer->allocator, &text); + struct apfl_string_builder text = apfl_string_builder_init(tokenizer->allocator); enum apfl_parse_result out = inner_string(tokenizer, &text); @@ -737,8 +735,7 @@ maybe_name_inner( static enum apfl_parse_result maybe_name(apfl_tokenizer_ptr tokenizer, bool need, char first_byte) { - struct apfl_string_builder text; - apfl_string_builder_init(tokenizer->allocator, &text); + struct apfl_string_builder text = apfl_string_builder_init(tokenizer->allocator); enum apfl_parse_result out = maybe_name_inner(tokenizer, need, first_byte, &text);