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

#include <Rcpp.h>
#include <RcppThread.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

// c_seglengths
NumericVector c_seglengths(const List& sl, const NumericVector& x, const NumericVector& y, const NumericVector& z);
RcppExport SEXP _natcpp_c_seglengths(SEXP slSEXP, SEXP xSEXP, SEXP ySEXP, SEXP zSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const List& >::type sl(slSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type z(zSEXP);
    rcpp_result_gen = Rcpp::wrap(c_seglengths(sl, x, y, z));
    return rcpp_result_gen;
END_RCPP
}
// c_total_cable
double c_total_cable(const List& sl, const NumericVector& x, const NumericVector& y, const NumericVector& z);
RcppExport SEXP _natcpp_c_total_cable(SEXP slSEXP, SEXP xSEXP, SEXP ySEXP, SEXP zSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const List& >::type sl(slSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type z(zSEXP);
    rcpp_result_gen = Rcpp::wrap(c_total_cable(sl, x, y, z));
    return rcpp_result_gen;
END_RCPP
}
// c_ijkpos
IntegerMatrix c_ijkpos(SEXP xyz, NumericVector origin, NumericVector voxdims, IntegerVector dims, bool clamp);
RcppExport SEXP _natcpp_c_ijkpos(SEXP xyzSEXP, SEXP originSEXP, SEXP voxdimsSEXP, SEXP dimsSEXP, SEXP clampSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type xyz(xyzSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type origin(originSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type voxdims(voxdimsSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type dims(dimsSEXP);
    Rcpp::traits::input_parameter< bool >::type clamp(clampSEXP);
    rcpp_result_gen = Rcpp::wrap(c_ijkpos(xyz, origin, voxdims, dims, clamp));
    return rcpp_result_gen;
END_RCPP
}
// c_sub2ind
NumericVector c_sub2ind(IntegerVector dims, IntegerMatrix indices);
RcppExport SEXP _natcpp_c_sub2ind(SEXP dimsSEXP, SEXP indicesSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< IntegerVector >::type dims(dimsSEXP);
    Rcpp::traits::input_parameter< IntegerMatrix >::type indices(indicesSEXP);
    rcpp_result_gen = Rcpp::wrap(c_sub2ind(dims, indices));
    return rcpp_result_gen;
END_RCPP
}
// c_coords21dindex
NumericVector c_coords21dindex(SEXP xyz, NumericVector origin, NumericVector voxdims, IntegerVector dims, bool clamp);
RcppExport SEXP _natcpp_c_coords21dindex(SEXP xyzSEXP, SEXP originSEXP, SEXP voxdimsSEXP, SEXP dimsSEXP, SEXP clampSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type xyz(xyzSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type origin(originSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type voxdims(voxdimsSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type dims(dimsSEXP);
    Rcpp::traits::input_parameter< bool >::type clamp(clampSEXP);
    rcpp_result_gen = Rcpp::wrap(c_coords21dindex(xyz, origin, voxdims, dims, clamp));
    return rcpp_result_gen;
END_RCPP
}
// c_ListofMatrixRows
List c_ListofMatrixRows(const SEXP& object);
RcppExport SEXP _natcpp_c_ListofMatrixRows(SEXP objectSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type object(objectSEXP);
    rcpp_result_gen = Rcpp::wrap(c_ListofMatrixRows(object));
    return rcpp_result_gen;
END_RCPP
}
// c_listlengths
IntegerVector c_listlengths(const List& L);
RcppExport SEXP _natcpp_c_listlengths(SEXP LSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const List& >::type L(LSEXP);
    rcpp_result_gen = Rcpp::wrap(c_listlengths(L));
    return rcpp_result_gen;
END_RCPP
}
// c_topntail
IntegerMatrix c_topntail(const List& L);
RcppExport SEXP _natcpp_c_topntail(SEXP LSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const List& >::type L(LSEXP);
    rcpp_result_gen = Rcpp::wrap(c_topntail(L));
    return rcpp_result_gen;
END_RCPP
}
// c_topntail_list
List c_topntail_list(const List& L);
RcppExport SEXP _natcpp_c_topntail_list(SEXP LSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const List& >::type L(LSEXP);
    rcpp_result_gen = Rcpp::wrap(c_topntail_list(L));
    return rcpp_result_gen;
END_RCPP
}
// c_EdgeListFromSegList
IntegerMatrix c_EdgeListFromSegList(const List& L);
RcppExport SEXP _natcpp_c_EdgeListFromSegList(SEXP LSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const List& >::type L(LSEXP);
    rcpp_result_gen = Rcpp::wrap(c_EdgeListFromSegList(L));
    return rcpp_result_gen;
END_RCPP
}
// weighted_jaccard_sparse_fill
NumericVector weighted_jaccard_sparse_fill(const S4& x, const S4& pattern, bool transpose, bool display_progress, int threads);
RcppExport SEXP _natcpp_weighted_jaccard_sparse_fill(SEXP xSEXP, SEXP patternSEXP, SEXP transposeSEXP, SEXP display_progressSEXP, SEXP threadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const S4& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const S4& >::type pattern(patternSEXP);
    Rcpp::traits::input_parameter< bool >::type transpose(transposeSEXP);
    Rcpp::traits::input_parameter< bool >::type display_progress(display_progressSEXP);
    Rcpp::traits::input_parameter< int >::type threads(threadsSEXP);
    rcpp_result_gen = Rcpp::wrap(weighted_jaccard_sparse_fill(x, pattern, transpose, display_progress, threads));
    return rcpp_result_gen;
END_RCPP
}
// c_weighted_jaccard_dense
SEXP c_weighted_jaccard_dense(const S4& x, bool transpose, int threads, bool triangle, bool distance);
RcppExport SEXP _natcpp_c_weighted_jaccard_dense(SEXP xSEXP, SEXP transposeSEXP, SEXP threadsSEXP, SEXP triangleSEXP, SEXP distanceSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const S4& >::type x(xSEXP);
    Rcpp::traits::input_parameter< bool >::type transpose(transposeSEXP);
    Rcpp::traits::input_parameter< int >::type threads(threadsSEXP);
    Rcpp::traits::input_parameter< bool >::type triangle(triangleSEXP);
    Rcpp::traits::input_parameter< bool >::type distance(distanceSEXP);
    rcpp_result_gen = Rcpp::wrap(c_weighted_jaccard_dense(x, transpose, threads, triangle, distance));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_natcpp_c_seglengths", (DL_FUNC) &_natcpp_c_seglengths, 4},
    {"_natcpp_c_total_cable", (DL_FUNC) &_natcpp_c_total_cable, 4},
    {"_natcpp_c_ijkpos", (DL_FUNC) &_natcpp_c_ijkpos, 5},
    {"_natcpp_c_sub2ind", (DL_FUNC) &_natcpp_c_sub2ind, 2},
    {"_natcpp_c_coords21dindex", (DL_FUNC) &_natcpp_c_coords21dindex, 5},
    {"_natcpp_c_ListofMatrixRows", (DL_FUNC) &_natcpp_c_ListofMatrixRows, 1},
    {"_natcpp_c_listlengths", (DL_FUNC) &_natcpp_c_listlengths, 1},
    {"_natcpp_c_topntail", (DL_FUNC) &_natcpp_c_topntail, 1},
    {"_natcpp_c_topntail_list", (DL_FUNC) &_natcpp_c_topntail_list, 1},
    {"_natcpp_c_EdgeListFromSegList", (DL_FUNC) &_natcpp_c_EdgeListFromSegList, 1},
    {"_natcpp_weighted_jaccard_sparse_fill", (DL_FUNC) &_natcpp_weighted_jaccard_sparse_fill, 5},
    {"_natcpp_c_weighted_jaccard_dense", (DL_FUNC) &_natcpp_c_weighted_jaccard_dense, 5},
    {NULL, NULL, 0}
};

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