From: Alessandro Decina Date: Mon, 15 Oct 2012 07:10:25 +0000 (+0200) Subject: overrides: implement the python iterator protocol for Gst.Iterator X-Git-Tag: 1.19.3~485^2~220 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=501db565970deb9cdf0e022f2718f23493a590c9;p=platform%2Fupstream%2Fgstreamer.git overrides: implement the python iterator protocol for Gst.Iterator So that you can use: for value in gst_iterator: ... --- diff --git a/gi/overrides/Gst.py b/gi/overrides/Gst.py index 1e3cca5..392fd31 100644 --- a/gi/overrides/Gst.py +++ b/gi/overrides/Gst.py @@ -77,6 +77,26 @@ class Caps(Gst.Caps): Caps = override(Caps) __all__.append('Caps') +class IteratorError(Exception): + pass +__all__.append('IteratorError') + +class Iterator(Gst.Iterator): + def __iter__(self): + while True: + result, value = self.next() + if result == Gst.IteratorResult.DONE: + break + + if result != Gst.IteratorResult.OK: + raise IteratorError(result) + + yield value + +Iterator = override(Iterator) +__all__.append('Iterator') + + class ElementFactory(Gst.ElementFactory): # ElementFactory