diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2005-09-26 17:25:45 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2005-09-26 17:25:45 +0000 |
| commit | 76e87479554f771723ea4005788f9318cd1654f4 (patch) | |
| tree | bc4e083852791cd9fd03d959ae001eca0042fbd9 | |
| parent | 0722bdffe9e089cf67bba0887aff68391fd4ca72 (diff) | |
| download | enigma2-76e87479554f771723ea4005788f9318cd1654f4.tar.gz enigma2-76e87479554f771723ea4005788f9318cd1654f4.zip | |
- simplified getInterface-styled calls: now using return value instead of mutable argument
| -rw-r--r-- | lib/python/Components/EventInfo.py | 3 | ||||
| -rw-r--r-- | lib/python/Components/ServiceName.py | 8 | ||||
| -rw-r--r-- | lib/python/Components/ServicePosition.py | 7 | ||||
| -rw-r--r-- | lib/service/iservice.h | 43 |
4 files changed, 38 insertions, 23 deletions
diff --git a/lib/python/Components/EventInfo.py b/lib/python/Components/EventInfo.py index 656fd279..ac7ed9b5 100644 --- a/lib/python/Components/EventInfo.py +++ b/lib/python/Components/EventInfo.py @@ -23,7 +23,8 @@ class EventInfo(PerServiceDisplay): service = self.navcore.getCurrentService() if service != None: - if not service.info(info): + info = service.info() + if info is not None: ev = eServiceEventPtr() if info.getEvent(ev, self.now_or_next & 1) == 0: if self.now_or_next & 2: diff --git a/lib/python/Components/ServiceName.py b/lib/python/Components/ServiceName.py index 5352de5d..c6dcbb7a 100644 --- a/lib/python/Components/ServiceName.py +++ b/lib/python/Components/ServiceName.py @@ -12,11 +12,13 @@ class ServiceName(PerServiceDisplay): }) def newService(self): - info = iServiceInformationPtr() service = self.navcore.getCurrentService() - if service != None: - if not service.info(info): + print service + + if service is not None: + info = service.info() + if info is not None: self.setText(info.getName()) setLCD(info.getName()) diff --git a/lib/python/Components/ServicePosition.py b/lib/python/Components/ServicePosition.py index 462102f8..e402751c 100644 --- a/lib/python/Components/ServicePosition.py +++ b/lib/python/Components/ServicePosition.py @@ -33,7 +33,8 @@ class ServicePosition(PerServiceDisplay): self.available = 0 if service != None: - if not service.seek(seek): + seek = service.seek(seek) + if seek != None: if self.type != self.TYPE_LENGTH: self.updateTimer.start(500) @@ -43,11 +44,11 @@ class ServicePosition(PerServiceDisplay): self.update() def get(self, what): - seek = iSeekableServicePtr() service = self.navcore.getCurrentService() if service != None: - if not service.seek(seek): + seek = service.seek(seek) + if seek != None: if what == self.TYPE_LENGTH: r = seek.getLength() elif what == self.TYPE_POSITION: diff --git a/lib/service/iservice.h b/lib/service/iservice.h index 4a19378c..62be26c0 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -142,16 +142,29 @@ typedef unsigned long long pts_t; 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! */ + + /* About the usage of SWIG_VOID: + SWIG_VOID(real_returntype_t) hides a return value from swig. This is used for + the "superflouus" RESULT return values. + + Python code has to check the returned pointer against 0. This works, + as all functions returning instances in smartpointers AND having a + RESULT have to BOTH return non-zero AND set the pointer to zero. + + Python code thus can't check for the reason, but the reason isn't + user-servicable anyway. If you want to return a real reason which + goes beyong "it just doesn't work", use extra variables for this, + not the RESULT. + + Hide the result only if there is another way to check for failure! */ + class iStaticServiceInformation: public iObject { public: - virtual RESULT getName(const eServiceReference &ref, std::string &name)=0; + virtual SWIG_VOID(RESULT) getName(const eServiceReference &ref, std::string &SWIG_OUTPUT)=0; // doesn't need to be implemented, should return -1 then. virtual int getLength(const eServiceReference &ref)=0; - - // FOR SWIG - std::string getName(const eServiceReference &ref) { std::string temp; getName(ref, temp); return temp; } }; TEMPLATE_TYPEDEF(ePtr<iStaticServiceInformation>, iStaticServiceInformationPtr); @@ -161,10 +174,8 @@ class eServiceEvent; class iServiceInformation: public iObject { public: - virtual RESULT getName(std::string &name)=0; - // FOR SWIG - std::string getName() { std::string temp; getName(temp); return temp; } - virtual RESULT getEvent(ePtr<eServiceEvent> &evt, int nownext); + virtual SWIG_VOID(RESULT) getName(std::string &SWIG_OUTPUT)=0; + virtual SWIG_VOID(RESULT) getEvent(ePtr<eServiceEvent> &SWIG_OUTPUT, int nownext); }; TEMPLATE_TYPEDEF(ePtr<iServiceInformation>, iServiceInformationPtr); @@ -203,9 +214,9 @@ public: virtual RESULT connectEvent(const Slot2<void,iPlayableService*,int> &event, ePtr<eConnection> &connection)=0; virtual RESULT start()=0; virtual RESULT stop()=0; - virtual RESULT seek(ePtr<iSeekableService> &ptr)=0; - virtual RESULT pause(ePtr<iPauseableService> &ptr)=0; - virtual RESULT info(ePtr<iServiceInformation> &ptr)=0; + virtual SWIG_VOID(RESULT) seek(ePtr<iSeekableService> &SWIG_OUTPUT)=0; + virtual SWIG_VOID(RESULT) pause(ePtr<iPauseableService> &SWIG_OUTPUT)=0; + virtual SWIG_VOID(RESULT) info(ePtr<iServiceInformation> &SWIG_OUTPUT)=0; }; TEMPLATE_TYPEDEF(ePtr<iPlayableService>, iPlayableServicePtr); @@ -229,7 +240,7 @@ public: virtual RESULT getContent(std::list<eServiceReference> &list)=0; /* new, shiny interface: streaming. */ - virtual RESULT getNext(eServiceReference &ptr)=0; + virtual SWIG_VOID(RESULT) getNext(eServiceReference &SWIG_OUTPUT)=0; }; TEMPLATE_TYPEDEF(ePtr<iListableService>, iListableServicePtr); @@ -237,10 +248,10 @@ TEMPLATE_TYPEDEF(ePtr<iListableService>, iListableServicePtr); class iServiceHandler: public iObject { public: - virtual RESULT play(const eServiceReference &, ePtr<iPlayableService> &ptr)=0; - virtual RESULT record(const eServiceReference &, ePtr<iRecordableService> &ptr)=0; - virtual RESULT list(const eServiceReference &, ePtr<iListableService> &ptr)=0; - virtual RESULT info(const eServiceReference &, ePtr<iStaticServiceInformation> &ptr); + virtual SWIG_VOID(RESULT) play(const eServiceReference &, ePtr<iPlayableService> &SWIG_OUTPUT)=0; + virtual SWIG_VOID(RESULT) record(const eServiceReference &, ePtr<iRecordableService> &SWIG_OUTPUT)=0; + virtual SWIG_VOID(RESULT) list(const eServiceReference &, ePtr<iListableService> &SWIG_OUTPUT)=0; + virtual SWIG_VOID(RESULT) info(const eServiceReference &, ePtr<iStaticServiceInformation> &SWIG_OUTPUT)=0; }; TEMPLATE_TYPEDEF(ePtr<iServiceHandler>, iServiceHandlerPtr); |
