diff --git a/src/runner/variant_helper.h b/src/runner/variant_helper.h index 50d238e..83fbcaa 100644 --- a/src/runner/variant_helper.h +++ b/src/runner/variant_helper.h @@ -14,6 +14,24 @@ namespace boost { namespace python { + template + struct to_py_variant; + + template + struct to_py_variant> { + + using variant_type = boost::variant; + + static PyObject* convert(const variant_type& c_variant) { + object value = boost::apply_visitor([](auto const& value) { + return object{ value }; + }, c_variant); + //create Python object from the list + return incref(value.ptr()); + } + + }; + template struct variant_from_python; @@ -88,6 +106,9 @@ namespace boost { template< class TVariant> void register_variant() { + + to_python_converter>(); + converter::registry::push_back(&variant_from_python::convertible , &variant_from_python::construct , type_id());