diff options
Diffstat (limited to 'tests/samplebinding/list_conversions.h')
-rw-r--r-- | tests/samplebinding/list_conversions.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/samplebinding/list_conversions.h b/tests/samplebinding/list_conversions.h new file mode 100644 index 000000000..f512f98ad --- /dev/null +++ b/tests/samplebinding/list_conversions.h @@ -0,0 +1,29 @@ +template <typename StdList> +struct Converter_std_list +{ + static PyObject* toPython(ValueHolder<StdList> holder) + { + PyObject* result = PyList_New((int) holder.value.size()); + typedef typename StdList::iterator IT; + IT it; + int idx = 0; + for (it = holder.value.begin(); it != holder.value.end(); it++) { + ValueHolder<typename StdList::value_type> vh(*it); + PyList_SET_ITEM(result, idx, Converter<typename StdList::value_type>::toPython(vh)); + idx++; + } + return result; + } + static StdList toCpp(PyObject* pyobj) + { + StdList result; + for (int i = 0; i < PyTuple_GET_SIZE(pyobj); i++) { + PyObject* pyItem = PyTuple_GET_ITEM(pyobj, i); + result.push_back(Converter<typename StdList::value_type>::toCpp(pyItem)); + } + return result; + } +}; + +template<typename T> +struct Converter<std::list<T> > : Converter_std_list<std::list<T> > {}; |