From 1e2b456f08a5d00c8cbe290fb7974818e8f17b46 Mon Sep 17 00:00:00 2001 From: Mel Date: Mon, 30 Jun 2025 02:53:10 +0200 Subject: Re-format FOR_EACH macros as control structures Signed-off-by: Mel --- boot/common.c | 13 ++++++------- boot/tree.c | 29 +++++++++-------------------- boot/visit.c | 57 +++++++++++++++++---------------------------------------- 3 files changed, 32 insertions(+), 67 deletions(-) (limited to 'boot') diff --git a/boot/common.c b/boot/common.c index 8291a51..318edf7 100644 --- a/boot/common.c +++ b/boot/common.c @@ -75,10 +75,10 @@ failure(const ascii* message) { fflush(stdout); // flush stdout to ensure any message is printed before the error. - const ascii* format = - ANSI_RED ANSI_BOLD ";( sorry, a failure has occurred..." ANSI_NO_BOLD "\n" - "-> %s!" "\n" - ANSI_RESET; + const ascii* format = ANSI_RED ANSI_BOLD + ";( sorry, a failure has occurred..." ANSI_NO_BOLD "\n" + "-> %s!" + "\n" ANSI_RESET; fprintf(stderr, format, message); exit(EXIT_FAILURE); @@ -92,8 +92,7 @@ check(bool condition, const ascii* message) } // for each entry in a linked list. -#define FOR_EACH(type, cursor, head) \ - for (type cursor = head; cursor != nil; cursor = cursor->next) +#define FOR_EACH(type, cursor, head) for (type cursor = head; cursor != nil; cursor = cursor->next) // the common size of region memory blocks. #define REGION_SIZE 65536 @@ -239,7 +238,7 @@ string_array_at(const struct String_Array* array, uint index) } #define STRING_ARRAY_FOR_EACH(cursor, str, array) \ - struct String str = array.strings[0]; \ + struct String str = array.strings[0]; \ for (uint cursor = 0; cursor < array.count; str = array.strings[++cursor]) // single iteration of the CRC32 checksum algorithm diff --git a/boot/tree.c b/boot/tree.c index 1fcaa62..2dcfdd2 100644 --- a/boot/tree.c +++ b/boot/tree.c @@ -595,8 +595,7 @@ type_node_print(const struct Type_Node* type_node) break; case TYPE_NODE_TUPLE: { printf("tuple"); - FOR_EACH(struct Type_Node*, current, type_node->value.tuple.head) - { + FOR_EACH (struct Type_Node*, current, type_node->value.tuple.head) { printf(" "); type_node_print(current); } @@ -615,8 +614,7 @@ type_node_print(const struct Type_Node* type_node) } case TYPE_NODE_STRUCTURE: { printf("structure"); - FOR_EACH(struct Type_Node*, current, type_node->value.structure.fields) - { + FOR_EACH (struct Type_Node*, current, type_node->value.structure.fields) { printf(" (field %s) ", current->value_name.data); type_node_print(current); } @@ -624,8 +622,7 @@ type_node_print(const struct Type_Node* type_node) } case TYPE_NODE_VARIANT: { printf("variant"); - FOR_EACH(struct Type_Node*, current, type_node->value.variant.variants) - { + FOR_EACH (struct Type_Node*, current, type_node->value.variant.variants) { if (type_node_is_none(current)) { printf(" (variant %s)", current->value_name.data); } else { @@ -638,8 +635,7 @@ type_node_print(const struct Type_Node* type_node) } case TYPE_NODE_CLASS: printf("class"); - FOR_EACH(struct Type_Node*, current, type_node->value.class.methods) - { + FOR_EACH (struct Type_Node*, current, type_node->value.class.methods) { check(current->type == TYPE_NODE_FUNCTION, "expected class method type node to be a function type"); printf(" (method %s ", current->value_name.data); @@ -811,8 +807,7 @@ expression_new( void function_header_node_print(const struct Function_Header_Node* header) { - FOR_EACH(struct Type_Node*, current, header->parameters_type_and_name) - { + FOR_EACH (struct Type_Node*, current, header->parameters_type_and_name) { if (current != header->parameters_type_and_name) printf(" "); if (!string_is_empty(current->value_name)) @@ -876,8 +871,7 @@ expression_print(const struct Expression* expression) printf("(call/construct "); expression_print(coc->subject); uint i = 0; - FOR_EACH(struct Expression*, argument, coc->arguments) - { + FOR_EACH (struct Expression*, argument, coc->arguments) { struct String name = string_array_at(&coc->argument_names, i++); if (!string_is_empty(name)) { printf(" (named arg '%s' ", name.data); @@ -1062,8 +1056,7 @@ void block_node_print(const struct Block_Node* block) { printf("(block \n"); - FOR_EACH(struct Statement*, statement, block->statements) - { + FOR_EACH (struct Statement*, statement, block->statements) { printf("\t"); statement_print(statement); printf("\n"); @@ -1075,10 +1068,7 @@ void bare_declaration_node_print(const struct Bare_Declaration_Node* declaration) { printf("(declaration "); - STRING_ARRAY_FOR_EACH(i, name, declaration->names) - { - printf("%s ", name.data); - } + STRING_ARRAY_FOR_EACH (i, name, declaration->names) { printf("%s ", name.data); } if (!type_node_is_none(declaration->type)) { type_node_print(declaration->type); printf(" "); @@ -1230,8 +1220,7 @@ struct Tree void tree_print(const struct Tree* tree) { - FOR_EACH(struct Statement*, statement, tree->top_level_statements) - { + FOR_EACH (struct Statement*, statement, tree->top_level_statements) { statement_print(statement); printf("\n"); } diff --git a/boot/visit.c b/boot/visit.c index 396f8b8..c685cf6 100644 --- a/boot/visit.c +++ b/boot/visit.c @@ -81,8 +81,7 @@ walk(struct Visit* visit, struct Tree* tree) void walk_tree(struct Visit* visit, struct Tree* tree) { - FOR_EACH(struct Statement*, statement, tree->top_level_statements) - { + FOR_EACH (struct Statement*, statement, tree->top_level_statements) { VISIT(visit_statement, statement); } } @@ -253,10 +252,7 @@ walk_expression_call_or_construct(struct Visit* visit, struct Expression* expres { struct Expression_Call_Or_Construct* coc = &expression->value.call_or_construct; VISIT(visit_expression, coc->subject); - FOR_EACH(struct Expression*, argument, coc->arguments) - { - VISIT(visit_expression, argument); - } + FOR_EACH (struct Expression*, argument, coc->arguments) { VISIT(visit_expression, argument); } } void @@ -349,8 +345,7 @@ walk_type_node_maybe(struct Visit* visit, struct Type_Node* node) void walk_type_node_tuple(struct Visit* visit, struct Type_Node* node) { - FOR_EACH(struct Type_Node*, current, node->value.tuple.head) - { + FOR_EACH (struct Type_Node*, current, node->value.tuple.head) { VISIT(visit_type_node, current); } } @@ -371,8 +366,7 @@ walk_type_node_function(struct Visit* visit, struct Type_Node* node) void walk_type_node_structure(struct Visit* visit, struct Type_Node* node) { - FOR_EACH(struct Type_Node*, field, node->value.structure.fields) - { + FOR_EACH (struct Type_Node*, field, node->value.structure.fields) { VISIT(visit_type_node, field); } } @@ -380,8 +374,7 @@ walk_type_node_structure(struct Visit* visit, struct Type_Node* node) void walk_type_node_variant(struct Visit* visit, struct Type_Node* node) { - FOR_EACH(struct Type_Node*, method, node->value.variant.variants) - { + FOR_EACH (struct Type_Node*, method, node->value.variant.variants) { VISIT(visit_type_node, method); } } @@ -389,8 +382,7 @@ walk_type_node_variant(struct Visit* visit, struct Type_Node* node) void walk_type_node_class(struct Visit* visit, struct Type_Node* node) { - FOR_EACH(struct Type_Node*, method, node->value.class.methods) - { + FOR_EACH (struct Type_Node*, method, node->value.class.methods) { VISIT(visit_type_node, method); } } @@ -398,10 +390,7 @@ walk_type_node_class(struct Visit* visit, struct Type_Node* node) void walk_block_node(struct Visit* visit, struct Block_Node* node) { - FOR_EACH(struct Statement*, statement, node->statements) - { - VISIT(visit_statement, statement); - } + FOR_EACH (struct Statement*, statement, node->statements) { VISIT(visit_statement, statement); } } void @@ -414,8 +403,7 @@ walk_bare_declaration_node(struct Visit* visit, struct Bare_Declaration_Node* no void walk_function_header_node(struct Visit* visit, struct Function_Header_Node* header) { - FOR_EACH(struct Type_Node*, param_type, header->parameters_type_and_name) - { + FOR_EACH (struct Type_Node*, param_type, header->parameters_type_and_name) { VISIT(visit_type_node, param_type); } VISIT_MAYBE(visit_type_node, header->return_type); @@ -505,8 +493,7 @@ void printer_visit_tree(struct Visit* visit, struct Tree* tree) { DATA_FOR_VISIT(struct Tree_Printer, printer); - FOR_EACH(struct Statement*, statement, tree->top_level_statements) - { + FOR_EACH (struct Statement*, statement, tree->top_level_statements) { VISIT(visit_statement, statement); fprintf(printer->output, "\n"); } @@ -730,8 +717,7 @@ printer_visit_expression_call_or_construct(struct Visit* visit, struct Expressio VISIT(visit_expression, coc->subject); uint i = 0; - FOR_EACH(struct Expression*, argument, coc->arguments) - { + FOR_EACH (struct Expression*, argument, coc->arguments) { struct String name = string_array_at(&coc->argument_names, i++); if (name.data && name.data[0] != '\0') { fprintf(printer->output, " (named arg '%s' ", name.data); @@ -842,8 +828,7 @@ printer_visit_type_node_tuple(struct Visit* visit, struct Type_Node* node) DATA_FOR_VISIT(struct Tree_Printer, printer); fprintf(printer->output, "tuple"); - FOR_EACH(struct Type_Node*, current, node->value.tuple.head) - { + FOR_EACH (struct Type_Node*, current, node->value.tuple.head) { fprintf(printer->output, " "); VISIT(visit_type_node, current); } @@ -875,8 +860,7 @@ printer_visit_type_node_structure(struct Visit* visit, struct Type_Node* node) DATA_FOR_VISIT(struct Tree_Printer, printer); fprintf(printer->output, "structure"); - FOR_EACH(struct Type_Node*, current, node->value.structure.fields) - { + FOR_EACH (struct Type_Node*, current, node->value.structure.fields) { fprintf(printer->output, " (field %s) ", current->value_name.data); VISIT(visit_type_node, current); } @@ -888,8 +872,7 @@ printer_visit_type_node_variant(struct Visit* visit, struct Type_Node* node) DATA_FOR_VISIT(struct Tree_Printer, printer); fprintf(printer->output, "variant"); - FOR_EACH(struct Type_Node*, current, node->value.variant.variants) - { + FOR_EACH (struct Type_Node*, current, node->value.variant.variants) { if (current->type == TYPE_NODE_NONE) { fprintf(printer->output, " (variant %s)", current->value_name.data); } else { @@ -906,8 +889,7 @@ printer_visit_type_node_class(struct Visit* visit, struct Type_Node* node) DATA_FOR_VISIT(struct Tree_Printer, printer); fprintf(printer->output, "class"); - FOR_EACH(struct Type_Node*, current, node->value.class.methods) - { + FOR_EACH (struct Type_Node*, current, node->value.class.methods) { fprintf(printer->output, " (method %s ", current->value_name.data); VISIT(visit_function_header_node, ¤t->value.function.header); fprintf(printer->output, ")"); @@ -921,8 +903,7 @@ printer_visit_block_node(struct Visit* visit, struct Block_Node* node) fprintf(printer->output, "(block \n"); printer->indentation_level++; - FOR_EACH(struct Statement*, statement, node->statements) - { + FOR_EACH (struct Statement*, statement, node->statements) { VISIT(visit_statement, statement); fprintf(printer->output, "\n"); } @@ -937,10 +918,7 @@ printer_visit_bare_declaration_node(struct Visit* visit, struct Bare_Declaration DATA_FOR_VISIT(struct Tree_Printer, printer); fprintf(printer->output, "(declaration "); - STRING_ARRAY_FOR_EACH(i, name, node->names) - { - fprintf(printer->output, "%s ", name.data); - } + STRING_ARRAY_FOR_EACH (i, name, node->names) { fprintf(printer->output, "%s ", name.data); } if (node->type && node->type->type != TYPE_NODE_NONE) { VISIT(visit_type_node, node->type); @@ -960,8 +938,7 @@ printer_visit_function_header(struct Visit* visit, struct Function_Header_Node* { DATA_FOR_VISIT(struct Tree_Printer, printer); - FOR_EACH(struct Type_Node*, current, header->parameters_type_and_name) - { + FOR_EACH (struct Type_Node*, current, header->parameters_type_and_name) { if (current != header->parameters_type_and_name) fprintf(printer->output, " "); if (current->value_name.data && current->value_name.data[0] != '\0') -- cgit 1.4.1