X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/a1664e81dd83e11828909d10b629ed04ea7d3467..d85c75fc186d91f497d5997982db94259b041280:/lib/python/connections.h diff --git a/lib/python/connections.h b/lib/python/connections.h index ac5865e5..8a06f7fa 100644 --- a/lib/python/connections.h +++ b/lib/python/connections.h @@ -40,6 +40,16 @@ public: PyObject *get() { Py_INCREF(m_list); return m_list; } }; +inline PyObject *PyFrom(int v) +{ + return PyInt_FromLong(v); +} + +inline PyObject *PyFrom(const char *c) +{ + return PyString_FromString(c); +} + template class PSignal0: public PSignal, public Signal0 { @@ -60,21 +70,7 @@ public: R operator()(V0 a0) { PyObject *pArgs = PyTuple_New(1); - PyTuple_SET_ITEM(pArgs, 0, PyInt_FromLong(a0)); - callPython(pArgs); - Py_DECREF(pArgs); - return Signal1::operator()(a0); - } -}; - -template -class PSignal1Str: public PSignal, public Signal1 -{ -public: - R operator()(V0 a0) - { - PyObject *pArgs = PyTuple_New(1); - PyTuple_SET_ITEM(pArgs, 0, PyString_FromString(a0)); + PyTuple_SET_ITEM(pArgs, 0, PyFrom(a0)); callPython(pArgs); Py_DECREF(pArgs); return Signal1::operator()(a0); @@ -88,8 +84,8 @@ public: R operator()(V0 a0, V1 a1) { PyObject *pArgs = PyTuple_New(2); - PyTuple_SET_ITEM(pArgs, 0, PyInt_FromLong(a0)); - PyTuple_SET_ITEM(pArgs, 1, PyInt_FromLong(a1)); + PyTuple_SET_ITEM(pArgs, 0, PyFrom(a0)); + PyTuple_SET_ITEM(pArgs, 1, PyFrom(a1)); callPython(pArgs); Py_DECREF(pArgs); return Signal2::operator()(a0, a1);