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

// engine1_2dConv
NumericMatrix engine1_2dConv(NumericMatrix data, NumericMatrix kernel, bool na_only);
RcppExport SEXP _imagine_engine1_2dConv(SEXP dataSEXP, SEXP kernelSEXP, SEXP na_onlySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type data(dataSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type kernel(kernelSEXP);
    Rcpp::traits::input_parameter< bool >::type na_only(na_onlySEXP);
    rcpp_result_gen = Rcpp::wrap(engine1_2dConv(data, kernel, na_only));
    return rcpp_result_gen;
END_RCPP
}
// engine6_agenbag1
NumericMatrix engine6_agenbag1(NumericMatrix data);
RcppExport SEXP _imagine_engine6_agenbag1(SEXP dataSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type data(dataSEXP);
    rcpp_result_gen = Rcpp::wrap(engine6_agenbag1(data));
    return rcpp_result_gen;
END_RCPP
}
// engine7_agenbag2
NumericMatrix engine7_agenbag2(arma::mat data, int threshold);
RcppExport SEXP _imagine_engine7_agenbag2(SEXP dataSEXP, SEXP thresholdSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< arma::mat >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type threshold(thresholdSEXP);
    rcpp_result_gen = Rcpp::wrap(engine7_agenbag2(data, threshold));
    return rcpp_result_gen;
END_RCPP
}
// engine5_CMF
NumericMatrix engine5_CMF(NumericMatrix data, int i_size, int o_size);
RcppExport SEXP _imagine_engine5_CMF(SEXP dataSEXP, SEXP i_sizeSEXP, SEXP o_sizeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type i_size(i_sizeSEXP);
    Rcpp::traits::input_parameter< int >::type o_size(o_sizeSEXP);
    rcpp_result_gen = Rcpp::wrap(engine5_CMF(data, i_size, o_size));
    return rcpp_result_gen;
END_RCPP
}
// engine2_convWithQuantiles
NumericMatrix engine2_convWithQuantiles(arma::mat data, arma::mat kernel, arma::vec probs, bool na_only);
RcppExport SEXP _imagine_engine2_convWithQuantiles(SEXP dataSEXP, SEXP kernelSEXP, SEXP probsSEXP, SEXP na_onlySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< arma::mat >::type data(dataSEXP);
    Rcpp::traits::input_parameter< arma::mat >::type kernel(kernelSEXP);
    Rcpp::traits::input_parameter< arma::vec >::type probs(probsSEXP);
    Rcpp::traits::input_parameter< bool >::type na_only(na_onlySEXP);
    rcpp_result_gen = Rcpp::wrap(engine2_convWithQuantiles(data, kernel, probs, na_only));
    return rcpp_result_gen;
END_RCPP
}
// engine3_meanFilter
NumericMatrix engine3_meanFilter(NumericMatrix data, NumericVector radius, bool na_only);
RcppExport SEXP _imagine_engine3_meanFilter(SEXP dataSEXP, SEXP radiusSEXP, SEXP na_onlySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type data(dataSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type radius(radiusSEXP);
    Rcpp::traits::input_parameter< bool >::type na_only(na_onlySEXP);
    rcpp_result_gen = Rcpp::wrap(engine3_meanFilter(data, radius, na_only));
    return rcpp_result_gen;
END_RCPP
}
// engine4_quantileFilter
NumericMatrix engine4_quantileFilter(arma::mat data, NumericVector radius, arma::vec probs, bool na_only);
RcppExport SEXP _imagine_engine4_quantileFilter(SEXP dataSEXP, SEXP radiusSEXP, SEXP probsSEXP, SEXP na_onlySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< arma::mat >::type data(dataSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type radius(radiusSEXP);
    Rcpp::traits::input_parameter< arma::vec >::type probs(probsSEXP);
    Rcpp::traits::input_parameter< bool >::type na_only(na_onlySEXP);
    rcpp_result_gen = Rcpp::wrap(engine4_quantileFilter(data, radius, probs, na_only));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_imagine_engine1_2dConv", (DL_FUNC) &_imagine_engine1_2dConv, 3},
    {"_imagine_engine6_agenbag1", (DL_FUNC) &_imagine_engine6_agenbag1, 1},
    {"_imagine_engine7_agenbag2", (DL_FUNC) &_imagine_engine7_agenbag2, 2},
    {"_imagine_engine5_CMF", (DL_FUNC) &_imagine_engine5_CMF, 3},
    {"_imagine_engine2_convWithQuantiles", (DL_FUNC) &_imagine_engine2_convWithQuantiles, 4},
    {"_imagine_engine3_meanFilter", (DL_FUNC) &_imagine_engine3_meanFilter, 3},
    {"_imagine_engine4_quantileFilter", (DL_FUNC) &_imagine_engine4_quantileFilter, 4},
    {NULL, NULL, 0}
};

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