aboutsummaryrefslogtreecommitdiffstats
path: root/libshiboken/helper.h
diff options
context:
space:
mode:
authorLauro Neto <lauro.neto@openbossa.org>2010-02-04 14:07:33 -0300
committerHugo Lima <hugo.lima@openbossa.org>2010-02-04 14:31:22 -0200
commit9e080452addad7853b41f416a0fb66d3d74a292a (patch)
treefc712b3b43c5ac96ec652ecf9a4c0181633c10bd /libshiboken/helper.h
parent8f843229b8ff51af57e7bcc5c78a9821becac079 (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.h32
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));
}
/**