fixed refcount of eListboxPythonStringContent
[enigma2.git] / lib / service / iservice.h
index 9eeb07c8ba5be48b9312a98a11e2099e2e01a63a..766d850eb748d3607b7d10c71e00ad00b7ff4ef6 100644 (file)
@@ -2,10 +2,18 @@
 #define __lib_dvb_iservice_h
 
 #include <lib/base/object.h>
-#include <lib/base/estring.h>
+#include <string>
 #include <connection.h>
 #include <list>
 
+#ifdef SWIG
+#define TEMPLATE_TYPEDEF(x, y) \
+%template(y) x; \
+typedef x y
+#else
+#define TEMPLATE_TYPEDEF(x, y) typedef x y
+#endif
+
 class eServiceReference
 {
 public:
@@ -41,7 +49,7 @@ public:
        inline int getSortKey() const { return (flags & hasSortKey) ? data[3] : ((flags & sort1) ? 1 : 0); }
 
        int data[8];
-       eString path;
+       std::string path;
 
        eServiceReference()
                : type(idInvalid), flags(0)
@@ -93,13 +101,13 @@ public:
                data[3]=data3;
                data[4]=data4;
        }
-       eServiceReference(int type, int flags, const eString &path)
+       eServiceReference(int type, int flags, const std::string &path)
                : type(type), flags(flags), path(path)
        {
                memset(data, 0, sizeof(data));
        }
-       eServiceReference(const eString &string);
-       eString toString() const;
+       eServiceReference(const std::string &string);
+       std::string toString() const;
        bool operator==(const eServiceReference &c) const
        {
                if (type != c.type)
@@ -134,20 +142,24 @@ public:
        }
 };
 
-class iServiceInformation: public virtual iObject
+class iServiceInformation: public iObject
 {
 public:
-       virtual RESULT getName(eString &name)=0;
+       virtual RESULT getName(std::string &name)=0;
 };
 
-class iPauseableService: public virtual iObject
+typedef ePtr<iServiceInformation> iServiceInformationPtr;
+
+class iPauseableService: public iObject
 {
 public:
        virtual RESULT pause()=0;
        virtual RESULT unpause()=0;
 };
 
-class iPlayableService: public virtual iObject
+typedef ePtr<iPauseableService> iPauseableServicePtr;
+
+class iPlayableService: public iObject
 {
        friend class iServiceHandler;
 public:
@@ -163,20 +175,29 @@ public:
        virtual RESULT getIServiceInformation(ePtr<iServiceInformation> &ptr)=0;
 };
 
-class iRecordableService: public virtual iObject
+TEMPLATE_TYPEDEF(ePtr<iPlayableService>, iPlayableServicePtr);
+
+class iRecordableService: public iObject
 {
 public:
        virtual RESULT start()=0;
        virtual RESULT stop()=0;
 };
 
-class iListableService: public virtual iObject
+typedef ePtr<iRecordableService> iRecordableServicePtr;
+
+// TEMPLATE_TYPEDEF(std::list<eServiceReference>, eServiceReferenceList);
+typedef std::list<eServiceReference> eServiceReferenceList;
+
+class iListableService: public iObject
 {
 public:
        virtual RESULT getContent(std::list<eServiceReference> &list)=0;
 };
 
-class iServiceHandler: public virtual iObject
+TEMPLATE_TYPEDEF(ePtr<iListableService>, iListableServicePtr);
+
+class iServiceHandler: public iObject
 {
 public:
        virtual RESULT play(const eServiceReference &, ePtr<iPlayableService> &ptr)=0;
@@ -184,4 +205,6 @@ public:
        virtual RESULT list(const eServiceReference &, ePtr<iListableService> &ptr)=0;
 };
 
+typedef ePtr<iServiceHandler> iServiceHandlerPtr;
+
 #endif