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

// mcpp_rf_sample
IntegerVector mcpp_rf_sample(int populationSize, int sampleSize, bool useWeights, bool withReplacement, Nullable<NumericVector> weights);
RcppExport SEXP _MosaiClusteR_mcpp_rf_sample(SEXP populationSizeSEXP, SEXP sampleSizeSEXP, SEXP useWeightsSEXP, SEXP withReplacementSEXP, SEXP weightsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type populationSize(populationSizeSEXP);
    Rcpp::traits::input_parameter< int >::type sampleSize(sampleSizeSEXP);
    Rcpp::traits::input_parameter< bool >::type useWeights(useWeightsSEXP);
    Rcpp::traits::input_parameter< bool >::type withReplacement(withReplacementSEXP);
    Rcpp::traits::input_parameter< Nullable<NumericVector> >::type weights(weightsSEXP);
    rcpp_result_gen = Rcpp::wrap(mcpp_rf_sample(populationSize, sampleSize, useWeights, withReplacement, weights));
    return rcpp_result_gen;
END_RCPP
}
// mcpp_sample_weighted_no_replace
IntegerVector mcpp_sample_weighted_no_replace(NumericVector z, int ng);
RcppExport SEXP _MosaiClusteR_mcpp_sample_weighted_no_replace(SEXP zSEXP, SEXP ngSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type z(zSEXP);
    Rcpp::traits::input_parameter< int >::type ng(ngSEXP);
    rcpp_result_gen = Rcpp::wrap(mcpp_sample_weighted_no_replace(z, ng));
    return rcpp_result_gen;
END_RCPP
}
// count_coclustering_cpp
List count_coclustering_cpp(IntegerMatrix res);
RcppExport SEXP _MosaiClusteR_count_coclustering_cpp(SEXP resSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< IntegerMatrix >::type res(resSEXP);
    rcpp_result_gen = Rcpp::wrap(count_coclustering_cpp(res));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_MosaiClusteR_mcpp_rf_sample", (DL_FUNC) &_MosaiClusteR_mcpp_rf_sample, 5},
    {"_MosaiClusteR_mcpp_sample_weighted_no_replace", (DL_FUNC) &_MosaiClusteR_mcpp_sample_weighted_no_replace, 2},
    {"_MosaiClusteR_count_coclustering_cpp", (DL_FUNC) &_MosaiClusteR_count_coclustering_cpp, 1},
    {NULL, NULL, 0}
};

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