Re: [PATCH] Rework strbuf API and semantics.
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Sep 4, 2007, 11:11 UTC
- Message-ID
- <Pine.LNX.4.64.0709041209280.28586@racer.site>
- In-Reply-To
- <11888956802504-git-send-email-madcoder@debian.org>
Hi,
On Tue, 4 Sep 2007, Pierre Habouzit wrote:
Show 14 quoted lines
> A strbuf can be used to store byte arrays, or as an extended string > library. The `buf' member can be passed to any C legacy string function, > because strbuf operations always ensure there is a terminating \0 at the > end of the buffer, not accounted in the `len' field of the structure. > > A strbuf can be used to generate a string/buffer whose final size is > not really known, and then "strbuf_detach" can be used to get the built > buffer, and keep the wrapping "strbuf" structure usable for further work > again. > > Other interesting feature: buffer_ensure(sb, size) ensure that there > is enough allocated space in `sb' to put `size' new octets of data in > the buffer. It helps avoiding reallocating data for nothing when the > problem the strbuf helps to solve has a known typical size.
I like the general idea of this!
However, some comments are due:
- IMHO strbuf_grow() would be more descriptive than buffer_ensure(),
- IMHO the same goes for strbuf_free() instead of strbuf_wipe(), and
- it would be nice to split this patch into
- the API change (with _minimal_ changes to anything outside of strbuf.[ch]), and
- the cleanups in the rest of the code.
Ciao, Dscho