From f971e5146a49901bca3df6295296eee7748f6b30 Mon Sep 17 00:00:00 2001
From: Valerio Mariani <valerio.mariani@unibas.ch>
Date: Fri, 19 Apr 2013 14:32:13 +0200
Subject: [PATCH] Turned vec to list converter into a python converter. Removed
 inverse conversion

---
 .../src/export_helper/vec_to_list_conv.hh     | 32 +++++++------------
 1 file changed, 12 insertions(+), 20 deletions(-)

diff --git a/modules/base/src/export_helper/vec_to_list_conv.hh b/modules/base/src/export_helper/vec_to_list_conv.hh
index 470d82dd4..d80671eaf 100644
--- a/modules/base/src/export_helper/vec_to_list_conv.hh
+++ b/modules/base/src/export_helper/vec_to_list_conv.hh
@@ -25,32 +25,24 @@
 #include <vector>
 namespace ost{
 
-/// \brief helper to convert between python list and std::vector
+/// \brief helper to convert between python list tuple and std::vecot
 /// 
 /// Usage:
-/// #include vec_to_list_conv.hh
-/// std::vector<Real> fancy_vector();
-/// boost::python::list fancy_list = VecToList<Real>(fancy_vector);
+///
+/// register_to_python_converter<VectorToListConverter<T>,
+///                              std::vector<T>>()
                         
 
 template<typename T>
-boost::python::list VecToList(std::vector<T>& vec){
-  boost::python::list l;
-  for(typename std::vector<T>::iterator it=vec.begin();it!=vec.end();++it){
-    l.append(*it);
+struct VectorToListConverter {
+  static PyObject* convert(const std::vector<T>& vec) {
+    boost::python::list l;
+    for(typename std::vector<T>::const_iterator it=vec.begin();it!=vec.end();++it){
+      l.append(*it);
+    }
+    return boost::python::incref(l.ptr());
   }
-  return l;
-}
-
-template<typename T>
-std::vector<T> ListToVec(boost::python::list& l){
-
-  std::vector<T> vec;
-  for (int i = 0; i < boost::python::len(l); ++i){
-    vec.push_back(boost::python::extract<T>(l[i]));
-  }
-  return vec;
-}
+};
 
 }
 
-- 
GitLab