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

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

// biexponential.cpp
std::vector<double> biexponential_transform(std::vector<double> input, double A, double B, double C, double D, double F, double W, double tol, int maxIt);
extern "C" SEXP _flowCore_biexponential_transform(SEXP input, SEXP A, SEXP B, SEXP C, SEXP D, SEXP F, SEXP W, SEXP tol, SEXP maxIt) {
  BEGIN_CPP11
    return cpp11::as_sexp(biexponential_transform(cpp11::as_cpp<cpp11::decay_t<std::vector<double>>>(input), cpp11::as_cpp<cpp11::decay_t<double>>(A), cpp11::as_cpp<cpp11::decay_t<double>>(B), cpp11::as_cpp<cpp11::decay_t<double>>(C), cpp11::as_cpp<cpp11::decay_t<double>>(D), cpp11::as_cpp<cpp11::decay_t<double>>(F), cpp11::as_cpp<cpp11::decay_t<double>>(W), cpp11::as_cpp<cpp11::decay_t<double>>(tol), cpp11::as_cpp<cpp11::decay_t<int>>(maxIt)));
  END_CPP11
}
// convertRawBytes.cpp
cpp11::sexp convertRawBytes(std::vector<unsigned char> bytes, bool isInt, cpp11::integers colSize, int ncol, bool isBigEndian);
extern "C" SEXP _flowCore_convertRawBytes(SEXP bytes, SEXP isInt, SEXP colSize, SEXP ncol, SEXP isBigEndian) {
  BEGIN_CPP11
    return cpp11::as_sexp(convertRawBytes(cpp11::as_cpp<cpp11::decay_t<std::vector<unsigned char>>>(bytes), cpp11::as_cpp<cpp11::decay_t<bool>>(isInt), cpp11::as_cpp<cpp11::decay_t<cpp11::integers>>(colSize), cpp11::as_cpp<cpp11::decay_t<int>>(ncol), cpp11::as_cpp<cpp11::decay_t<bool>>(isBigEndian)));
  END_CPP11
}
// fcsTextParse.cpp
cpp11::writable::doubles_matrix<> string_to_spill(string key);
extern "C" SEXP _flowCore_string_to_spill(SEXP key) {
  BEGIN_CPP11
    return cpp11::as_sexp(string_to_spill(cpp11::as_cpp<cpp11::decay_t<string>>(key)));
  END_CPP11
}
// fcsTextParse.cpp
std::string spill_to_string(cpp11::doubles_matrix<> rmat, std::vector<std::string> markers);
extern "C" SEXP _flowCore_spill_to_string(SEXP rmat, SEXP markers) {
  BEGIN_CPP11
    return cpp11::as_sexp(spill_to_string(cpp11::as_cpp<cpp11::decay_t<cpp11::doubles_matrix<>>>(rmat), cpp11::as_cpp<cpp11::decay_t<std::vector<std::string>>>(markers)));
  END_CPP11
}
// fcsTextParse.cpp
cpp11::sexp fcsTextParse(std::string txt, bool emptyValue);
extern "C" SEXP _flowCore_fcsTextParse(SEXP txt, SEXP emptyValue) {
  BEGIN_CPP11
    return cpp11::as_sexp(fcsTextParse(cpp11::as_cpp<cpp11::decay_t<std::string>>(txt), cpp11::as_cpp<cpp11::decay_t<bool>>(emptyValue)));
  END_CPP11
}
// hyperlogTransform.cpp
std::vector<double> hyperlog_transform(std::vector<double> input, double T, double W, double M, double A, bool isInverse);
extern "C" SEXP _flowCore_hyperlog_transform(SEXP input, SEXP T, SEXP W, SEXP M, SEXP A, SEXP isInverse) {
  BEGIN_CPP11
    return cpp11::as_sexp(hyperlog_transform(cpp11::as_cpp<cpp11::decay_t<std::vector<double>>>(input), cpp11::as_cpp<cpp11::decay_t<double>>(T), cpp11::as_cpp<cpp11::decay_t<double>>(W), cpp11::as_cpp<cpp11::decay_t<double>>(M), cpp11::as_cpp<cpp11::decay_t<double>>(A), cpp11::as_cpp<cpp11::decay_t<bool>>(isInverse)));
  END_CPP11
}
// inPolygon.cpp
std::vector<bool> inPolygon(cpp11::doubles_matrix<> data, cpp11::doubles_matrix<> vertices);
extern "C" SEXP _flowCore_inPolygon(SEXP data, SEXP vertices) {
  BEGIN_CPP11
    return cpp11::as_sexp(inPolygon(cpp11::as_cpp<cpp11::decay_t<cpp11::doubles_matrix<>>>(data), cpp11::as_cpp<cpp11::decay_t<cpp11::doubles_matrix<>>>(vertices)));
  END_CPP11
}
// inPolytope.cpp
std::vector<bool> inPolytope(cpp11::doubles_matrix<> data, cpp11::doubles_matrix<> A, cpp11::doubles b);
extern "C" SEXP _flowCore_inPolytope(SEXP data, SEXP A, SEXP b) {
  BEGIN_CPP11
    return cpp11::as_sexp(inPolytope(cpp11::as_cpp<cpp11::decay_t<cpp11::doubles_matrix<>>>(data), cpp11::as_cpp<cpp11::decay_t<cpp11::doubles_matrix<>>>(A), cpp11::as_cpp<cpp11::decay_t<cpp11::doubles>>(b)));
  END_CPP11
}
// logicleTransform.cpp
std::vector<double> logicle_transform(std::vector<double> input, double T, double W, double M, double A, bool isInverse);
extern "C" SEXP _flowCore_logicle_transform(SEXP input, SEXP T, SEXP W, SEXP M, SEXP A, SEXP isInverse) {
  BEGIN_CPP11
    return cpp11::as_sexp(logicle_transform(cpp11::as_cpp<cpp11::decay_t<std::vector<double>>>(input), cpp11::as_cpp<cpp11::decay_t<double>>(T), cpp11::as_cpp<cpp11::decay_t<double>>(W), cpp11::as_cpp<cpp11::decay_t<double>>(M), cpp11::as_cpp<cpp11::decay_t<double>>(A), cpp11::as_cpp<cpp11::decay_t<bool>>(isInverse)));
  END_CPP11
}
// poly_centroid.cpp
cpp11::doubles_matrix<> poly_centroid(cpp11::doubles_matrix<> verts);
extern "C" SEXP _flowCore_poly_centroid(SEXP verts) {
  BEGIN_CPP11
    return cpp11::as_sexp(poly_centroid(cpp11::as_cpp<cpp11::decay_t<cpp11::doubles_matrix<>>>(verts)));
  END_CPP11
}
// sortBytes.cpp
cpp11::raws sortBytes(cpp11::raws bytes, cpp11::doubles byte_order);
extern "C" SEXP _flowCore_sortBytes(SEXP bytes, SEXP byte_order) {
  BEGIN_CPP11
    return cpp11::as_sexp(sortBytes(cpp11::as_cpp<cpp11::decay_t<cpp11::raws>>(bytes), cpp11::as_cpp<cpp11::decay_t<cpp11::doubles>>(byte_order)));
  END_CPP11
}
// uint2double.cpp
std::vector<double> uint2double(std::vector<int> input, bool isBigEndian);
extern "C" SEXP _flowCore_uint2double(SEXP input, SEXP isBigEndian) {
  BEGIN_CPP11
    return cpp11::as_sexp(uint2double(cpp11::as_cpp<cpp11::decay_t<std::vector<int>>>(input), cpp11::as_cpp<cpp11::decay_t<bool>>(isBigEndian)));
  END_CPP11
}

