[issue12911] Expose a private accumulator C API

Martin v. Löwis report at bugs.python.org
Mon Oct 3 13:44:14 CEST 2011


Martin v. Löwis <martin at v.loewis.de> added the comment:

> It's not a container type, just a small C struct that 
> gets allocated on the stack. Think of it as a library, like stringlib.

That's what I call a container type: a structure with a library :-)

> That's another possibility. But we'd have to expose a 
> C API anyway, and this one is as good as any other.

No, it's not: it's additional clutter. If new API needs to be added,
adding it for existing structures is better. Notice that you don't
*need* new API, as you can use StringIO just fine from C also.

> Note that StringIO will copy data twice (once when calling 
> write(), once when calling getvalue()), while ''.join() only once (at 
> the end, when concatenating all strings).

Sounds like a flaw in StringIO to me. It could also manage a list of strings that have been written, rather than only using a flat buffer. Only when someone actually needs a linear buffer, it could convert it (and use a plain string.join when getvalue is called and there is no buffer at all).

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue12911>
_______________________________________


More information about the Python-bugs-list mailing list