// Generated by cpp11: do not edit by hand
// clang-format off


#include "cpp11/declarations.hpp"
#include <R_ext/Visibility.h>

// local_search.cpp
SEXP vrpr_local_search_create(SEXP pd, int num_neighbours, int seed, int min_perturbations, int max_perturbations);
extern "C" SEXP _vrpr_vrpr_local_search_create(SEXP pd, SEXP num_neighbours, SEXP seed, SEXP min_perturbations, SEXP max_perturbations) {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_local_search_create(cpp11::as_cpp<cpp11::decay_t<SEXP>>(pd), cpp11::as_cpp<cpp11::decay_t<int>>(num_neighbours), cpp11::as_cpp<cpp11::decay_t<int>>(seed), cpp11::as_cpp<cpp11::decay_t<int>>(min_perturbations), cpp11::as_cpp<cpp11::decay_t<int>>(max_perturbations)));
  END_CPP11
}
// local_search.cpp
SEXP vrpr_local_search_run(SEXP bundle, SEXP sol, SEXP ce, bool exhaustive, bool shuffle);
extern "C" SEXP _vrpr_vrpr_local_search_run(SEXP bundle, SEXP sol, SEXP ce, SEXP exhaustive, SEXP shuffle) {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_local_search_run(cpp11::as_cpp<cpp11::decay_t<SEXP>>(bundle), cpp11::as_cpp<cpp11::decay_t<SEXP>>(sol), cpp11::as_cpp<cpp11::decay_t<SEXP>>(ce), cpp11::as_cpp<cpp11::decay_t<bool>>(exhaustive), cpp11::as_cpp<cpp11::decay_t<bool>>(shuffle)));
  END_CPP11
}
// local_search.cpp
list vrpr_local_search_info(SEXP bundle);
extern "C" SEXP _vrpr_vrpr_local_search_info(SEXP bundle) {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_local_search_info(cpp11::as_cpp<cpp11::decay_t<SEXP>>(bundle)));
  END_CPP11
}
// problem_data.cpp
SEXP vrpr_problem_data_create(doubles depot_x, doubles depot_y, doubles depot_tw_early, doubles depot_tw_late, doubles depot_service, doubles client_x, doubles client_y, doubles client_delivery, doubles client_pickup, doubles client_service, doubles client_tw_early, doubles client_tw_late, doubles client_release, doubles client_prize, logicals client_required, integers veh_num_available, doubles veh_capacity, doubles veh_fixed_cost, doubles veh_tw_early, doubles veh_tw_late, doubles veh_max_duration, doubles veh_max_distance, doubles veh_unit_distance_cost, doubles veh_unit_duration_cost, integers veh_start_depot, integers veh_end_depot, list veh_reload_depots, doubles veh_max_reloads, integers client_group, list group_members, logicals group_required, doubles_matrix<> distance, doubles_matrix<> duration);
extern "C" SEXP _vrpr_vrpr_problem_data_create(SEXP depot_x, SEXP depot_y, SEXP depot_tw_early, SEXP depot_tw_late, SEXP depot_service, SEXP client_x, SEXP client_y, SEXP client_delivery, SEXP client_pickup, SEXP client_service, SEXP client_tw_early, SEXP client_tw_late, SEXP client_release, SEXP client_prize, SEXP client_required, SEXP veh_num_available, SEXP veh_capacity, SEXP veh_fixed_cost, SEXP veh_tw_early, SEXP veh_tw_late, SEXP veh_max_duration, SEXP veh_max_distance, SEXP veh_unit_distance_cost, SEXP veh_unit_duration_cost, SEXP veh_start_depot, SEXP veh_end_depot, SEXP veh_reload_depots, SEXP veh_max_reloads, SEXP client_group, SEXP group_members, SEXP group_required, SEXP distance, SEXP duration) {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_problem_data_create(cpp11::as_cpp<cpp11::decay_t<doubles>>(depot_x), cpp11::as_cpp<cpp11::decay_t<doubles>>(depot_y), cpp11::as_cpp<cpp11::decay_t<doubles>>(depot_tw_early), cpp11::as_cpp<cpp11::decay_t<doubles>>(depot_tw_late), cpp11::as_cpp<cpp11::decay_t<doubles>>(depot_service), cpp11::as_cpp<cpp11::decay_t<doubles>>(client_x), cpp11::as_cpp<cpp11::decay_t<doubles>>(client_y), cpp11::as_cpp<cpp11::decay_t<doubles>>(client_delivery), cpp11::as_cpp<cpp11::decay_t<doubles>>(client_pickup), cpp11::as_cpp<cpp11::decay_t<doubles>>(client_service), cpp11::as_cpp<cpp11::decay_t<doubles>>(client_tw_early), cpp11::as_cpp<cpp11::decay_t<doubles>>(client_tw_late), cpp11::as_cpp<cpp11::decay_t<doubles>>(client_release), cpp11::as_cpp<cpp11::decay_t<doubles>>(client_prize), cpp11::as_cpp<cpp11::decay_t<logicals>>(client_required), cpp11::as_cpp<cpp11::decay_t<integers>>(veh_num_available), cpp11::as_cpp<cpp11::decay_t<doubles>>(veh_capacity), cpp11::as_cpp<cpp11::decay_t<doubles>>(veh_fixed_cost), cpp11::as_cpp<cpp11::decay_t<doubles>>(veh_tw_early), cpp11::as_cpp<cpp11::decay_t<doubles>>(veh_tw_late), cpp11::as_cpp<cpp11::decay_t<doubles>>(veh_max_duration), cpp11::as_cpp<cpp11::decay_t<doubles>>(veh_max_distance), cpp11::as_cpp<cpp11::decay_t<doubles>>(veh_unit_distance_cost), cpp11::as_cpp<cpp11::decay_t<doubles>>(veh_unit_duration_cost), cpp11::as_cpp<cpp11::decay_t<integers>>(veh_start_depot), cpp11::as_cpp<cpp11::decay_t<integers>>(veh_end_depot), cpp11::as_cpp<cpp11::decay_t<list>>(veh_reload_depots), cpp11::as_cpp<cpp11::decay_t<doubles>>(veh_max_reloads), cpp11::as_cpp<cpp11::decay_t<integers>>(client_group), cpp11::as_cpp<cpp11::decay_t<list>>(group_members), cpp11::as_cpp<cpp11::decay_t<logicals>>(group_required), cpp11::as_cpp<cpp11::decay_t<doubles_matrix<>>>(distance), cpp11::as_cpp<cpp11::decay_t<doubles_matrix<>>>(duration)));
  END_CPP11
}
// problem_data.cpp
list vrpr_problem_data_summary(SEXP ptr);
extern "C" SEXP _vrpr_vrpr_problem_data_summary(SEXP ptr) {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_problem_data_summary(cpp11::as_cpp<cpp11::decay_t<SEXP>>(ptr)));
  END_CPP11
}
// sanity.cpp
int vrpr_cpp_standard();
extern "C" SEXP _vrpr_vrpr_cpp_standard() {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_cpp_standard());
  END_CPP11
}
// sanity.cpp
bool vrpr_has_cxx20();
extern "C" SEXP _vrpr_vrpr_has_cxx20() {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_has_cxx20());
  END_CPP11
}
// sanity.cpp
std::string vrpr_hello();
extern "C" SEXP _vrpr_vrpr_hello() {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_hello());
  END_CPP11
}
// solution.cpp
SEXP vrpr_rng_create(int seed);
extern "C" SEXP _vrpr_vrpr_rng_create(SEXP seed) {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_rng_create(cpp11::as_cpp<cpp11::decay_t<int>>(seed)));
  END_CPP11
}
// solution.cpp
SEXP vrpr_cost_evaluator_create(doubles load_penalties, double tw_penalty, double dist_penalty);
extern "C" SEXP _vrpr_vrpr_cost_evaluator_create(SEXP load_penalties, SEXP tw_penalty, SEXP dist_penalty) {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_cost_evaluator_create(cpp11::as_cpp<cpp11::decay_t<doubles>>(load_penalties), cpp11::as_cpp<cpp11::decay_t<double>>(tw_penalty), cpp11::as_cpp<cpp11::decay_t<double>>(dist_penalty)));
  END_CPP11
}
// solution.cpp
SEXP vrpr_solution_from_routes(SEXP pd, list routes);
extern "C" SEXP _vrpr_vrpr_solution_from_routes(SEXP pd, SEXP routes) {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_solution_from_routes(cpp11::as_cpp<cpp11::decay_t<SEXP>>(pd), cpp11::as_cpp<cpp11::decay_t<list>>(routes)));
  END_CPP11
}
// solution.cpp
SEXP vrpr_solution_random(SEXP pd, SEXP rng);
extern "C" SEXP _vrpr_vrpr_solution_random(SEXP pd, SEXP rng) {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_solution_random(cpp11::as_cpp<cpp11::decay_t<SEXP>>(pd), cpp11::as_cpp<cpp11::decay_t<SEXP>>(rng)));
  END_CPP11
}
// solution.cpp
list vrpr_solution_summary(SEXP ptr);
extern "C" SEXP _vrpr_vrpr_solution_summary(SEXP ptr) {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_solution_summary(cpp11::as_cpp<cpp11::decay_t<SEXP>>(ptr)));
  END_CPP11
}
// solution.cpp
list vrpr_solution_routes(SEXP ptr, int num_depots);
extern "C" SEXP _vrpr_vrpr_solution_routes(SEXP ptr, SEXP num_depots) {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_solution_routes(cpp11::as_cpp<cpp11::decay_t<SEXP>>(ptr), cpp11::as_cpp<cpp11::decay_t<int>>(num_depots)));
  END_CPP11
}
// solution.cpp
double vrpr_penalised_cost(SEXP ce, SEXP sol);
extern "C" SEXP _vrpr_vrpr_penalised_cost(SEXP ce, SEXP sol) {
  BEGIN_CPP11
    return cpp11::as_sexp(vrpr_penalised_cost(cpp11::as_cpp<cpp11::decay_t<SEXP>>(ce), cpp11::as_cpp<cpp11::decay_t<SEXP>>(sol)));
  END_CPP11
}