extern "C" {
static const R_CallMethodDef CallEntries[] = {
    {"_flowCore_biexponential_transform", (DL_FUNC) &_flowCore_biexponential_transform, 9},
    {"_flowCore_convertRawBytes",         (DL_FUNC) &_flowCore_convertRawBytes,         5},
    {"_flowCore_fcsTextParse",            (DL_FUNC) &_flowCore_fcsTextParse,            2},
    {"_flowCore_hyperlog_transform",      (DL_FUNC) &_flowCore_hyperlog_transform,      6},
    {"_flowCore_inPolygon",               (DL_FUNC) &_flowCore_inPolygon,               2},
    {"_flowCore_inPolytope",              (DL_FUNC) &_flowCore_inPolytope,              3},
    {"_flowCore_logicle_transform",       (DL_FUNC) &_flowCore_logicle_transform,       6},
    {"_flowCore_poly_centroid",           (DL_FUNC) &_flowCore_poly_centroid,           1},
    {"_flowCore_sortBytes",               (DL_FUNC) &_flowCore_sortBytes,               2},
    {"_flowCore_spill_to_string",         (DL_FUNC) &_flowCore_spill_to_string,         2},
    {"_flowCore_string_to_spill",         (DL_FUNC) &_flowCore_string_to_spill,         1},
    {"_flowCore_uint2double",             (DL_FUNC) &_flowCore_uint2double,             2},
    {NULL, NULL, 0}
};
}

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