mirror of
https://github.com/boostorg/python.git
synced 2026-01-20 04:42:28 +00:00
43 lines
1.0 KiB
C++
43 lines
1.0 KiB
C++
#include "dvect.h"
|
|
#include "ivect.h"
|
|
#include <boost/python/cross_module.hpp>
|
|
namespace python = boost::python;
|
|
|
|
namespace {
|
|
|
|
# include "dvect_conversions.cpp"
|
|
# include "ivect_conversions.cpp"
|
|
|
|
vects::dvect ivect_as_dvect(const vects::ivect& iv)
|
|
{
|
|
vects::dvect dv(iv.size());
|
|
vects::dvect::iterator dviter = dv.begin();
|
|
for (int i = 0; i < iv.size(); i++) dviter[i] = static_cast<double>(iv[i]);
|
|
return dv;
|
|
}
|
|
}
|
|
|
|
BOOST_PYTHON_MODULE_INIT(ivect)
|
|
{
|
|
try
|
|
{
|
|
python::module_builder this_module("ivect");
|
|
|
|
python::class_builder<vects::ivect> ivect_class(this_module, "ivect");
|
|
python::export_converters(ivect_class);
|
|
|
|
python::import_converters<vects::dvect> dvect_converters("dvect", "dvect");
|
|
|
|
ivect_class.def(python::constructor<python::tuple>());
|
|
ivect_class.def(&vects::ivect::as_tuple, "as_tuple");
|
|
ivect_class.def(ivect_as_dvect, "as_dvect");
|
|
|
|
# include "dvect_defs.cpp"
|
|
# include "ivect_defs.cpp"
|
|
}
|
|
catch(...)
|
|
{
|
|
python::handle_exception(); // Deal with the exception for Python
|
|
}
|
|
}
|