402 def vetoRange(self,start,end):
403 "Veto part of the original range, splitting it if needed"
404 if (start>=end): return
405 if (len(self._starts)==0): return
406 ix=0
407 while (ix<len(self._starts) and end>self._starts[ix]):
408 if (end>=self._starts[ix]):
409 if (start<=self._starts[ix] and end>=self._ends[ix]):
410
411 self._remove(ix)
412 ix-=1
413 elif (start<=self._starts[ix] and end<self._ends[ix]):
414
415 self._starts[ix]=end
416 elif (start<=self._ends[ix] and end>=self._ends[ix]):
417
418 self._ends[ix]=start
419 elif (start>self._starts[ix] and end<self._ends[ix]):
420
421 oldend=self._ends[ix]
422 self._ends[ix]=start
423 self._insert(ix+1,end,oldend)
424 ix+=1
425 ix+=1
426