| ... | @@ -7508,51 +7508,60 @@ static void gen_h_file(CodeGen *g) { | ... | @@ -7508,51 +7508,60 @@ static void gen_h_file(CodeGen *g) { |
| 7508 | case TypeTableEntryIdPromise: | 7508 | case TypeTableEntryIdPromise: |
| 7509 | zig_unreachable(); | 7509 | zig_unreachable(); |
| 7510 | case TypeTableEntryIdEnum: | 7510 | case TypeTableEntryIdEnum: |
| 7511 | assert(type_entry->data.enumeration.layout == ContainerLayoutExtern); | 7511 | if (type_entry->data.enumeration.layout == ContainerLayoutExtern) { |
| 7512 | fprintf(out_h, "enum %s {\n", buf_ptr(&type_entry->name)); | 7512 | fprintf(out_h, "enum %s {\n", buf_ptr(&type_entry->name)); |
| 7513 | for (uint32_t field_i = 0; field_i < type_entry->data.enumeration.src_field_count; field_i += 1) { | 7513 | for (uint32_t field_i = 0; field_i < type_entry->data.enumeration.src_field_count; field_i += 1) { |
| 7514 | TypeEnumField *enum_field = &type_entry->data.enumeration.fields[field_i]; | 7514 | TypeEnumField *enum_field = &type_entry->data.enumeration.fields[field_i]; |
| 7515 | Buf *value_buf = buf_alloc(); | 7515 | Buf *value_buf = buf_alloc(); |
| 7516 | bigint_append_buf(value_buf, &enum_field->value, 10); | 7516 | bigint_append_buf(value_buf, &enum_field->value, 10); |
| 7517 | fprintf(out_h, " %s = %s", buf_ptr(enum_field->name), buf_ptr(value_buf)); | 7517 | fprintf(out_h, " %s = %s", buf_ptr(enum_field->name), buf_ptr(value_buf)); |
| 7518 | if (field_i != type_entry->data.enumeration.src_field_count - 1) { | 7518 | if (field_i != type_entry->data.enumeration.src_field_count - 1) { |
| 7519 | fprintf(out_h, ","); | 7519 | fprintf(out_h, ","); |
| | 7520 | } |
| | 7521 | fprintf(out_h, "\n"); |
| 7520 | } | 7522 | } |
| 7521 | fprintf(out_h, "\n"); | 7523 | fprintf(out_h, "};\n\n"); |
| | 7524 | } else { |
| | 7525 | fprintf(out_h, "enum %s;\n", buf_ptr(&type_entry->name)); |
| 7522 | } | 7526 | } |
| 7523 | fprintf(out_h, "};\n\n"); | | |
| 7524 | break; | 7527 | break; |
| 7525 | case TypeTableEntryIdStruct: | 7528 | case TypeTableEntryIdStruct: |
| 7526 | assert(type_entry->data.structure.layout == ContainerLayoutExtern); | 7529 | if (type_entry->data.structure.layout == ContainerLayoutExtern) { |
| 7527 | fprintf(out_h, "struct %s {\n", buf_ptr(&type_entry->name)); | 7530 | fprintf(out_h, "struct %s {\n", buf_ptr(&type_entry->name)); |
| 7528 | for (uint32_t field_i = 0; field_i < type_entry->data.structure.src_field_count; field_i += 1) { | 7531 | for (uint32_t field_i = 0; field_i < type_entry->data.structure.src_field_count; field_i += 1) { |
| 7529 | TypeStructField *struct_field = &type_entry->data.structure.fields[field_i]; | 7532 | TypeStructField *struct_field = &type_entry->data.structure.fields[field_i]; |
| 7530 | | 7533 | |
| 7531 | Buf *type_name_buf = buf_alloc(); | 7534 | Buf *type_name_buf = buf_alloc(); |
| 7532 | get_c_type(g, gen_h, struct_field->type_entry, type_name_buf); | 7535 | get_c_type(g, gen_h, struct_field->type_entry, type_name_buf); |
| 7533 | | 7536 | |
| 7534 | if (struct_field->type_entry->id == TypeTableEntryIdArray) { | 7537 | if (struct_field->type_entry->id == TypeTableEntryIdArray) { |
| 7535 | fprintf(out_h, " %s %s[%" ZIG_PRI_u64 "];\n", buf_ptr(type_name_buf), | 7538 | fprintf(out_h, " %s %s[%" ZIG_PRI_u64 "];\n", buf_ptr(type_name_buf), |
| 7536 | buf_ptr(struct_field->name), | 7539 | buf_ptr(struct_field->name), |
| 7537 | struct_field->type_entry->data.array.len); | 7540 | struct_field->type_entry->data.array.len); |
| 7538 | } else { | 7541 | } else { |
| 7539 | fprintf(out_h, " %s %s;\n", buf_ptr(type_name_buf), buf_ptr(struct_field->name)); | 7542 | fprintf(out_h, " %s %s;\n", buf_ptr(type_name_buf), buf_ptr(struct_field->name)); |
| 7540 | } | 7543 | } |
| 7541 | | 7544 | |
| | 7545 | } |
| | 7546 | fprintf(out_h, "};\n\n"); |
| | 7547 | } else { |
| | 7548 | fprintf(out_h, "struct %s;\n", buf_ptr(&type_entry->name)); |
| 7542 | } | 7549 | } |
| 7543 | fprintf(out_h, "};\n\n"); | | |
| 7544 | break; | 7550 | break; |
| 7545 | case TypeTableEntryIdUnion: | 7551 | case TypeTableEntryIdUnion: |
| 7546 | assert(type_entry->data.unionation.layout == ContainerLayoutExtern); | 7552 | if (type_entry->data.unionation.layout == ContainerLayoutExtern) { |
| 7547 | fprintf(out_h, "union %s {\n", buf_ptr(&type_entry->name)); | 7553 | fprintf(out_h, "union %s {\n", buf_ptr(&type_entry->name)); |
| 7548 | for (uint32_t field_i = 0; field_i < type_entry->data.unionation.src_field_count; field_i += 1) { | 7554 | for (uint32_t field_i = 0; field_i < type_entry->data.unionation.src_field_count; field_i += 1) { |
| 7549 | TypeUnionField *union_field = &type_entry->data.unionation.fields[field_i]; | 7555 | TypeUnionField *union_field = &type_entry->data.unionation.fields[field_i]; |
| 7550 | | 7556 | |
| 7551 | Buf *type_name_buf = buf_alloc(); | 7557 | Buf *type_name_buf = buf_alloc(); |
| 7552 | get_c_type(g, gen_h, union_field->type_entry, type_name_buf); | 7558 | get_c_type(g, gen_h, union_field->type_entry, type_name_buf); |
| 7553 | fprintf(out_h, " %s %s;\n", buf_ptr(type_name_buf), buf_ptr(union_field->name)); | 7559 | fprintf(out_h, " %s %s;\n", buf_ptr(type_name_buf), buf_ptr(union_field->name)); |
| | 7560 | } |
| | 7561 | fprintf(out_h, "};\n\n"); |
| | 7562 | } else { |
| | 7563 | fprintf(out_h, "union %s;\n", buf_ptr(&type_entry->name)); |
| 7554 | } | 7564 | } |
| 7555 | fprintf(out_h, "};\n\n"); | | |
| 7556 | break; | 7565 | break; |
| 7557 | case TypeTableEntryIdOpaque: | 7566 | case TypeTableEntryIdOpaque: |
| 7558 | fprintf(out_h, "struct %s;\n\n", buf_ptr(&type_entry->name)); | 7567 | fprintf(out_h, "struct %s;\n\n", buf_ptr(&type_entry->name)); |