// Generated by cpp11: do not edit by hand
// clang-format off


#include "cpp11/declarations.hpp"
#include <R_ext/Visibility.h>

// bSpline.cpp
cpp11::writable::doubles_matrix<> splinePath(cpp11::doubles x, cpp11::doubles y, int degree, cpp11::doubles knots, int detail, cpp11::strings type);
extern "C" SEXP _ggforce_splinePath(SEXP x, SEXP y, SEXP degree, SEXP knots, SEXP detail, SEXP type) {
  BEGIN_CPP11
    return cpp11::as_sexp(splinePath(cpp11::as_cpp<cpp11::decay_t<cpp11::doubles>>(x), cpp11::as_cpp<cpp11::decay_t<cpp11::doubles>>(y), cpp11::as_cpp<cpp11::decay_t<int>>(degree), cpp11::as_cpp<cpp11::decay_t<cpp11::doubles>>(knots), cpp11::as_cpp<cpp11::decay_t<int>>(detail), cpp11::as_cpp<cpp11::decay_t<cpp11::strings>>(type)));
  END_CPP11
}
// bSpline.cpp
cpp11::writable::list getSplines(cpp11::doubles x, cpp11::doubles y, cpp11::integers id, int detail, cpp11::strings type);
extern "C" SEXP _ggforce_getSplines(SEXP x, SEXP y, SEXP id, SEXP detail, SEXP type) {
  BEGIN_CPP11
    return cpp11::as_sexp(getSplines(cpp11::as_cpp<cpp11::decay_t<cpp11::doubles>>(x), cpp11::as_cpp<cpp11::decay_t<cpp11::doubles>>(y), cpp11::as_cpp<cpp11::decay_t<cpp11::integers>>(id), cpp11::as_cpp<cpp11::decay_t<int>>(detail), cpp11::as_cpp<cpp11::decay_t<cpp11::strings>>(type)));
  END_CPP11
}
// bezier.cpp
cpp11::writable::doubles_matrix<> bezierPath(const cpp11::doubles& x, const cpp11::doubles& y, int detail);
extern "C" SEXP _ggforce_bezierPath(SEXP x, SEXP y, SEXP detail) {
  BEGIN_CPP11
    return cpp11::as_sexp(bezierPath(cpp11::as_cpp<cpp11::decay_t<const cpp11::doubles&>>(x), cpp11::as_cpp<cpp11::decay_t<const cpp11::doubles&>>(y), cpp11::as_cpp<cpp11::decay_t<int>>(detail)));
  END_CPP11
}
// bezier.cpp
cpp11::writable::list getBeziers(const cpp11::doubles& x, const cpp11::doubles& y, const cpp11::integers& id, int detail);
extern "C" SEXP _ggforce_getBeziers(SEXP x, SEXP y, SEXP id, SEXP detail) {
  BEGIN_CPP11
    return cpp11::as_sexp(getBeziers(cpp11::as_cpp<cpp11::decay_t<const cpp11::doubles&>>(x), cpp11::as_cpp<cpp11::decay_t<const cpp11::doubles&>>(y), cpp11::as_cpp<cpp11::decay_t<const cpp11::integers&>>(id), cpp11::as_cpp<cpp11::decay_t<int>>(detail)));
  END_CPP11
}
// concaveman.cpp
cpp11::writable::doubles_matrix<> concaveman_c(cpp11::doubles_matrix<> p, cpp11::integers h, double concavity, double threshold);
extern "C" SEXP _ggforce_concaveman_c(SEXP p, SEXP h, SEXP concavity, SEXP threshold) {
  BEGIN_CPP11
    return cpp11::as_sexp(concaveman_c(cpp11::as_cpp<cpp11::decay_t<cpp11::doubles_matrix<>>>(p), cpp11::as_cpp<cpp11::decay_t<cpp11::integers>>(h), cpp11::as_cpp<cpp11::decay_t<double>>(concavity), cpp11::as_cpp<cpp11::decay_t<double>>(threshold)));
  END_CPP11
}
// ellipseEnclose.cpp
cpp11::writable::data_frame enclose_ellip_points(cpp11::doubles x, cpp11::doubles y, cpp11::integers id, double tol);
extern "C" SEXP _ggforce_enclose_ellip_points(SEXP x, SEXP y, SEXP id, SEXP tol) {
  BEGIN_CPP11
    return cpp11::as_sexp(enclose_ellip_points(cpp11::as_cpp<cpp11::decay_t<cpp11::doubles>>(x), cpp11::as_cpp<cpp11::decay_t<cpp11::doubles>>(y), cpp11::as_cpp<cpp11::decay_t<cpp11::integers>>(id), cpp11::as_cpp<cpp11::decay_t<double>>(tol)));
  END_CPP11
}
// enclose.cpp
cpp11::writable::data_frame enclose_points(cpp11::doubles x, cpp11::doubles y, cpp11::integers id);
extern "C" SEXP _ggforce_enclose_points(SEXP x, SEXP y, SEXP id) {
  BEGIN_CPP11
    return cpp11::as_sexp(enclose_points(cpp11::as_cpp<cpp11::decay_t<cpp11::doubles>>(x), cpp11::as_cpp<cpp11::decay_t<cpp11::doubles>>(y), cpp11::as_cpp<cpp11::decay_t<cpp11::integers>>(id)));
  END_CPP11
}
// pointPath.cpp
cpp11::writable::list points_to_path(cpp11::doubles_matrix<> pos, cpp11::list_of< cpp11::doubles_matrix<> > path, bool close);
extern "C" SEXP _ggforce_points_to_path(SEXP pos, SEXP path, SEXP close) {
  BEGIN_CPP11
    return cpp11::as_sexp(points_to_path(cpp11::as_cpp<cpp11::decay_t<cpp11::doubles_matrix<>>>(pos), cpp11::as_cpp<cpp11::decay_t<cpp11::list_of< cpp11::doubles_matrix<> >>>(path), cpp11::as_cpp<cpp11::decay_t<bool>>(close)));
  END_CPP11
}

extern "C" {
static const R_CallMethodDef CallEntries[] = {
    {"_ggforce_bezierPath",           (DL_FUNC) &_ggforce_bezierPath,           3},
    {"_ggforce_concaveman_c",         (DL_FUNC) &_ggforce_concaveman_c,         4},
    {"_ggforce_enclose_ellip_points", (DL_FUNC) &_ggforce_enclose_ellip_points, 4},
    {"_ggforce_enclose_points",       (DL_FUNC) &_ggforce_enclose_points,       3},
    {"_ggforce_getBeziers",           (DL_FUNC) &_ggforce_getBeziers,           4},
    {"_ggforce_getSplines",           (DL_FUNC) &_ggforce_getSplines,           5},
    {"_ggforce_points_to_path",       (DL_FUNC) &_ggforce_points_to_path,       3},
    {"_ggforce_splinePath",           (DL_FUNC) &_ggforce_splinePath,           6},
    {NULL, NULL, 0}
};
}

extern "C" attribute_visible void R_init_ggforce(DllInfo* dll){
  R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
  R_useDynamicSymbols(dll, FALSE);
  R_forceSymbols(dll, TRUE);
}
