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

#include <RcppArmadillo.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

// sorcering
List sorcering(const Nullable<NumericMatrix> A, const String& tsteps, const Nullable<NumericVector> C0, const Nullable<NumericVector> N0, const Nullable<SEXP*> Cin, const Nullable<SEXP*> Nin, const Nullable<List> Cin_wood, const Nullable<List> Nin_wood, const Nullable<NumericVector> wood_diam, const Nullable<SEXP*> xi, const Nullable<NumericMatrix> env_in, const Nullable<NumericVector> site, const Nullable<SEXP*> theta, const Nullable<NumericVector> theta_unc, const int theta_n_unc, const Nullable<NumericMatrix> meas_data, const Nullable<List> A_sl, const Nullable<List> C0_sl, const Nullable<List> N0_sl, const Nullable<List> Cin_sl, const Nullable<List> Nin_sl, const Nullable<List> Cin_wood_sl, const Nullable<List> Nin_wood_sl, const Nullable<List> wood_diam_sl, const Nullable<List> xi_sl, const Nullable<List> env_in_sl, const Nullable<List> site_sl, const Nullable<List> sitelist, const Nullable<List> meas_data_sl, const bool calcN, const bool calcNbalance, const bool calcN0, const bool calcC0, const bool calcCN_fast_init, const bool CTool_input_raw, const bool RothC_Cin4C0, const NumericVector& RothC_dpmrpm, const Nullable<NumericVector> C0_fracts, const bool multisite, const Nullable<IntegerVector> pooltypes, const int CN_fast_init, const int CN_bio, const Nullable<NumericVector> CN_spin, const Nullable<List> CN_fast_init_sl, const Nullable<List> CN_bio_sl, const Nullable<List> CN_spin_sl, const bool init_info, const String& model, const bool spinup, const int t_spin, const List t_spin_sl);
RcppExport SEXP _sorcering_sorcering(SEXP ASEXP, SEXP tstepsSEXP, SEXP C0SEXP, SEXP N0SEXP, SEXP CinSEXP, SEXP NinSEXP, SEXP Cin_woodSEXP, SEXP Nin_woodSEXP, SEXP wood_diamSEXP, SEXP xiSEXP, SEXP env_inSEXP, SEXP siteSEXP, SEXP thetaSEXP, SEXP theta_uncSEXP, SEXP theta_n_uncSEXP, SEXP meas_dataSEXP, SEXP A_slSEXP, SEXP C0_slSEXP, SEXP N0_slSEXP, SEXP Cin_slSEXP, SEXP Nin_slSEXP, SEXP Cin_wood_slSEXP, SEXP Nin_wood_slSEXP, SEXP wood_diam_slSEXP, SEXP xi_slSEXP, SEXP env_in_slSEXP, SEXP site_slSEXP, SEXP sitelistSEXP, SEXP meas_data_slSEXP, SEXP calcNSEXP, SEXP calcNbalanceSEXP, SEXP calcN0SEXP, SEXP calcC0SEXP, SEXP calcCN_fast_initSEXP, SEXP CTool_input_rawSEXP, SEXP RothC_Cin4C0SEXP, SEXP RothC_dpmrpmSEXP, SEXP C0_fractsSEXP, SEXP multisiteSEXP, SEXP pooltypesSEXP, SEXP CN_fast_initSEXP, SEXP CN_bioSEXP, SEXP CN_spinSEXP, SEXP CN_fast_init_slSEXP, SEXP CN_bio_slSEXP, SEXP CN_spin_slSEXP, SEXP init_infoSEXP, SEXP modelSEXP, SEXP spinupSEXP, SEXP t_spinSEXP, SEXP t_spin_slSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Nullable<NumericMatrix> >::type A(ASEXP);
    Rcpp::traits::input_parameter< const String& >::type tsteps(tstepsSEXP);
    Rcpp::traits::input_parameter< const Nullable<NumericVector> >::type C0(C0SEXP);
    Rcpp::traits::input_parameter< const Nullable<NumericVector> >::type N0(N0SEXP);
    Rcpp::traits::input_parameter< const Nullable<SEXP*> >::type Cin(CinSEXP);
    Rcpp::traits::input_parameter< const Nullable<SEXP*> >::type Nin(NinSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type Cin_wood(Cin_woodSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type Nin_wood(Nin_woodSEXP);
    Rcpp::traits::input_parameter< const Nullable<NumericVector> >::type wood_diam(wood_diamSEXP);
    Rcpp::traits::input_parameter< const Nullable<SEXP*> >::type xi(xiSEXP);
    Rcpp::traits::input_parameter< const Nullable<NumericMatrix> >::type env_in(env_inSEXP);
    Rcpp::traits::input_parameter< const Nullable<NumericVector> >::type site(siteSEXP);
    Rcpp::traits::input_parameter< const Nullable<SEXP*> >::type theta(thetaSEXP);
    Rcpp::traits::input_parameter< const Nullable<NumericVector> >::type theta_unc(theta_uncSEXP);
    Rcpp::traits::input_parameter< const int >::type theta_n_unc(theta_n_uncSEXP);
    Rcpp::traits::input_parameter< const Nullable<NumericMatrix> >::type meas_data(meas_dataSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type A_sl(A_slSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type C0_sl(C0_slSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type N0_sl(N0_slSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type Cin_sl(Cin_slSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type Nin_sl(Nin_slSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type Cin_wood_sl(Cin_wood_slSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type Nin_wood_sl(Nin_wood_slSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type wood_diam_sl(wood_diam_slSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type xi_sl(xi_slSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type env_in_sl(env_in_slSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type site_sl(site_slSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type sitelist(sitelistSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type meas_data_sl(meas_data_slSEXP);
    Rcpp::traits::input_parameter< const bool >::type calcN(calcNSEXP);
    Rcpp::traits::input_parameter< const bool >::type calcNbalance(calcNbalanceSEXP);
    Rcpp::traits::input_parameter< const bool >::type calcN0(calcN0SEXP);
    Rcpp::traits::input_parameter< const bool >::type calcC0(calcC0SEXP);
    Rcpp::traits::input_parameter< const bool >::type calcCN_fast_init(calcCN_fast_initSEXP);
    Rcpp::traits::input_parameter< const bool >::type CTool_input_raw(CTool_input_rawSEXP);
    Rcpp::traits::input_parameter< const bool >::type RothC_Cin4C0(RothC_Cin4C0SEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type RothC_dpmrpm(RothC_dpmrpmSEXP);
    Rcpp::traits::input_parameter< const Nullable<NumericVector> >::type C0_fracts(C0_fractsSEXP);
    Rcpp::traits::input_parameter< const bool >::type multisite(multisiteSEXP);
    Rcpp::traits::input_parameter< const Nullable<IntegerVector> >::type pooltypes(pooltypesSEXP);
    Rcpp::traits::input_parameter< const int >::type CN_fast_init(CN_fast_initSEXP);
    Rcpp::traits::input_parameter< const int >::type CN_bio(CN_bioSEXP);
    Rcpp::traits::input_parameter< const Nullable<NumericVector> >::type CN_spin(CN_spinSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type CN_fast_init_sl(CN_fast_init_slSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type CN_bio_sl(CN_bio_slSEXP);
    Rcpp::traits::input_parameter< const Nullable<List> >::type CN_spin_sl(CN_spin_slSEXP);
    Rcpp::traits::input_parameter< const bool >::type init_info(init_infoSEXP);
    Rcpp::traits::input_parameter< const String& >::type model(modelSEXP);
    Rcpp::traits::input_parameter< const bool >::type spinup(spinupSEXP);
    Rcpp::traits::input_parameter< const int >::type t_spin(t_spinSEXP);
    Rcpp::traits::input_parameter< const List >::type t_spin_sl(t_spin_slSEXP);
    rcpp_result_gen = Rcpp::wrap(sorcering(A, tsteps, C0, N0, Cin, Nin, Cin_wood, Nin_wood, wood_diam, xi, env_in, site, theta, theta_unc, theta_n_unc, meas_data, A_sl, C0_sl, N0_sl, Cin_sl, Nin_sl, Cin_wood_sl, Nin_wood_sl, wood_diam_sl, xi_sl, env_in_sl, site_sl, sitelist, meas_data_sl, calcN, calcNbalance, calcN0, calcC0, calcCN_fast_init, CTool_input_raw, RothC_Cin4C0, RothC_dpmrpm, C0_fracts, multisite, pooltypes, CN_fast_init, CN_bio, CN_spin, CN_fast_init_sl, CN_bio_sl, CN_spin_sl, init_info, model, spinup, t_spin, t_spin_sl));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_sorcering_sorcering", (DL_FUNC) &_sorcering_sorcering, 51},
    {NULL, NULL, 0}
};

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