aboutsummaryrefslogtreecommitdiffstats
path: root/PySide/QtCore/qpair_conversions.h
blob: de9904630efe4184b71eb4681f9fec36a5256e26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
template <typename qpair>
struct Converter_qpair
{
    static PyObject* toPython(qpair holder)
    {
        typename qpair::first_type first(holder.first);
        typename qpair::second_type second(holder.second);
        PyObject* tuple = PyTuple_New(2);
        PyTuple_SET_ITEM(tuple, 0, Converter<typename qpair::first_type>::toPython(first));
        PyTuple_SET_ITEM(tuple, 1, Converter<typename qpair::second_type>::toPython(second));
        return tuple;
    }
    static qpair toCpp(PyObject* pyobj)
    {
        qpair result;
        PyObject* pyFirst = PySequence_GetItem(pyobj, 0);
        PyObject* pySecond = PySequence_GetItem(pyobj, 1);
        result.first = Converter<typename qpair::first_type>::toCpp(pyFirst);
        result.second = Converter<typename qpair::second_type>::toCpp(pySecond);
        return result;
    }
};

template<typename FT, typename ST>
struct Converter<QPair<FT, ST> > : Converter_qpair<QPair<FT, ST> > {};