extern "C" {
static const R_CallMethodDef CallEntries[] = {
    {"_vrpr_vrpr_cost_evaluator_create", (DL_FUNC) &_vrpr_vrpr_cost_evaluator_create,  3},
    {"_vrpr_vrpr_cpp_standard",          (DL_FUNC) &_vrpr_vrpr_cpp_standard,           0},
    {"_vrpr_vrpr_has_cxx20",             (DL_FUNC) &_vrpr_vrpr_has_cxx20,              0},
    {"_vrpr_vrpr_hello",                 (DL_FUNC) &_vrpr_vrpr_hello,                  0},
    {"_vrpr_vrpr_local_search_create",   (DL_FUNC) &_vrpr_vrpr_local_search_create,    5},
    {"_vrpr_vrpr_local_search_info",     (DL_FUNC) &_vrpr_vrpr_local_search_info,      1},
    {"_vrpr_vrpr_local_search_run",      (DL_FUNC) &_vrpr_vrpr_local_search_run,       5},
    {"_vrpr_vrpr_penalised_cost",        (DL_FUNC) &_vrpr_vrpr_penalised_cost,         2},
    {"_vrpr_vrpr_problem_data_create",   (DL_FUNC) &_vrpr_vrpr_problem_data_create,   33},
    {"_vrpr_vrpr_problem_data_summary",  (DL_FUNC) &_vrpr_vrpr_problem_data_summary,   1},
    {"_vrpr_vrpr_rng_create",            (DL_FUNC) &_vrpr_vrpr_rng_create,             1},
    {"_vrpr_vrpr_solution_from_routes",  (DL_FUNC) &_vrpr_vrpr_solution_from_routes,   2},
    {"_vrpr_vrpr_solution_random",       (DL_FUNC) &_vrpr_vrpr_solution_random,        2},
    {"_vrpr_vrpr_solution_routes",       (DL_FUNC) &_vrpr_vrpr_solution_routes,        2},
    {"_vrpr_vrpr_solution_summary",      (DL_FUNC) &_vrpr_vrpr_solution_summary,       1},
    {NULL, NULL, 0}
};
}

extern "C" attribute_visible void R_init_vrpr(DllInfo* dll){
  R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
  R_useDynamicSymbols(dll, FALSE);
  R_forceSymbols(dll, TRUE);
}
