# HG changeset patch # User Abhinav Tripathi # Date 1465045548 25200 # Node ID c05ff3e85fecbff6ea66c7205a56e87cc5d2fcb9 # Parent 9aeb3cd4a288ceb8b82bb77357674fa3ef3e2f40 Add conversion of python tuples to octave cell arrays. * python_to_octave.cc (pytuple_to_cellarray): new function to convert tuples to cellarrays diff -r 9aeb3cd4a288 -r c05ff3e85fec python_to_octave.cc --- a/python_to_octave.cc Sun May 29 08:51:35 2016 -0700 +++ b/python_to_octave.cc Sat Jun 04 06:05:48 2016 -0700 @@ -372,6 +372,24 @@ } static void + pytuple_to_cellarray (octave_value& oct_value, const boost::python::tuple& tuple) + { + octave_idx_type length = boost::python::extract (tuple.attr ("__len__") ()); + octave_value_list values; + + for (octave_idx_type i = 0; i < length; i++) + { + octave_value val; + + pyobj_to_octvalue (val, tuple[i]); + values.append (val); + + } + + oct_value = Cell (values); + } + + static void pydict_to_octmap (octave_value& oct_value, const boost::python::dict& dict) { boost::python::list list = dict.items (); @@ -467,6 +485,7 @@ extract arrayx (py_object); extract listx (py_object); extract dictx (py_object); + extract tuplex (py_object); if (intx.check ()) oct_value = intx (); @@ -484,6 +503,8 @@ pylist_to_cellarray (oct_value, (boost::python::list&)py_object); else if (dictx.check ()) pydict_to_octmap (oct_value, (boost::python::dict&)py_object); + else if (tuplex.check ()) + pytuple_to_cellarray (oct_value, (boost::python::tuple&)py_object); else throw object_convert_exception ( PyEval_GetFuncName (py_object.ptr ())