1.1 --- a/iixr.py Mon Aug 31 20:24:41 2009 +0200
1.2 +++ b/iixr.py Mon Aug 31 21:02:30 2009 +0200
1.3 @@ -293,20 +293,44 @@
1.4 self.reset()
1.5 self.f.seek(offset)
1.6
1.7 + # Could duplicate the file handle using...
1.8 + # fdopen(dup(self.f.fileno()), "rb")
1.9 +
1.10 + return PositionIterator(self.f)
1.11 +
1.12 +class PositionIterator(PositionReader):
1.13 +
1.14 + "Iterating over document positions."
1.15 +
1.16 + def __init__(self, f):
1.17 + PositionReader.__init__(self, f)
1.18 +
1.19 # Read the number of documents.
1.20
1.21 - ndocuments = self.read_number()
1.22 + self.ndocuments = self.read_number()
1.23 + self.read_documents = 0
1.24 +
1.25 + def __len__(self):
1.26 + return self.ndocuments
1.27
1.28 - # Read all records.
1.29 + def sort(self):
1.30 +
1.31 + "Stored document positions are already sorted."
1.32 +
1.33 + pass
1.34
1.35 - i = 0
1.36 - doc_positions = []
1.37 + def __iter__(self):
1.38 + return self
1.39 +
1.40 + def next(self):
1.41
1.42 - while i < ndocuments:
1.43 - doc_positions.append(self.read_positions())
1.44 - i += 1
1.45 + "Read positions for a single document."
1.46
1.47 - return doc_positions
1.48 + if self.read_documents < self.ndocuments:
1.49 + self.read_documents += 1
1.50 + return self.read_positions()
1.51 + else:
1.52 + raise StopIteration
1.53
1.54 class TermWriter(FileWriter):
1.55