#ifndef SUNBEAM_CONVERTERS_HPP #define SUNBEAM_CONVERTERS_HPP #include #include #include namespace py = pybind11; template< typename T > py::list iterable_to_pylist( const T& v ) { py::list l; for( const auto& x : v ) l.append( x ); return l; } template< typename T > std::string str( const T& t ) { std::stringstream stream; stream << t; return stream.str(); } namespace convert { py::array numpy_string_array(const std::vector& input); template std::vector vector(py::array_t& input) { T * input_ptr = (T *) input.request().ptr; std::vector output(input.size()); for (int i = 0; i < input.size(); i++) output[i] = input_ptr[i]; return output; } template py::array_t numpy_array(const std::vector& input) { auto output = py::array_t(input.size()); T * py_array_ptr = (T*)output.request().ptr; for (size_t i = 0; i < input.size(); i++) py_array_ptr[i] = input[i]; return output; } } #endif //SUNBEAM_CONVERTERS_HPP