#ifndef PROTOTYPE1_SRC_L1_5_ANNE_LIZA_H
#define PROTOTYPE1_SRC_L1_5_ANNE_LIZA_H

#include "../codegen/trait_wrap_boil.h"

void generate_l1_5_liza_headers() {
    mkdir_nofail("l1_5/eve/liza");
    SpanU8 l = cstr("l1_5"), ns = cstr("liza");
    generate_trait_wrapper_templ_inst_eve_header(l, ns, (trait_wrapper_boil_options){
        .trait = {
            .name = cstr("LizaInstrument"),
            .methods = (SpanNamedMethodSignatureRecordRef){
                // todo: request options for instrument
                .data = (NamedMethodSignatureRecordRef[]){
                    {
                        .takes_self = true,
                        .params = (SpanNamedVariableRecordRef){
                            .data = (NamedVariableRecordRef[]){
                                {.type = cstr("double"), .name = cstr("frequency") },
                                { .type = cstr("double"), .name = cstr("time") },
                            }, .len = 2
                        },
                        .return_type = cstr("BoxLizaSound"),
                        .name = cstr("ding"),
                    }
                }, .len = 1
            },
            .drop_primitive = false,
            .base_struct_name = cstr(""),
        },
        .box = true, .ref = true, .mut_ref = true
    });
}

#endif