On 8/25/10 6:50 PDT, Steve Schveighoffer wrote:
OK, looked at it for a while, I wasn't clear originally on what Appender is
exactly supposed to do.

The idea is to provide a reference type that efficiently appends to an array. Previously Appended had two fields (a pointer to the array and the capacity) so it wasn't a reference type. This made it impossible to pass Appender objects by value and have it work properly.

I'd recommend scrapping Appender as written and creating one that does the
following:

1. if initialized with an existing array, initialize capacity to 0, forcing a
realloc on first append
2. Store the capacity outside the array data (i.e. in a heap-allocated
array+capacity struct).

Yes, 1 can be inefficient but it errs on the side of safety.  Once it
reallocates the first time, it will be very efficient.  This works as long as
the assumption is that you use Appender to append large amounts of data.

I'll work on a proposed replacement Appender struct, it shouldn't take too long.

Great, I'm seeing your other email now.


Andrei
_______________________________________________
phobos mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to