On Sat, 16 Oct 2010 12:23:50 -0400, Denis Koroskin <2kor...@gmail.com>
wrote:
No, it doesn't use capacity, it uses length as a capacity instead:
void ensureCapacity(T)(ref T[] array, size_t minCapacity)
{
size_t capacity = array.length;
if (minCapacity < capacity) {
return;
}
// need resize
capacity *= 2;
if (capacity < 16) {
capacity = 16;
}
if (capacity < minCapacity) {
capacity = minCapacity;
}
array.length = capacity;
}
The usage pattern is as follows:
dchar[] toUTF32(string s, dchar[] buffer = null)
{
size_t size = 0;
foreach (dchar d; s) {
buffer.put(size, d);
}
return buffer[0..size];
}
Oh, ok. So you are keeping track of the length in a local variable. That
certainly works for specific applications, but Appender is supposed to be
generally useful.
Like I said, An unsafe appender could be added to phobos which does the
same.
-Steve