#include "delayed_matching.h"
#include <libregexis024sol/expr_compiler.h>

namespace regexis024 {
    int compile(const std::string& regexp, track_var_list &ret_track_var_list, std::vector<uint8_t> &ret_program,
        std::string &ret_message) {
        ret_message.clear();
        REGEX_IS024_MeaningContext cmp_ctx(regexp.size(), regexp.data());
        if (cmp_ctx.error) {
            ret_message = std::move(cmp_ctx.error_msg);
            return -1;
        }
        ret_program = std::move(cmp_ctx.compiled_program);
        ret_track_var_list.clear();
        for (auto& iip: cmp_ctx.ktr.track_names)
            ret_track_var_list[iip.first] = (TrackingVariableInfo)cmp_ctx.ktr.retrieval_info[iip.second];
        return 0;
    }
}