Skip to content

Commit 4302652

Browse files
committed
added skip to iterators
1 parent c32d97b commit 4302652

File tree

3 files changed

+223
-3
lines changed

3 files changed

+223
-3
lines changed

aaf/iterator.pyx

Lines changed: 164 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,15 @@ cdef class ClassDefIter(BaseIterator):
4747
error_check(self.ptr.Clone(&iterable.ptr))
4848
return iterable
4949

50+
def skip(self, lib.aafUInt32 count = 1):
51+
ret = self.ptr.Skip(count)
52+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
53+
raise IndexError("skip count exceeded number of remaining objects")
54+
elif ret == lib.AAFRESULT_SUCCESS:
55+
return
56+
else:
57+
error_check(ret)
58+
5059
def __next__(self):
5160
cdef ClassDef classdef = ClassDef()
5261
ret = self.ptr.NextOne(&classdef.ptr)
@@ -73,6 +82,15 @@ cdef class CodecDefIter(BaseIterator):
7382
cdef CodecDefIter iterable = CodecDefIter()
7483
error_check(self.ptr.Clone(&iterable.ptr))
7584
return iterable
85+
86+
def skip(self, lib.aafUInt32 count = 1):
87+
ret = self.ptr.Skip(count)
88+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
89+
raise IndexError("skip count exceeded number of remaining objects")
90+
elif ret == lib.AAFRESULT_SUCCESS:
91+
return
92+
else:
93+
error_check(ret)
7694

7795
def __next__(self):
7896
cdef CodecDef codecdef = CodecDef()
@@ -100,7 +118,16 @@ cdef class ComponentIter(BaseIterator):
100118
cdef ComponentIter iter = ComponentIter()
101119
error_check(self.ptr.Clone(&iter.ptr))
102120
return iter
103-
121+
122+
def skip(self, lib.aafUInt32 count = 1):
123+
ret = self.ptr.Skip(count)
124+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
125+
raise IndexError("skip count exceeded number of remaining objects")
126+
elif ret == lib.AAFRESULT_SUCCESS:
127+
return
128+
else:
129+
error_check(ret)
130+
104131
def __next__(self):
105132
cdef Component comp = Component()
106133
ret = self.ptr.NextOne(&comp.comp_ptr)
@@ -128,6 +155,15 @@ cdef class ControlPointIter(BaseIterator):
128155
error_check(self.ptr.Clone(&iter.ptr))
129156
return iter
130157

158+
def skip(self, lib.aafUInt32 count = 1):
159+
ret = self.ptr.Skip(count)
160+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
161+
raise IndexError("skip count exceeded number of remaining objects")
162+
elif ret == lib.AAFRESULT_SUCCESS:
163+
return
164+
else:
165+
error_check(ret)
166+
131167
def __next__(self):
132168
cdef ControlPoint point = ControlPoint()
133169
ret = self.ptr.NextOne(&point.ptr)
@@ -155,6 +191,15 @@ cdef class EssenceDataIter(BaseIterator):
155191
error_check(self.ptr.Clone(&iter.ptr))
156192
return iter
157193

194+
def skip(self, lib.aafUInt32 count = 1):
195+
ret = self.ptr.Skip(count)
196+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
197+
raise IndexError("skip count exceeded number of remaining objects")
198+
elif ret == lib.AAFRESULT_SUCCESS:
199+
return
200+
else:
201+
error_check(ret)
202+
158203
def __next__(self):
159204
cdef EssenceData data = EssenceData()
160205
ret = self.ptr.NextOne(&data.ptr)
@@ -181,7 +226,16 @@ cdef class KLVDataDefIter(BaseIterator):
181226
cdef KLVDataDefIter iter = KLVDataDefIter()
182227
error_check(self.ptr.Clone(&iter.ptr))
183228
return iter
184-
229+
230+
def skip(self, lib.aafUInt32 count = 1):
231+
ret = self.ptr.Skip(count)
232+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
233+
raise IndexError("skip count exceeded number of remaining objects")
234+
elif ret == lib.AAFRESULT_SUCCESS:
235+
return
236+
else:
237+
error_check(ret)
238+
185239
def __next__(self):
186240
cdef KLVDataDef klv_def = KLVDataDef()
187241
ret = self.ptr.NextOne(&klv_def.ptr)
@@ -209,6 +263,15 @@ cdef class LoadedPluginIter(BaseIterator):
209263
error_check(self.ptr.Clone(&iter.ptr))
210264
return iter
211265

