PSignal was already able to handle this without modifications
authorFelix Domke <tmbinc@elitedvb.net>
Tue, 21 Feb 2006 16:42:50 +0000 (16:42 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Tue, 21 Feb 2006 16:42:50 +0000 (16:42 +0000)
lib/base/console.h
lib/python/connections.h
lib/python/enigma_python.i

index bfa0240..ddfd82a 100644 (file)
@@ -40,7 +40,7 @@ public:
        void sendCtrlC();
        void write( const char *data, int len );
        bool running() { return (fd[0]!=-1) && (fd[1]!=-1) && (fd[2]!=-1); }
-       PSignal1Str<void, const char*> dataAvail;
+       PSignal1<void, const char*> dataAvail;
        PSignal1<void,int> dataSent;
        PSignal1<void,int> appClosed;
 };
index ac5865e..8a06f7f 100644 (file)
@@ -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 R>
 class PSignal0: public PSignal, public Signal0<R>
 {
@@ -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<R,V0>::operator()(a0);
-       }
-};
-
-template <class R, class V0>
-class PSignal1Str: public PSignal, public Signal1<R,V0>
-{
-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<R,V0>::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<R,V0,V1>::operator()(a0, a1);
index 42315ce..29b66ac 100644 (file)
@@ -216,19 +216,12 @@ public:
 };
 
 %template(PSignal1VI) PSignal1<void,int>;
+%template(PSignal1VS) PSignal1<void,const char *c>;
 
 %typemap(out) PSignal1VI {
        $1 = $input->get();
 }
 
-template<class R, class P0> class PSignal1Str
-{
-public:
-       PyObject *get();
-};
-
-%template(PSignal1VS) PSignal1Str<void,const char*>;
-
 %typemap(out) PSignal1VS {
        $1 = $input->get();
 }