#include <libregexis024vm/vm_errno.h>

const char *regex024_error_code_tostr(regex024_error_code x) {
#define rcase(name) case regex024_error_codes::name: return #name;
    switch (x) {
        rcase(stable)
        rcase(ca_tree_limit_violation)
        rcase(sa_length_limit_violation)
        rcase(read_sslot_count_limit_violation)
        rcase(fork_sslot_count_limit_violation)
        rcase(timeout)
        rcase(improper_finish)
        rcase(too_early)
        rcase(too_late)
        rcase(selection_arr_out_of_range)
        rcase(read_sslot_out_of_range)
        rcase(fork_sslot_out_of_range)
        rcase(invalid_opcode)
        rcase(invalid_register_code)
        rcase(instruction_not_for_general_thread)
        rcase(instruction_not_for_collision_thread)
        rcase(bad_alloc)
        default:
            return "unknown_error_code";
    }
}