266+
def skip(self, lib.aafUInt32 count = 1):
267+
ret = self.ptr.Skip(count)
268+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
269+
raise IndexError("skip count exceeded number of remaining objects")
270+
elif ret == lib.AAFRESULT_SUCCESS:
271+
return
272+
else:
273+
error_check(ret)
274+
212275
def __next__(self):
213276
cdef AUID auid = AUID()
214277
ret = self.ptr.NextOne(&auid.auid)
@@ -236,6 +299,15 @@ cdef class MobSlotIter(BaseIterator):
236299
error_check(self.ptr.Clone(&iterable.ptr))
237300
return iterable
238301

302+
def skip(self, lib.aafUInt32 count = 1):
303+
ret = self.ptr.Skip(count)
304+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
305+
raise IndexError("skip count exceeded number of remaining objects")
306+
elif ret == lib.AAFRESULT_SUCCESS:
307+
return
308+
else:
309+
error_check(ret)
310+
239311
def __next__(self):
240312
cdef MobSlot slot = MobSlot()
241313
ret = self.ptr.NextOne(&slot.slot_ptr)
@@ -263,6 +335,15 @@ cdef class MobIter(BaseIterator):
263335
error_check(self.ptr.Clone(&iterable.ptr))
264336
return iterable
265337

338+
def skip(self, lib.aafUInt32 count = 1):
339+
ret = self.ptr.Skip(count)
340+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
341+
raise IndexError("skip count exceeded number of remaining objects")
342+
elif ret == lib.AAFRESULT_SUCCESS:
343+
return
344+
else:
345+
error_check(ret)
346+
266347
def __next__(self):
267348
cdef Mob mob = Mob()
268349
ret = self.ptr.NextOne(&mob.ptr)
@@ -289,6 +370,15 @@ cdef class ParamIter(BaseIterator):
289370
error_check(self.ptr.Clone(&iter.ptr))
290371
return iter
291372

373+
def skip(self, lib.aafUInt32 count = 1):
374+
ret = self.ptr.Skip(count)
375+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
376+
raise IndexError("skip count exceeded number of remaining objects")
377+
elif ret == lib.AAFRESULT_SUCCESS:
378+
return
379+
else:
380+
error_check(ret)
381+
292382
def __next__(self):
293383
cdef Parameter param = Parameter()
294384
ret = self.ptr.NextOne(&param.param_ptr)
@@ -316,6 +406,15 @@ cdef class PluginDefIter(BaseIterator):
316406
error_check(self.ptr.Clone(&iter.ptr))
317407
return iter
318408

409+
def skip(self, lib.aafUInt32 count = 1):
410+
ret = self.ptr.Skip(count)
411+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
412+
raise IndexError("skip count exceeded number of remaining objects")
413+
elif ret == lib.AAFRESULT_SUCCESS:
414+
return
415+
else:
416+
error_check(ret)
417+
319418
def __next__(self):
320419
cdef PluginDef plug_def = PluginDef()
321420
ret = self.ptr.NextOne(&plug_def.ptr)
@@ -343,6 +442,15 @@ cdef class PropIter(BaseIterator):
343442
error_check(self.ptr.Clone(&iter.ptr))
344443
return iter
345444

445+
def skip(self, lib.aafUInt32 count = 1):
446+
ret = self.ptr.Skip(count)
447+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
448+
raise IndexError("skip count exceeded number of remaining objects")
449+
elif ret == lib.AAFRESULT_SUCCESS:
450+
return
451+
else:
452+
error_check(ret)
453+
346454
def __next__(self):
347455
cdef Property prop = Property()
348456
ret = self.ptr.NextOne(&prop.ptr)
@@ -370,6 +478,15 @@ cdef class PropertyDefsIter(BaseIterator):
370478
error_check(self.ptr.Clone(&iter.ptr))
371479
return iter
372480

