Whooops. Merging errors

This commit is contained in:
Андреев Григорий 2025-09-24 15:01:47 +03:00
parent 0de4ca1848
commit bbe9971035
3 changed files with 24 additions and 25 deletions

View File

@ -30,14 +30,14 @@ NODISCARD VecU8 generate_margaret_png_texture_data_methods(SpanU8 format_signatu
/* Non clonable structure */
VecU8_append_vec(&res, VecU8_fmt(
"typedef struct {\n"
SPACE4 "FILE* fp;\n"
SPACE4 "png_structp pngshka;\n"
SPACE4 "png_infop info;\n"
SPACE4 "png_infop end_info;\n"
SPACE "FILE* fp;\n"
SPACE "png_structp pngshka;\n"
SPACE "png_infop info;\n"
SPACE "png_infop end_info;\n"
"} %s;\n\n"
"void %s_drop(%s self) {\n"
SPACE4 "png_destroy_read_struct(&self.pngshka, &self.info, &self.end_info);\n"
SPACE4 "fclose(self.fp);\n"
SPACE "png_destroy_read_struct(&self.pngshka, &self.info, &self.end_info);\n"
SPACE "fclose(self.fp);\n"
"}\n\n", promise, promise, promise));
VecU8_append_vec(&res, generate_result_template_inst(promise, cstr("VecU8"), false, false));

View File

@ -82,7 +82,7 @@ NODISCARD VecU8 generate_texture_data_struct_and_necc_methods(SpanU8 tex, SpanU8
SpanU8 resoftex = VecU8_to_span(&g_resoftex);
VecU8_append_vec(&res, generate_result_template_inst(tex, cstr("SpanU8"), false, true));
/* I also add this, because why not?? Maye I will use it in the future... */
VecU8_append_vec(&res, generate_result_template_inst(tex, cstr("VecU8"), false, false));1
VecU8_append_vec(&res, generate_result_template_inst(tex, cstr("VecU8"), false, false));
/* Method _from_bitmap_text()
* We assume that bytes are tightly packed in member type */
VecU8_append_vec(&res, VecU8_fmt(

View File

@ -3,7 +3,6 @@
#include "codegen.h"
// todo: add macro that iterates over vector
/* if !primitive, requires methods T_drop, and, if also clonable, requires method T_clone */
@ -575,17 +574,17 @@ NODISCARD VecU8 generate_result_template_inst(SpanU8 OkT, SpanU8 ErrT, bool ok_t
VecU8_append_span(&res, cstr(
"typedef struct {\n"
SPACE4 "Result_variant variant;\n"));
SPACE "Result_variant variant;\n"));
if (ok_t_void && !err_t_void) {
VecU8_append_vec(&res, VecU8_fmt(SPACE4 "%s err;\n", ErrT));
VecU8_append_vec(&res, VecU8_fmt(SPACE "%s err;\n", ErrT));
} else if (!ok_t_void && err_t_void) {
VecU8_append_vec(&res, VecU8_fmt(SPACE4 "%s ok;\n", OkT));
VecU8_append_vec(&res, VecU8_fmt(SPACE "%s ok;\n", OkT));
} else {
VecU8_append_vec(&res, VecU8_fmt(
SPACE4 "union {\n"
SPACE4 SPACE4 "%s ok;\n"
SPACE4 SPACE4 "%s err;\n"
SPACE4 "};\n", OkT, ErrT));
SPACE "union {\n"
SPACE SPACE "%s ok;\n"
SPACE SPACE "%s err;\n"
SPACE "};\n", OkT, ErrT));
}
VecU8_append_vec(&res, VecU8_fmt("} %s;\n\n", ResultT));
@ -594,18 +593,18 @@ NODISCARD VecU8 generate_result_template_inst(SpanU8 OkT, SpanU8 ErrT, bool ok_t
"void %s_drop(%s self) {\n", ResultT, ResultT));
if (ok_t_primitive && !err_t_primitive) {
VecU8_append_vec(&res, VecU8_fmt(
SPACE4 "if (self.variant == Result_Err)\n"
SPACE4 SPACE4 "%s_drop(self.err);\n", ErrT));
SPACE "if (self.variant == Result_Err)\n"
SPACE SPACE "%s_drop(self.err);\n", ErrT));
} else if (!ok_t_primitive && err_t_primitive) {
VecU8_append_vec(&res, VecU8_fmt(
SPACE4 "if (self.variant == Result_Ok)\n"
SPACE4 SPACE4 "%s_drop(self.ok);\n", OkT));
SPACE "if (self.variant == Result_Ok)\n"
SPACE SPACE "%s_drop(self.ok);\n", OkT));
} else {
VecU8_append_vec(&res, VecU8_fmt(
SPACE4 "if (self.variant == Result_Ok)\n"
SPACE4 SPACE4 "%s_drop(self.ok);\n"
SPACE4 "else\n"
SPACE4 SPACE4 "%s_drop(self.err);\n", OkT, ErrT));
SPACE "if (self.variant == Result_Ok)\n"
SPACE SPACE "%s_drop(self.ok);\n"
SPACE "else\n"
SPACE SPACE "%s_drop(self.err);\n", OkT, ErrT));
}
VecU8_append_span(&res, cstr("}\n\n"));
}
@ -627,14 +626,14 @@ void generate_eve_header_of_result_type_instantiation(
void generate_guarded_header_of_result_type_instantiation(
SpanU8 layer, SpanU8 bonus_ns, SpanU8 OkT, SpanU8 ErrT, SpanU8 dependencies, bool ok_t_primitive, bool err_t_primitive
) {
){
assert(layer.len > 1);
VecU8 filename = get_ResultType_inst_name(OkT, ErrT);
VecU8 path = VecU8_fmt("%s/%s%s%s", layer, bonus_ns, bonus_ns.len ? cstr("/") : cstr(""), VecU8_to_span(&filename));
GeneratedHeader head = begin_header(VecU8_to_span(&path));
VecU8_drop(path);
VecU8_drop(filename);
}
typedef struct{
SpanU8 T;