Before recent advances such as Cython, Boost.Python was one of the best ways to integrate C++ code into Python programs. The following C++ source code exposes a C++ function to Python. The function takes a NumPy array as an argument and extracts a C++ integer type.
#include <boost/python.hpp> #include "boost/python/extract.hpp" #include "boost/python/numeric.hpp" #include <iostream> using namespace boost::python; // Functions to demonstrate extraction void setArray(boost::python::numeric::array data) { // Access a built-in type (an array) boost::python::numeric::array a = data; // Need to <extract> array elements because their type is unknown std::cout << "First array item: " << extract<int>(a[0]) << std::endl; } // Expose classes and methods to Python BOOST_PYTHON_MODULE(TestNumPy) { boost::python::numeric::array::set_module_and_type("numpy", "ndarray"); def("setArray", &setArray); } |