481+
def skip(self, lib.aafUInt32 count = 1):
482+
ret = self.ptr.Skip(count)
483+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
484+
raise IndexError("skip count exceeded number of remaining objects")
485+
elif ret == lib.AAFRESULT_SUCCESS:
486+
return
487+
else:
488+
error_check(ret)
489+
373490
def __next__(self):
374491
cdef PropertyDef propdef = PropertyDef()
375492
ret = self.ptr.NextOne(&propdef.ptr)
@@ -396,6 +513,15 @@ cdef class PropValueIter(BaseIterator):
396513
cdef PropValueIter iter = PropValueIter()
397514
error_check(self.ptr.Clone(&iter.ptr))
398515
return iter
516+
517+
def skip(self, lib.aafUInt32 count = 1):
518+
ret = self.ptr.Skip(count)
519+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
520+
raise IndexError("skip count exceeded number of remaining objects")
521+
elif ret == lib.AAFRESULT_SUCCESS:
522+
return
523+
else:
524+
error_check(ret)
399525

400526
def __next__(self):
401527
cdef PropertyValue value = PropertyValue()
@@ -424,6 +550,15 @@ cdef class PropValueResolveIter(BaseIterator):
424550
error_check(self.ptr.Clone(&iter.ptr))
425551
return iter
426552

553+
def skip(self, lib.aafUInt32 count = 1):
554+
ret = self.ptr.Skip(count)
555+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
556+
raise IndexError("skip count exceeded number of remaining objects")
557+
elif ret == lib.AAFRESULT_SUCCESS:
558+
return
559+
else:
560+
error_check(ret)
561+
427562
def __next__(self):
428563
cdef PropertyValue value = PropertyValue()
429564
ret = self.ptr.NextOne(&value.ptr)
@@ -451,6 +586,15 @@ cdef class SegmentIter(BaseIterator):
451586
error_check(self.ptr.Clone(&iter.ptr))
452587
return iter
453588

589+
def skip(self, lib.aafUInt32 count = 1):
590+
ret = self.ptr.Skip(count)
591+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
592+
raise IndexError("skip count exceeded number of remaining objects")
593+
elif ret == lib.AAFRESULT_SUCCESS:
594+
return
595+
else:
596+
error_check(ret)
597+
454598
def __next__(self):
455599
cdef Segment seg = Segment()
456600
ret = self.ptr.NextOne(&seg.seg_ptr)
@@ -478,6 +622,15 @@ cdef class TaggedValueIter(BaseIterator):
478622
error_check(self.ptr.Clone(&iter.ptr))
479623
return iter
480624

625+
def skip(self, lib.aafUInt32 count = 1):
626+
ret = self.ptr.Skip(count)
627+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
628+
raise IndexError("skip count exceeded number of remaining objects")
629+
elif ret == lib.AAFRESULT_SUCCESS:
630+
return
631+
else:
632+
error_check(ret)
633+
481634
def __next__(self):
482635
cdef TaggedValue tag = TaggedValue()
483636
ret = self.ptr.NextOne(&tag.ptr)
@@ -505,6 +658,15 @@ cdef class TypeDefIter(BaseIterator):
505658
error_check(self.ptr.Clone(&iter.ptr))
506659
return iter
507660

661+
def skip(self, lib.aafUInt32 count = 1):
662+
ret = self.ptr.Skip(count)
663+
if ret == lib.AAFRESULT_NO_MORE_OBJECTS:
664+
raise IndexError("skip count exceeded number of remaining objects")
665+
elif ret == lib.AAFRESULT_SUCCESS:
666+
return
667+
else:
668+
error_check(ret)
669+
508670
def __next__(self):
509671
cdef TypeDef type_def = TypeDef()
510672
ret = self.ptr.NextOne(&type_def.typedef_ptr)

0 commit comments

Comments
 (0)