I have developed a split vector type that implements the buffer protocol at http://scintilla.sourceforge.net/splitvector-1.0.zip
It acts as a mutable string implementing most of the sequence protocol as well as the buffer protocol. splitvector.SplitVector('c') creates a vector containing 8 bit characters and splitvector.SplitVector('u') is for Unicode. A writable attribute bufferAppearence can be set to 0 (default) to respond to buffer protocol calls by moving the gap to the end and returning the address of all of the data. Setting bufferAppearence to 1 responds as a two segment buffer. I haven't found any code that understands responding with two segments. sre and file.write handle SplitVector fine when it responds as a single segment: import re, splitvector x = splitvector.SplitVector("c") x[:] = "The life of brian" r = re.compile("l[a-z]*", re.M) print x y = r.search(x) print y.group(0) x.bufferAppearence = 1 y = r.search(x) print y.group(0) produces The life of brian life Traceback (most recent call last): File "qt.py", line 9, in <module> y = r.search(x) TypeError: expected string or buffer It is likely that adding multi-segment ability to sre would complexify and slow it down. OTOH multi-segment buffers may be well-suited to scatter/gather I/O calls like writev. Neil _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com