X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/c0f5089ea04bd04fe25148e712fa62cd49dc17da..d7d291938c45893e28715fb12ae5b83d334084e9:/lib/service/iservice.h?ds=sidebyside diff --git a/lib/service/iservice.h b/lib/service/iservice.h index 9eeb07c8..5a8a0627 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -2,10 +2,18 @@ #define __lib_dvb_iservice_h #include -#include +#include #include #include +#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,37 @@ public: } }; -class iServiceInformation: public virtual iObject + /* the reason we have the servicereference as additional argument is + that we don't have to create one object for every entry in a possibly + large list, provided that no state information is nessesary to deliver + the required information. Anyway - ref *must* be the same as the argument + to the info() or getIServiceInformation call! */ +class iStaticServiceInformation: public iObject +{ +public: + virtual RESULT getName(const eServiceReference &ref, std::string &name)=0; +}; + +TEMPLATE_TYPEDEF(ePtr, iStaticServiceInformationPtr); + +class iServiceInformation: public iStaticServiceInformation { public: - virtual RESULT getName(eString &name)=0; + }; -class iPauseableService: public virtual iObject +TEMPLATE_TYPEDEF(ePtr, iServiceInformationPtr); + +class iPauseableService: public iObject { public: virtual RESULT pause()=0; virtual RESULT unpause()=0; }; -class iPlayableService: public virtual iObject +TEMPLATE_TYPEDEF(ePtr, iPauseableServicePtr); + +class iPlayableService: public iObject { friend class iServiceHandler; public: @@ -159,29 +184,40 @@ public: virtual RESULT connectEvent(const Slot2 &event, ePtr &connection)=0; virtual RESULT start()=0; virtual RESULT stop()=0; - virtual RESULT getIPausableService(ePtr &ptr)=0; - virtual RESULT getIServiceInformation(ePtr &ptr)=0; + virtual RESULT pause(ePtr &ptr)=0; + virtual RESULT info(ePtr &ptr)=0; }; -class iRecordableService: public virtual iObject +TEMPLATE_TYPEDEF(ePtr, iPlayableServicePtr); + +class iRecordableService: public iObject { public: virtual RESULT start()=0; virtual RESULT stop()=0; }; -class iListableService: public virtual iObject +TEMPLATE_TYPEDEF(ePtr, iRecordableServicePtr); + +// TEMPLATE_TYPEDEF(std::list, eServiceReferenceList); + +class iListableService: public iObject { public: virtual RESULT getContent(std::list &list)=0; }; -class iServiceHandler: public virtual iObject +TEMPLATE_TYPEDEF(ePtr, iListableServicePtr); + +class iServiceHandler: public iObject { public: virtual RESULT play(const eServiceReference &, ePtr &ptr)=0; virtual RESULT record(const eServiceReference &, ePtr &ptr)=0; virtual RESULT list(const eServiceReference &, ePtr &ptr)=0; + virtual RESULT info(const eServiceReference &, ePtr &ptr); }; +TEMPLATE_TYPEDEF(ePtr, iServiceHandlerPtr); + #endif