servicemp3.cpp: more simple/flexible streaming detection
[enigma2.git] / lib / python / connections.h
index 76859e7df3c7f8abf5edf9b6b624672da01abdd5..374749abb9505200a3ff7a37745536ac27987c72 100644 (file)
@@ -3,11 +3,6 @@
 
 #include <libsig_comp.h>
 
-               /* avoid warnigs :) */
-#include <features.h>
-#undef _POSIX_C_SOURCE
-#define _POSIX_C_SOURCE 200112L
-
 #include <lib/python/python.h>
 
 class PSignal
@@ -18,7 +13,10 @@ public:
        PSignal();
        ~PSignal();
        void callPython(SWIG_PYOBJECT(ePyObject) tuple);
-       PyObject *get(bool steal=false);
+#ifndef SWIG
+       PyObject *getSteal(bool clear=false);
+#endif
+       PyObject *get();
 };
 
 inline PyObject *PyFrom(int v)
@@ -82,4 +80,23 @@ public:
        }
 };
 
+template <class R, class V0, class V1, class V2>
+class PSignal3: public PSignal, public Signal3<R,V0,V1,V2>
+{
+public:
+       R operator()(V0 a0, V1 a1, V2 a2)
+       {
+               if (m_list)
+               {
+                       PyObject *pArgs = PyTuple_New(3);
+                       PyTuple_SET_ITEM(pArgs, 0, PyFrom(a0));
+                       PyTuple_SET_ITEM(pArgs, 1, PyFrom(a1));
+                       PyTuple_SET_ITEM(pArgs, 2, PyFrom(a2));
+                       callPython(pArgs);
+                       Org_Py_DECREF(pArgs);
+               }
+               return Signal3<R,V0,V1,V2>::operator()(a0, a1, a2);
+       }
+};
+
 #endif