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);
  ...
}

Reply via email to