From: Felix Domke Date: Mon, 24 Jan 2005 18:16:22 +0000 (+0000) Subject: add python connections X-Git-Tag: 2.6.0~5942 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/5bdcf268b3fe57526f35e7097c79f441bae7a5d3 add python connections --- diff --git a/lib/python/connections.cpp b/lib/python/connections.cpp new file mode 100644 index 00000000..c24c9399 --- /dev/null +++ b/lib/python/connections.cpp @@ -0,0 +1,9 @@ +#include + +PSignal1 testsignal; + +void connect(Slot1 &slot, PyObject *fnc) +{ + printf("CONNECT !\n"); +} + diff --git a/lib/python/connections.h b/lib/python/connections.h new file mode 100644 index 00000000..9b4abdd2 --- /dev/null +++ b/lib/python/connections.h @@ -0,0 +1,90 @@ +#ifndef __lib_python_connections_h +#define __lib_python_connections_h + +#include + + /* avoid warnigs :) */ +#include +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 200112L +#include +#include + +class PSignal +{ +public: + PyObject *m_list; +public: + PSignal() + { + m_list = PyList_New(0); + Py_INCREF(m_list); + } + ~PSignal() + { + Py_DECREF(m_list); + } + + void callPython(PyObject *tuple) + { + int size = PyList_Size(m_list); + int i; + for (i=0; i +class PSignal0: public PSignal, public Signal0 +{ +public: + R operator()() + { + PyObject *pArgs = PyTuple_New(0); + callPython(pArgs); + Py_DECREF(pArgs); + return Signal0::operator()(); + } +}; + +template +class PSignal1: public PSignal, public Signal1 +{ +public: + R operator()(V0 a0) + { + PyObject *pArgs = PyTuple_New(1); + PyTuple_SetItem(pArgs, 0, PyFrom(a0)); + callPython(pArgs); + Py_DECREF(pArgs); + return Signal1::operator()(a0); + } +}; + +template +class PSignal2: public PSignal, public Signal2 +{ +public: + R operator()(V0 a0, V1 a1) + { + PyObject *pArgs = PyTuple_New(2); + PyTuple_SetItem(pArgs, 0, PyFrom(a0)); + PyTuple_SetItem(pArgs, 1, PyFrom(a1)); + callPython(pArgs); + Py_DECREF(pArgs); + return Signal2::operator()(a0, a1); + } +}; + +#endif