File cubinterpp_py_module.cpp
File List > src > cubinterpp_py_module.cpp
Go to the documentation of this file
#include <vector>
#include <pybind11/stl.h>
#include <pybind11/pybind11.h>
#include <cubinterpp.hpp>
namespace py = pybind11;
using DoubleVector = std::vector<double>;
using DoubleVector2 = std::vector<DoubleVector>;
using DoubleVector3 = std::vector<DoubleVector2>;
PYBIND11_MODULE(cubinterpp_py, m) {
m.doc() = "pybind11 1D cubic and linear interpolation"; // optional module docstring
py::class_<cip::LinearInterp1D<double>>(m, "LinearInterp1D")
.def(py::init<DoubleVector, DoubleVector>())
.def("eval", &cip::LinearInterp1D<double>::eval, py::return_value_policy::reference_internal)
.def("evaln", &cip::LinearInterp1D<double>::evaln, py::return_value_policy::reference_internal);
py::class_<cip::MonotonicSpline1D<double>>(m, "MonotonicSpline1D")
.def(py::init<DoubleVector, DoubleVector>())
.def("eval", &cip::MonotonicSpline1D<double>::eval, py::return_value_policy::reference_internal)
.def("evaln", &cip::MonotonicSpline1D<double>::evaln, py::return_value_policy::reference_internal);
py::class_<cip::AkimaSpline1D<double>>(m, "AkimaSpline1D")
.def(py::init<DoubleVector, DoubleVector>())
.def("eval", &cip::AkimaSpline1D<double>::eval, py::return_value_policy::reference_internal)
.def("evaln", &cip::AkimaSpline1D<double>::evaln, py::return_value_policy::reference_internal);
py::class_<cip::NaturalSpline1D<double>>(m, "NaturalSpline1D")
.def(py::init<DoubleVector, DoubleVector>())
.def("eval", &cip::NaturalSpline1D<double>::eval, py::return_value_policy::reference_internal)
.def("evaln", &cip::NaturalSpline1D<double>::evaln, py::return_value_policy::reference_internal);
py::class_<cip::LinearInterp2D<double>>(m, "LinearInterp2D")
.def(py::init<DoubleVector, DoubleVector, DoubleVector2>())
.def("eval", &cip::LinearInterp2D<double>::eval<double, double>, py::return_value_policy::reference_internal)
.def("evaln", &cip::LinearInterp2D<double>::evaln<DoubleVector, DoubleVector>, py::return_value_policy::reference_internal);
py::class_<cip::LinearInterp3D<double>>(m, "LinearInterp3D")
.def(py::init<DoubleVector, DoubleVector, DoubleVector, DoubleVector3>())
.def("eval", &cip::LinearInterp3D<double>::eval<double, double, double>, py::return_value_policy::reference_internal)
.def("evaln", &cip::LinearInterp3D<double>::evaln<DoubleVector, DoubleVector, DoubleVector>, py::return_value_policy::reference_internal);
py::class_<cip::MonotonicSpline2D<double>>(m, "MonotonicSpline2D")
.def(py::init<DoubleVector, DoubleVector, DoubleVector2>())
.def("eval", &cip::MonotonicSpline2D<double>::eval<double, double>, py::return_value_policy::reference_internal);
py::class_<cip::AkimaSpline2D<double>>(m, "AkimaSpline2D")
.def(py::init<DoubleVector, DoubleVector, DoubleVector2>())
.def("eval", &cip::AkimaSpline2D<double>::eval<double, double>, py::return_value_policy::reference_internal);
py::class_<cip::NaturalSpline2D<double>>(m, "NaturalSpline2D")
.def(py::init<DoubleVector, DoubleVector, DoubleVector2>())
.def("eval", &cip::NaturalSpline2D<double>::eval<double, double>, py::return_value_policy::reference_internal);
py::class_<cip::NaturalSpline3D<double>>(m, "NaturalSpline3D")
.def(py::init<DoubleVector, DoubleVector, DoubleVector, DoubleVector3>())
.def("eval", &cip::NaturalSpline3D<double>::eval<double, double, double>, py::return_value_policy::reference_internal);
}