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

#include <RcppEigen.h>
#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

// cpp_eems
void cpp_eems(const Rcpp::List p);
RcppExport SEXP _reems_cpp_eems(SEXP pSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List >::type p(pSEXP);
    cpp_eems(p);
    return R_NilValue;
END_RCPP
}
// cpp_write_grid
void cpp_write_grid(const std::string& datapath, const std::string& mcmcpath, const int nDemes);
RcppExport SEXP _reems_cpp_write_grid(SEXP datapathSEXP, SEXP mcmcpathSEXP, SEXP nDemesSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const std::string& >::type datapath(datapathSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type mcmcpath(mcmcpathSEXP);
    Rcpp::traits::input_parameter< const int >::type nDemes(nDemesSEXP);
    cpp_write_grid(datapath, mcmcpath, nDemes);
    return R_NilValue;
END_RCPP
}
// tiles2contours_standardize
Rcpp::List tiles2contours_standardize(const Eigen::VectorXd& tiles, const Eigen::VectorXd& rates, const Eigen::MatrixXd& seeds, const Eigen::MatrixXd& marks, const std::string& distm);
RcppExport SEXP _reems_tiles2contours_standardize(SEXP tilesSEXP, SEXP ratesSEXP, SEXP seedsSEXP, SEXP marksSEXP, SEXP distmSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Eigen::VectorXd& >::type tiles(tilesSEXP);
    Rcpp::traits::input_parameter< const Eigen::VectorXd& >::type rates(ratesSEXP);
    Rcpp::traits::input_parameter< const Eigen::MatrixXd& >::type seeds(seedsSEXP);
    Rcpp::traits::input_parameter< const Eigen::MatrixXd& >::type marks(marksSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type distm(distmSEXP);
    rcpp_result_gen = Rcpp::wrap(tiles2contours_standardize(tiles, rates, seeds, marks, distm));
    return rcpp_result_gen;
END_RCPP
}
// tiles2contours
Rcpp::List tiles2contours(const Eigen::VectorXd& tiles, const Eigen::VectorXd& rates, const Eigen::MatrixXd& seeds, const Eigen::MatrixXd& marks, const std::string& distm);
RcppExport SEXP _reems_tiles2contours(SEXP tilesSEXP, SEXP ratesSEXP, SEXP seedsSEXP, SEXP marksSEXP, SEXP distmSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Eigen::VectorXd& >::type tiles(tilesSEXP);
    Rcpp::traits::input_parameter< const Eigen::VectorXd& >::type rates(ratesSEXP);
    Rcpp::traits::input_parameter< const Eigen::MatrixXd& >::type seeds(seedsSEXP);
    Rcpp::traits::input_parameter< const Eigen::MatrixXd& >::type marks(marksSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type distm(distmSEXP);
    rcpp_result_gen = Rcpp::wrap(tiles2contours(tiles, rates, seeds, marks, distm));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_reems_cpp_eems", (DL_FUNC) &_reems_cpp_eems, 1},
    {"_reems_cpp_write_grid", (DL_FUNC) &_reems_cpp_write_grid, 3},
    {"_reems_tiles2contours_standardize", (DL_FUNC) &_reems_tiles2contours_standardize, 5},
    {"_reems_tiles2contours", (DL_FUNC) &_reems_tiles2contours, 5},
    {NULL, NULL, 0}
};

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