tomer filiba wrote: > my solution would be completely leaving seek() and tell() out of the > 3rd layer -- it's a byte-level operation. > > anyone thinks differently? if so, what's your solution?
seek and tell are a poor mans sequence. I would have nothing by those names. I would have input streams, output streams and sequences, and I wouldn't mix the three. FileReader would be an InputStream, FileWriter would be an OutputStream. FileBytes would support the sequence protocol, mimicking bytes objects. It would support random-access read and write using __getitem__ and __setitem__, allowing slice assignment for slices of equal size. And there would be append() to extend the file, and partial __delitem__ support for truncating. Looking at your iostack2 Stream class, no sooner do you introduce the key methods read and write, than you supplement them with capability queries readable and writable that check whether these methods may even be called. IMO this is a clear indication that these methods really want to be refactored into separate classes. I think you'll find that separating input, output and random access into three separate ADTs will much simplify BufferingLayer (even though you'll need three of them). At least if you intend to take interactions between reads and writes into account. regards, Anders _______________________________________________ Python-3000 mailing list [email protected] http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com
