diff options
author | Lauro Neto <lauro.neto@openbossa.org> | 2010-02-04 14:07:33 -0300 |
---|---|---|
committer | Hugo Lima <hugo.lima@openbossa.org> | 2010-02-04 14:31:22 -0200 |
commit | 9e080452addad7853b41f416a0fb66d3d74a292a (patch) | |
tree | fc712b3b43c5ac96ec652ecf9a4c0181633c10bd /libshiboken/helper.h | |
parent | 8f843229b8ff51af57e7bcc5c78a9821becac079 (diff) |
Fixing tuple construction and adding more makeTuple
For 4 and 5-item tuples
Reviewed by Hugo Parente Lima <hugo.lima@openbossa.org>
Diffstat (limited to 'libshiboken/helper.h')
-rw-r--r-- | libshiboken/helper.h | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/libshiboken/helper.h b/libshiboken/helper.h index 2e625b3e9..84084fef2 100644 --- a/libshiboken/helper.h +++ b/libshiboken/helper.h @@ -45,20 +45,34 @@ namespace Shiboken template<typename A, typename B> inline PyObject* makeTuple(const A& a, const B& b) { - PyObject* tuple = PyTuple_New(2); - PyTuple_SET_ITEM(tuple, 0, Converter<A>::toPython(a)); - PyTuple_SET_ITEM(tuple, 1, Converter<B>::toPython(b)); - return tuple; + return PyTuple_Pack(2, Converter<A>::toPython(a), Converter<B>::toPython(b)); } template<typename A, typename B, typename C> inline PyObject* makeTuple(const A& a, const B& b, const C& c) { - PyObject* tuple = PyTuple_New(3); - PyTuple_SET_ITEM(tuple, 0, Converter<A>::toPython(a)); - PyTuple_SET_ITEM(tuple, 1, Converter<B>::toPython(b)); - PyTuple_SET_ITEM(tuple, 2, Converter<C>::toPython(c)); - return tuple; + return PyTuple_Pack(3, Converter<A>::toPython(a), + Converter<B>::toPython(b), + Converter<C>::toPython(c)); +} + +template<typename A, typename B, typename C, typename D> +inline PyObject* makeTuple(const A& a, const B& b, const C& c, const D& d) +{ + return PyTuple_Pack(4, Converter<A>::toPython(a), + Converter<B>::toPython(b), + Converter<C>::toPython(c), + Converter<D>::toPython(d)); +} + +template<typename A, typename B, typename C, typename D, typename E> +inline PyObject* makeTuple(const A& a, const B& b, const C& c, const D& d, const E& e) +{ + return PyTuple_Pack(5, Converter<A>::toPython(a), + Converter<B>::toPython(b), + Converter<C>::toPython(c), + Converter<D>::toPython(d), + Converter<E>::toPython(e)); } /** |