// File automatically generated by hookman, **DO NOT MODIFY MANUALLY**
#include <pybind11/functional.h>
#include <pybind11/pybind11.h>
#include <pybind11/stl_bind.h>
#include <HookCaller.hpp>

namespace py = pybind11;

PYBIND11_MAKE_OPAQUE(std::vector<std::function<int(int, double[2])>>);

PYBIND11_MODULE(_test_hook_man_generator, m) {
    py::bind_vector<std::vector<std::function<int(int, double[2])>>>(m, "vector_hook_impl_type_0", "Hook for vector implementation type 0");

    py::class_<hookman::HookCaller>(m, "HookCaller")
        .def(py::init<>())
        .def("load_impls_from_library", &hookman::HookCaller::load_impls_from_library)
        .def("friction_factor_impls", &hookman::HookCaller::friction_factor_impls)
        .def("friction_factor_impl", &hookman::HookCaller::friction_factor_impl)
        .def("append_friction_factor_impl", (void (hookman::HookCaller::*)(uintptr_t, const std::string&)) &hookman::HookCaller::append_friction_factor_impl)
        .def("append_friction_factor_impl", (void (hookman::HookCaller::*)(std::function<int(int, double[2])>, const std::string&)) &hookman::HookCaller::append_friction_factor_impl)
        .def("friction_factor_2_impls", &hookman::HookCaller::friction_factor_2_impls)
        .def("friction_factor_2_impl", &hookman::HookCaller::friction_factor_2_impl)
        .def("append_friction_factor_2_impl", (void (hookman::HookCaller::*)(uintptr_t, const std::string&)) &hookman::HookCaller::append_friction_factor_2_impl)
        .def("append_friction_factor_2_impl", (void (hookman::HookCaller::*)(std::function<int(int, double[2])>, const std::string&)) &hookman::HookCaller::append_friction_factor_2_impl)
    ;
}
