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 :)
This commit is contained in:
Laria 2022-10-30 22:15:29 +01:00
parent b7015e7b13
commit c18df0ab19
5 changed files with 13 additions and 17 deletions

View file

@ -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);

View file

@ -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;

View file

@ -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,

View file

@ -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

View file

@ -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);