// Generated by using Rcpp::compileAttributes() -> do not edit by hand
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

#include <Rcpp.h>

using namespace Rcpp;

#ifdef RCPP_USE_GLOBAL_ROSTREAM
Rcpp::Rostream<true>&  Rcpp::Rcout = Rcpp::Rcpp_cout_get();
Rcpp::Rostream<false>& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get();
#endif

// Romp_set_num_threads
int Romp_set_num_threads(int n_threads);
RcppExport SEXP _quitefastmst_Romp_set_num_threads(SEXP n_threadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type n_threads(n_threadsSEXP);
    rcpp_result_gen = Rcpp::wrap(Romp_set_num_threads(n_threads));
    return rcpp_result_gen;
END_RCPP
}
// Romp_get_max_threads
int Romp_get_max_threads();
RcppExport SEXP _quitefastmst_Romp_get_max_threads() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    rcpp_result_gen = Rcpp::wrap(Romp_get_max_threads());
    return rcpp_result_gen;
END_RCPP
}
// knn_euclid
List knn_euclid(SEXP X, int k, SEXP Y, Rcpp::String algorithm, int max_leaf_size, bool squared, bool verbose);
RcppExport SEXP _quitefastmst_knn_euclid(SEXP XSEXP, SEXP kSEXP, SEXP YSEXP, SEXP algorithmSEXP, SEXP max_leaf_sizeSEXP, SEXP squaredSEXP, SEXP verboseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type X(XSEXP);
    Rcpp::traits::input_parameter< int >::type k(kSEXP);
    Rcpp::traits::input_parameter< SEXP >::type Y(YSEXP);
    Rcpp::traits::input_parameter< Rcpp::String >::type algorithm(algorithmSEXP);
    Rcpp::traits::input_parameter< int >::type max_leaf_size(max_leaf_sizeSEXP);
    Rcpp::traits::input_parameter< bool >::type squared(squaredSEXP);
    Rcpp::traits::input_parameter< bool >::type verbose(verboseSEXP);
    rcpp_result_gen = Rcpp::wrap(knn_euclid(X, k, Y, algorithm, max_leaf_size, squared, verbose));
    return rcpp_result_gen;
END_RCPP
}
// mst_euclid
List mst_euclid(SEXP X, int M, Rcpp::String algorithm, int max_leaf_size, int first_pass_max_brute_size, Rcpp::String mutreach_ties, Rcpp::String mutreach_leaves, bool verbose);
RcppExport SEXP _quitefastmst_mst_euclid(SEXP XSEXP, SEXP MSEXP, SEXP algorithmSEXP, SEXP max_leaf_sizeSEXP, SEXP first_pass_max_brute_sizeSEXP, SEXP mutreach_tiesSEXP, SEXP mutreach_leavesSEXP, SEXP verboseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type X(XSEXP);
    Rcpp::traits::input_parameter< int >::type M(MSEXP);
    Rcpp::traits::input_parameter< Rcpp::String >::type algorithm(algorithmSEXP);
    Rcpp::traits::input_parameter< int >::type max_leaf_size(max_leaf_sizeSEXP);
    Rcpp::traits::input_parameter< int >::type first_pass_max_brute_size(first_pass_max_brute_sizeSEXP);
    Rcpp::traits::input_parameter< Rcpp::String >::type mutreach_ties(mutreach_tiesSEXP);
    Rcpp::traits::input_parameter< Rcpp::String >::type mutreach_leaves(mutreach_leavesSEXP);
    Rcpp::traits::input_parameter< bool >::type verbose(verboseSEXP);
    rcpp_result_gen = Rcpp::wrap(mst_euclid(X, M, algorithm, max_leaf_size, first_pass_max_brute_size, mutreach_ties, mutreach_leaves, verbose));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_quitefastmst_Romp_set_num_threads", (DL_FUNC) &_quitefastmst_Romp_set_num_threads, 1},
    {"_quitefastmst_Romp_get_max_threads", (DL_FUNC) &_quitefastmst_Romp_get_max_threads, 0},
    {"_quitefastmst_knn_euclid", (DL_FUNC) &_quitefastmst_knn_euclid, 7},
    {"_quitefastmst_mst_euclid", (DL_FUNC) &_quitefastmst_mst_euclid, 8},
    {NULL, NULL, 0}
};

RcppExport void R_init_quitefastmst(DllInfo *dll) {
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
}
