Collapsed a lot of copypasted code. Hope I didn't broke anything
This commit is contained in:
parent
4cd6e65ea9
commit
8a2e8b48ad
@ -51,9 +51,9 @@ void generate_util_temp_very_base_headers() {
|
||||
generate_guarded_span_company_for_primitive(cstr("l1"), cstr(""),
|
||||
cstr("CSTR"), cstr(""), true, false);
|
||||
|
||||
generate_guarded_header_of_result_type_instantiation(cstr("l1"), cstr(""),
|
||||
generate_ResultType_templ_inst_guarded_header(cstr("l1"), cstr(""),
|
||||
cstr(""), cstr("VecU8"), cstr("#include \"VecAndSpan_U8.h\""), true, false);
|
||||
generate_guarded_header_of_result_type_instantiation(cstr("l1"), cstr(""),
|
||||
generate_ResultType_templ_inst_guarded_header(cstr("l1"), cstr(""),
|
||||
cstr(""), cstr("SpanU8"), cstr("#include \"VecAndSpan_U8.h\""), true, true);
|
||||
}
|
||||
|
||||
|
||||
@ -478,20 +478,14 @@ NODISCARD VecU8 generate_util_templates_instantiation(util_templates_instantiati
|
||||
|
||||
NODISCARD VecU8 util_templates_instantiation_get_appropriate_filename(util_templates_instantiation_options op) {
|
||||
util_templates_instantiation_options_fix(&op);
|
||||
return VecU8_fmt("%s%s%s""%s%s.h",
|
||||
return VecU8_fmt("%s%s%s""%s%s",
|
||||
op.vec ? cstr("Vec") : cstr(""), op.vec && op.span ? cstr("And") : cstr(""), op.span ? cstr("Span") : cstr(""),
|
||||
(int)op.vec + (int)op.span > 1 ? cstr("_") : cstr(""), op.T);
|
||||
}
|
||||
|
||||
void generate_util_templ_inst_eve_header(SpanU8 layer, SpanU8 bonus_ns, util_templates_instantiation_options op) {
|
||||
VecU8 text = VecU8_from_cstr("/* Automatically generated file. Do not edit it.\n"
|
||||
" * Do not include it in more than one place */\n\n");
|
||||
VecU8_append_vec(&text, generate_util_templates_instantiation(op));
|
||||
VecU8 filename = util_templates_instantiation_get_appropriate_filename(op);
|
||||
VecU8 nt_path = VecU8_fmt("%s/eve/%s/%v%c", layer, bonus_ns, filename, 0);
|
||||
write_whole_file_or_abort((const char*)nt_path.buf, VecU8_to_span(&text));
|
||||
VecU8_drop(nt_path);
|
||||
VecU8_drop(text);
|
||||
generate_SOME_templ_inst_eve_header(layer, bonus_ns, generate_util_templates_instantiation(op),
|
||||
util_templates_instantiation_get_appropriate_filename(op));
|
||||
}
|
||||
|
||||
void generate_eve_span_company_for_primitive(SpanU8 layer, SpanU8 ns, SpanU8 T, bool with_vector, bool with_span) {
|
||||
@ -518,21 +512,9 @@ void generate_eve_span_company_for_non_primitive_non_clonable(SpanU8 layer, Span
|
||||
void generate_util_templ_inst_guarded_header(
|
||||
SpanU8 layer, SpanU8 bonus_ns, SpanU8 dependencies, util_templates_instantiation_options op
|
||||
) {
|
||||
assert(layer.len > 1);
|
||||
VecU8 filename = util_templates_instantiation_get_appropriate_filename(op);
|
||||
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);
|
||||
VecU8_append_span(&head.result, cstr("#include \"../../"));
|
||||
int to_my_layer = get_number_of_parts_in_header_namespace(bonus_ns);
|
||||
for (int i = 0; i < to_my_layer; i++)
|
||||
VecU8_append_span(&head.result, cstr("../"));
|
||||
VecU8_append_span(&head.result, cstr("src/l1/core/util.h\"\n"));
|
||||
VecU8_append_span(&head.result, dependencies);
|
||||
VecU8_append_span(&head.result, cstr("\n\n"));
|
||||
VecU8_append_vec(&head.result, generate_util_templates_instantiation(op));
|
||||
finish_header(head);
|
||||
generate_SOME_templ_inst_guarded_header(layer, bonus_ns, VecU8_fmt("%v%s\n",
|
||||
codegen_include_relative_to_root(bonus_ns, cstr("src/l1/core/util.h")), dependencies),
|
||||
generate_util_templates_instantiation(op), util_templates_instantiation_get_appropriate_filename(op));
|
||||
}
|
||||
|
||||
void generate_guarded_span_company_for_primitive(
|
||||
@ -623,31 +605,19 @@ NODISCARD VecU8 generate_result_template_inst(SpanU8 OkT, SpanU8 ErrT, bool ok_t
|
||||
return res;
|
||||
}
|
||||
|
||||
void generate_eve_header_of_result_type_instantiation(
|
||||
SpanU8 l, SpanU8 ns, SpanU8 OkT, SpanU8 ErrT, bool ok_t_primitive, bool err_t_primitive
|
||||
void generate_ResultType_templ_inst_eve_header(
|
||||
SpanU8 layer, SpanU8 bonus_ns, SpanU8 OkT, SpanU8 ErrT, bool ok_t_primitive, bool err_t_primitive
|
||||
) {
|
||||
VecU8 ResultT = get_ResultType_inst_name(OkT, ErrT);
|
||||
VecU8 nt_filepath = VecU8_fmt("%s/eve/%s/%s.h%c", l, ns, VecU8_to_span(&ResultT), 0);
|
||||
VecU8 text = generate_result_template_inst(OkT, ErrT, ok_t_primitive, err_t_primitive);
|
||||
write_whole_file_or_abort((CSTR)text.buf, VecU8_to_span(&text));
|
||||
VecU8_drop(text);
|
||||
VecU8_drop(nt_filepath);
|
||||
VecU8_drop(ResultT);
|
||||
generate_SOME_templ_inst_eve_header(layer, bonus_ns,
|
||||
generate_result_template_inst(OkT, ErrT, ok_t_primitive, err_t_primitive), get_ResultType_inst_name(OkT, ErrT));
|
||||
}
|
||||
|
||||
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
|
||||
void generate_ResultType_templ_inst_guarded_header(
|
||||
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.h", layer, bonus_ns, bonus_ns.len ? cstr("/") : cstr(""), VecU8_to_span(&filename));
|
||||
GeneratedHeader head = begin_header(VecU8_to_span(&path));
|
||||
VecU8_append_span(&head.result, dependencies);
|
||||
VecU8_append_span(&head.result, cstr("\n\n"));
|
||||
VecU8_append_vec(&head.result, generate_result_template_inst(OkT, ErrT, ok_t_primitive, err_t_primitive));
|
||||
finish_header(head);
|
||||
VecU8_drop(path);
|
||||
VecU8_drop(filename);
|
||||
generate_SOME_templ_inst_guarded_header(layer, bonus_ns, VecU8_fmt("%v%s\n",
|
||||
codegen_include_relative_to_root(bonus_ns, cstr("src/l1/core/util.h")), dependencies),
|
||||
generate_result_template_inst(OkT, ErrT, ok_t_primitive, err_t_primitive), get_ResultType_inst_name(OkT, ErrT));
|
||||
}
|
||||
|
||||
typedef struct{
|
||||
@ -720,32 +690,16 @@ NODISCARD VecU8 generate_OptionT_struct_and_methods(option_template_instantiatio
|
||||
}
|
||||
|
||||
void generate_Option_templ_inst_eve_header(SpanU8 layer, SpanU8 bonus_ns, option_template_instantiation_op op) {
|
||||
VecU8 text = VecU8_from_cstr("/* Automatically generated file. Do not edit it.\n"
|
||||
" * Do not include it in more than one place */\n\n");
|
||||
VecU8_append_vec(&text, generate_OptionT_struct_and_methods(op));
|
||||
VecU8 nt_path = VecU8_fmt("%s/eve/%s/Option%s.h%c", layer, bonus_ns, op.T, 0);
|
||||
write_whole_file_or_abort((const char*)nt_path.buf, VecU8_to_span(&text));
|
||||
VecU8_drop(nt_path);
|
||||
VecU8_drop(text);
|
||||
generate_SOME_templ_inst_eve_header(layer, bonus_ns, generate_OptionT_struct_and_methods(op),
|
||||
VecU8_fmt("Option%s", op.T));
|
||||
}
|
||||
|
||||
void generate_Option_templ_inst_guarded_header(
|
||||
SpanU8 layer, SpanU8 bonus_ns, SpanU8 dependencies, option_template_instantiation_op op
|
||||
) {
|
||||
assert(layer.len > 1);
|
||||
VecU8 path = VecU8_fmt("%s/%s%sOption%s.h", layer, bonus_ns, bonus_ns.len ? cstr("/") : cstr(""), op.T);
|
||||
GeneratedHeader head = begin_header(VecU8_to_span(&path));
|
||||
VecU8_drop(path);
|
||||
|
||||
VecU8_append_span(&head.result, cstr("#include \"../../"));
|
||||
int to_my_layer = get_number_of_parts_in_header_namespace(bonus_ns);
|
||||
for (int i = 0; i < to_my_layer; i++)
|
||||
VecU8_append_span(&head.result, cstr("../"));
|
||||
VecU8_append_span(&head.result, cstr("src/l1/core/util.h\"\n"));
|
||||
VecU8_append_span(&head.result, dependencies);
|
||||
VecU8_append_span(&head.result, cstr("\n\n"));
|
||||
VecU8_append_vec(&head.result, generate_OptionT_struct_and_methods(op));
|
||||
finish_header(head);
|
||||
generate_SOME_templ_inst_guarded_header(layer, bonus_ns, VecU8_fmt("%v%s\n",
|
||||
codegen_include_relative_to_root(bonus_ns, cstr("src/l1/core/util.h")), dependencies),
|
||||
generate_OptionT_struct_and_methods(op), VecU8_fmt("Option%s", op.T));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@ -447,7 +447,7 @@ void generate_buf_rbtree_Set_templ_inst_eve_header(SpanU8 layer, SpanU8 bonus_ns
|
||||
void generate_buf_rbtree_Set_templ_inst_guarded_header(
|
||||
SpanU8 layer, SpanU8 bonus_ns, SpanU8 dependencies, set_instantiation_op op
|
||||
){
|
||||
VecU8 all_dependencies = VecU8_fmt("%v%s",
|
||||
VecU8 all_dependencies = VecU8_fmt("%v%s\n",
|
||||
codegen_include_relative_to_root(bonus_ns, cstr("src/l1_5/core/buff_rb_tree_node.h")), dependencies);
|
||||
generate_SOME_templ_inst_guarded_header(layer, bonus_ns, all_dependencies,
|
||||
generate_buf_rbtree_Set_template_instantiation(op), get_name_of_buf_rbtree_set_structure(op));
|
||||
@ -539,7 +539,7 @@ void generate_buf_rbtree_Map_templ_inst_eve_header(SpanU8 layer, SpanU8 bonus_ns
|
||||
void generate_buf_rbtree_Map_templ_inst_guarded_header(
|
||||
SpanU8 layer, SpanU8 bonus_ns, SpanU8 dependencies, map_instantiation_op op
|
||||
){
|
||||
VecU8 all_dependencies = VecU8_fmt("%v%s",
|
||||
VecU8 all_dependencies = VecU8_fmt("%v%s\n",
|
||||
codegen_include_relative_to_root(bonus_ns, cstr("src/l1_5/core/buff_rb_tree_node.h")), dependencies);
|
||||
generate_SOME_templ_inst_guarded_header(layer, bonus_ns, all_dependencies,
|
||||
generate_buf_rbtree_Map_template_instantiation(op), get_name_of_buf_rbtree_map_structure(op));
|
||||
|
||||
@ -429,10 +429,9 @@ bool MargaretFreeMemSegment_less_resp_align(
|
||||
}
|
||||
|
||||
#include "../../../gen/l1/eve/margaret/VecMargaretFreeMemSegment.h"
|
||||
#include "../../../gen/l1/eve/margaret/OptionMargaretFreeMemSegment.h"
|
||||
#include "../../../gen/l1_5/eve/margaret/BuffRBTreeByLen_SetMargaretFreeMemSegment.h"
|
||||
#include "../../../gen/l1_5/eve/margaret/BuffRBTreeByLenRespAlign_SetMargaretFreeMemSegment.h"
|
||||
#include "../../../gen/l1/eve/margaret/OptionBuffRBTreeByLenRespAlign_SetMargaretFreeMemSegment.h"
|
||||
#include "../../../gen/l1_5/eve/margaret/BufRBTreeByLen_SetMargaretFreeMemSegment.h"
|
||||
#include "../../../gen/l1_5/eve/margaret/BufRBTreeByLenRespAlign_SetMargaretFreeMemSegment.h"
|
||||
#include "../../../gen/l1/eve/margaret/OptionBufRBTreeByLenRespAlign_SetMargaretFreeMemSegment.h"
|
||||
|
||||
typedef struct{
|
||||
U32 old_mem_block_id;
|
||||
@ -466,7 +465,7 @@ typedef struct{
|
||||
|
||||
/* Superstructure for managing free segments of memory of some type in ALL BLOCKS */
|
||||
typedef struct {
|
||||
OptionBuffRBTreeByLenRespAlign_SetMargaretFreeMemSegment free_space_in_memory[MARGARET_ALLOC_LIMIT_ALIGNMENT_EXP];
|
||||
OptionBufRBTreeByLenRespAlign_SetMargaretFreeMemSegment free_space_in_memory[MARGARET_ALLOC_LIMIT_ALIGNMENT_EXP];
|
||||
VecU8 set_present;
|
||||
} MargaretMemFreeSpaceManager;
|
||||
|
||||
@ -474,9 +473,9 @@ MargaretMemFreeSpaceManager MargaretMemFreeSpaceManager_new(){
|
||||
MargaretMemFreeSpaceManager res = {.set_present = VecU8_new_zeroinit(1)};
|
||||
res.set_present.buf[0] = 3;
|
||||
for (U8 algn = 0; algn < MARGARET_ALLOC_LIMIT_ALIGNMENT_EXP; algn++)
|
||||
res.free_space_in_memory[algn] = None_BuffRBTreeByLenRespAlign_SetMargaretFreeMemSegment();
|
||||
res.free_space_in_memory[3] = Some_BuffRBTreeByLenRespAlign_SetMargaretFreeMemSegment(
|
||||
BuffRBTreeByLenRespAlign_SetMargaretFreeMemSegment_new_reserved(3, 1));
|
||||
res.free_space_in_memory[algn] = None_BufRBTreeByLenRespAlign_SetMargaretFreeMemSegment();
|
||||
res.free_space_in_memory[3] = Some_BufRBTreeByLenRespAlign_SetMargaretFreeMemSegment(
|
||||
BufRBTreeByLenRespAlign_SetMargaretFreeMemSegment_new_reserved(3, 1));
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user