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

#include "kohonen_types.h"
#include <Rcpp.h>

using namespace Rcpp;

// CreateStdDistancePointers
Rcpp::ExpressionVector CreateStdDistancePointers(const Rcpp::IntegerVector& types, bool considerNaNs);
RcppExport SEXP _kohonen_CreateStdDistancePointers(SEXP typesSEXP, SEXP considerNaNsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type types(typesSEXP);
    Rcpp::traits::input_parameter< bool >::type considerNaNs(considerNaNsSEXP);
    rcpp_result_gen = Rcpp::wrap(CreateStdDistancePointers(types, considerNaNs));
    return rcpp_result_gen;
END_RCPP
}
// CreateStdDistancePointer
Rcpp::XPtr<DistanceFunctionPtr> CreateStdDistancePointer(int type, bool considerNaNs);
RcppExport SEXP _kohonen_CreateStdDistancePointer(SEXP typeSEXP, SEXP considerNaNsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type type(typeSEXP);
    Rcpp::traits::input_parameter< bool >::type considerNaNs(considerNaNsSEXP);
    rcpp_result_gen = Rcpp::wrap(CreateStdDistancePointer(type, considerNaNs));
    return rcpp_result_gen;
END_RCPP
}
// ObjectDistances
Rcpp::NumericVector ObjectDistances(Rcpp::NumericMatrix data, Rcpp::IntegerVector numVars, Rcpp::IntegerMatrix numNAs, Rcpp::ExpressionVector distanceFunctions, Rcpp::NumericVector weights);
RcppExport SEXP _kohonen_ObjectDistances(SEXP dataSEXP, SEXP numVarsSEXP, SEXP numNAsSEXP, SEXP distanceFunctionsSEXP, SEXP weightsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type data(dataSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type numVars(numVarsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerMatrix >::type numNAs(numNAsSEXP);
    Rcpp::traits::input_parameter< Rcpp::ExpressionVector >::type distanceFunctions(distanceFunctionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type weights(weightsSEXP);
    rcpp_result_gen = Rcpp::wrap(ObjectDistances(data, numVars, numNAs, distanceFunctions, weights));
    return rcpp_result_gen;
END_RCPP
}
// LayerDistances
Rcpp::NumericVector LayerDistances(Rcpp::NumericMatrix data, Rcpp::NumericMatrix codes, Rcpp::IntegerVector uclassif, Rcpp::IntegerVector numVars, Rcpp::IntegerMatrix numNAs, Rcpp::ExpressionVector distanceFunctions, Rcpp::NumericVector weights);
RcppExport SEXP _kohonen_LayerDistances(SEXP dataSEXP, SEXP codesSEXP, SEXP uclassifSEXP, SEXP numVarsSEXP, SEXP numNAsSEXP, SEXP distanceFunctionsSEXP, SEXP weightsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type data(dataSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type codes(codesSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type uclassif(uclassifSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type numVars(numVarsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerMatrix >::type numNAs(numNAsSEXP);
    Rcpp::traits::input_parameter< Rcpp::ExpressionVector >::type distanceFunctions(distanceFunctionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type weights(weightsSEXP);
    rcpp_result_gen = Rcpp::wrap(LayerDistances(data, codes, uclassif, numVars, numNAs, distanceFunctions, weights));
    return rcpp_result_gen;
END_RCPP
}
// RcppSupersom
Rcpp::List RcppSupersom(Rcpp::NumericMatrix data, Rcpp::NumericMatrix codes, Rcpp::IntegerVector numVars, Rcpp::NumericVector weights, Rcpp::ExpressionVector distanceFunctions, Rcpp::IntegerMatrix numNAs, Rcpp::NumericMatrix neighbourhoodDistances, int neighbourhoodFct, Rcpp::NumericVector alphas, Rcpp::NumericVector radii, int numEpochs);
RcppExport SEXP _kohonen_RcppSupersom(SEXP dataSEXP, SEXP codesSEXP, SEXP numVarsSEXP, SEXP weightsSEXP, SEXP distanceFunctionsSEXP, SEXP numNAsSEXP, SEXP neighbourhoodDistancesSEXP, SEXP neighbourhoodFctSEXP, SEXP alphasSEXP, SEXP radiiSEXP, SEXP numEpochsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type data(dataSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type codes(codesSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type numVars(numVarsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type weights(weightsSEXP);
    Rcpp::traits::input_parameter< Rcpp::ExpressionVector >::type distanceFunctions(distanceFunctionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerMatrix >::type numNAs(numNAsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type neighbourhoodDistances(neighbourhoodDistancesSEXP);
    Rcpp::traits::input_parameter< int >::type neighbourhoodFct(neighbourhoodFctSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type alphas(alphasSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type radii(radiiSEXP);
    Rcpp::traits::input_parameter< int >::type numEpochs(numEpochsSEXP);
    rcpp_result_gen = Rcpp::wrap(RcppSupersom(data, codes, numVars, weights, distanceFunctions, numNAs, neighbourhoodDistances, neighbourhoodFct, alphas, radii, numEpochs));
    return rcpp_result_gen;
END_RCPP
}
// RcppBatchSupersom
Rcpp::List RcppBatchSupersom(Rcpp::NumericMatrix data, Rcpp::NumericMatrix codes, Rcpp::IntegerVector numVars, Rcpp::NumericVector weights, Rcpp::ExpressionVector distanceFunctions, Rcpp::IntegerMatrix numNAs, Rcpp::NumericMatrix neighbourhoodDistances, int neighbourhoodFct, Rcpp::NumericVector radii, int numEpochs);
RcppExport SEXP _kohonen_RcppBatchSupersom(SEXP dataSEXP, SEXP codesSEXP, SEXP numVarsSEXP, SEXP weightsSEXP, SEXP distanceFunctionsSEXP, SEXP numNAsSEXP, SEXP neighbourhoodDistancesSEXP, SEXP neighbourhoodFctSEXP, SEXP radiiSEXP, SEXP numEpochsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type data(dataSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type codes(codesSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type numVars(numVarsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type weights(weightsSEXP);
    Rcpp::traits::input_parameter< Rcpp::ExpressionVector >::type distanceFunctions(distanceFunctionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerMatrix >::type numNAs(numNAsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type neighbourhoodDistances(neighbourhoodDistancesSEXP);
    Rcpp::traits::input_parameter< int >::type neighbourhoodFct(neighbourhoodFctSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type radii(radiiSEXP);
    Rcpp::traits::input_parameter< int >::type numEpochs(numEpochsSEXP);
    rcpp_result_gen = Rcpp::wrap(RcppBatchSupersom(data, codes, numVars, weights, distanceFunctions, numNAs, neighbourhoodDistances, neighbourhoodFct, radii, numEpochs));
    return rcpp_result_gen;
END_RCPP
}
// RcppParallelBatchSupersom
Rcpp::List RcppParallelBatchSupersom(Rcpp::NumericMatrix data, Rcpp::NumericMatrix codes, Rcpp::IntegerVector numVars, Rcpp::NumericVector weights, Rcpp::ExpressionVector distanceFunctions, Rcpp::IntegerMatrix numNAs, Rcpp::NumericMatrix neighbourhoodDistances, int neighbourhoodFct, Rcpp::NumericVector radii, int numEpochs, int numCores);
RcppExport SEXP _kohonen_RcppParallelBatchSupersom(SEXP dataSEXP, SEXP codesSEXP, SEXP numVarsSEXP, SEXP weightsSEXP, SEXP distanceFunctionsSEXP, SEXP numNAsSEXP, SEXP neighbourhoodDistancesSEXP, SEXP neighbourhoodFctSEXP, SEXP radiiSEXP, SEXP numEpochsSEXP, SEXP numCoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type data(dataSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type codes(codesSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type numVars(numVarsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type weights(weightsSEXP);
    Rcpp::traits::input_parameter< Rcpp::ExpressionVector >::type distanceFunctions(distanceFunctionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerMatrix >::type numNAs(numNAsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type neighbourhoodDistances(neighbourhoodDistancesSEXP);
    Rcpp::traits::input_parameter< int >::type neighbourhoodFct(neighbourhoodFctSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type radii(radiiSEXP);
    Rcpp::traits::input_parameter< int >::type numEpochs(numEpochsSEXP);
    Rcpp::traits::input_parameter< int >::type numCores(numCoresSEXP);
    rcpp_result_gen = Rcpp::wrap(RcppParallelBatchSupersom(data, codes, numVars, weights, distanceFunctions, numNAs, neighbourhoodDistances, neighbourhoodFct, radii, numEpochs, numCores));
    return rcpp_result_gen;
END_RCPP
}
// RcppMap
Rcpp::List RcppMap(Rcpp::NumericMatrix data, /* objects to be mapped */     Rcpp::IntegerVector numVars, Rcpp::IntegerMatrix numNAs, Rcpp::NumericMatrix codes, Rcpp::NumericVector weights, Rcpp::ExpressionVector distanceFunctions);
RcppExport SEXP _kohonen_RcppMap(SEXP dataSEXP, SEXP numVarsSEXP, SEXP numNAsSEXP, SEXP codesSEXP, SEXP weightsSEXP, SEXP distanceFunctionsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type data(dataSEXP);
    Rcpp::traits::input_parameter< /* objects to be mapped */     Rcpp::IntegerVector >::type numVars(numVarsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerMatrix >::type numNAs(numNAsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type codes(codesSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type weights(weightsSEXP);
    Rcpp::traits::input_parameter< Rcpp::ExpressionVector >::type distanceFunctions(distanceFunctionsSEXP);
    rcpp_result_gen = Rcpp::wrap(RcppMap(data, numVars, numNAs, codes, weights, distanceFunctions));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_kohonen_CreateStdDistancePointers", (DL_FUNC) &_kohonen_CreateStdDistancePointers, 2},
    {"_kohonen_CreateStdDistancePointer", (DL_FUNC) &_kohonen_CreateStdDistancePointer, 2},
    {"_kohonen_ObjectDistances", (DL_FUNC) &_kohonen_ObjectDistances, 5},
    {"_kohonen_LayerDistances", (DL_FUNC) &_kohonen_LayerDistances, 7},
    {"_kohonen_RcppSupersom", (DL_FUNC) &_kohonen_RcppSupersom, 11},
    {"_kohonen_RcppBatchSupersom", (DL_FUNC) &_kohonen_RcppBatchSupersom, 10},
    {"_kohonen_RcppParallelBatchSupersom", (DL_FUNC) &_kohonen_RcppParallelBatchSupersom, 11},
    {"_kohonen_RcppMap", (DL_FUNC) &_kohonen_RcppMap, 6},
    {NULL, NULL, 0}
};

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