On Wednesday, 4 December 2013 at 23:14:48 UTC, Andrei
Alexandrescu wrote:
Hello,
Walter and I were talking about eliminating the surreptitious
allocations in buildPath:
http://dlang.org/phobos/std_path.html#.buildPath
We'd need to keep the existing version working, so we're
looking at adding one or more new overloads. We're looking at
giving the user the option to control any needed memory
allocation (or even arrange things such that there's no memory
allocated at all).
It's a generous design space, so although we have a couple of
ideas let's hear others first.
Thanks,
Andrei
My approach in cases like that used to be to pass an optional
char[] buffer = null as last argument (it doesn't work as nice in
variadic functions though):
// constructs the result in a buffer if one is passed until there
is no more space left, in which case it reallocates the buffer
char[] buildPath(const(char)[] path1, const(char)[] path2, char[]
buffer = null) {
Appender!(char) appender = useBuffer(buffer);
...
}