// 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

// mc_treespatial_cpp
List mc_treespatial_cpp(NumericMatrix full_cases, NumericVector Cg, double N, IntegerVector zone_region_idx, IntegerVector zone_ptr, NumericVector zone_pop, IntegerVector leaf_tree_idx, IntegerVector children_idx, IntegerVector children_ptr, IntegerVector proc_order, NumericVector prob, int nsim, int model, int n_cores);
RcppExport SEXP _treeSS_mc_treespatial_cpp(SEXP full_casesSEXP, SEXP CgSEXP, SEXP NSEXP, SEXP zone_region_idxSEXP, SEXP zone_ptrSEXP, SEXP zone_popSEXP, SEXP leaf_tree_idxSEXP, SEXP children_idxSEXP, SEXP children_ptrSEXP, SEXP proc_orderSEXP, SEXP probSEXP, SEXP nsimSEXP, SEXP modelSEXP, SEXP n_coresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type full_cases(full_casesSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Cg(CgSEXP);
    Rcpp::traits::input_parameter< double >::type N(NSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type zone_region_idx(zone_region_idxSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type zone_ptr(zone_ptrSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type zone_pop(zone_popSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type leaf_tree_idx(leaf_tree_idxSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type children_idx(children_idxSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type children_ptr(children_ptrSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type proc_order(proc_orderSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type prob(probSEXP);
    Rcpp::traits::input_parameter< int >::type nsim(nsimSEXP);
    Rcpp::traits::input_parameter< int >::type model(modelSEXP);
    Rcpp::traits::input_parameter< int >::type n_cores(n_coresSEXP);
    rcpp_result_gen = Rcpp::wrap(mc_treespatial_cpp(full_cases, Cg, N, zone_region_idx, zone_ptr, zone_pop, leaf_tree_idx, children_idx, children_ptr, proc_order, prob, nsim, model, n_cores));
    return rcpp_result_gen;
END_RCPP
}
// mc_spatial_cpp
List mc_spatial_cpp(NumericVector cases, double N, double C, IntegerVector zone_region_idx, IntegerVector zone_ptr, NumericVector zone_pop, NumericVector prob, int nsim, int model, int n_cores);
RcppExport SEXP _treeSS_mc_spatial_cpp(SEXP casesSEXP, SEXP NSEXP, SEXP CSEXP, SEXP zone_region_idxSEXP, SEXP zone_ptrSEXP, SEXP zone_popSEXP, SEXP probSEXP, SEXP nsimSEXP, SEXP modelSEXP, SEXP n_coresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type cases(casesSEXP);
    Rcpp::traits::input_parameter< double >::type N(NSEXP);
    Rcpp::traits::input_parameter< double >::type C(CSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type zone_region_idx(zone_region_idxSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type zone_ptr(zone_ptrSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type zone_pop(zone_popSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type prob(probSEXP);
    Rcpp::traits::input_parameter< int >::type nsim(nsimSEXP);
    Rcpp::traits::input_parameter< int >::type model(modelSEXP);
    Rcpp::traits::input_parameter< int >::type n_cores(n_coresSEXP);
    rcpp_result_gen = Rcpp::wrap(mc_spatial_cpp(cases, N, C, zone_region_idx, zone_ptr, zone_pop, prob, nsim, model, n_cores));
    return rcpp_result_gen;
END_RCPP
}
// mc_treescan_cpp
List mc_treescan_cpp(NumericVector node_cases, NumericVector node_pop, double C, double N, IntegerVector leaf_tree_idx, NumericVector leaf_pop, IntegerVector children_idx, IntegerVector children_ptr, IntegerVector proc_order, int nsim, int model, int n_cores);
RcppExport SEXP _treeSS_mc_treescan_cpp(SEXP node_casesSEXP, SEXP node_popSEXP, SEXP CSEXP, SEXP NSEXP, SEXP leaf_tree_idxSEXP, SEXP leaf_popSEXP, SEXP children_idxSEXP, SEXP children_ptrSEXP, SEXP proc_orderSEXP, SEXP nsimSEXP, SEXP modelSEXP, SEXP n_coresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type node_cases(node_casesSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type node_pop(node_popSEXP);
    Rcpp::traits::input_parameter< double >::type C(CSEXP);
    Rcpp::traits::input_parameter< double >::type N(NSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type leaf_tree_idx(leaf_tree_idxSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type leaf_pop(leaf_popSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type children_idx(children_idxSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type children_ptr(children_ptrSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type proc_order(proc_orderSEXP);
    Rcpp::traits::input_parameter< int >::type nsim(nsimSEXP);
    Rcpp::traits::input_parameter< int >::type model(modelSEXP);
    Rcpp::traits::input_parameter< int >::type n_cores(n_coresSEXP);
    rcpp_result_gen = Rcpp::wrap(mc_treescan_cpp(node_cases, node_pop, C, N, leaf_tree_idx, leaf_pop, children_idx, children_ptr, proc_order, nsim, model, n_cores));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_treeSS_mc_treespatial_cpp", (DL_FUNC) &_treeSS_mc_treespatial_cpp, 14},
    {"_treeSS_mc_spatial_cpp", (DL_FUNC) &_treeSS_mc_spatial_cpp, 10},
    {"_treeSS_mc_treescan_cpp", (DL_FUNC) &_treeSS_mc_treescan_cpp, 12},
    {NULL, NULL, 0}
};

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