Andrej Mitrovic:

> foreach (ubyte[] buf; file.byChunk(4096))
> {
>       sendEditor(SCI_ADDTEXT, buf.length, cast(LPARAM)buf.ptr);
> }
> ...
> SCI_ADDTEXT(int length, const char *s)

Keep in mind that the length of a D array is a size_t, this means a 32 or 64 
bit long unsigned word.


> The ADDTEXT function creates a copy of the pointed-to contents to it's
> internal scintilla buffers, so I don't have to keep any pointers
> around after the call.

In byChunk() the content of buffer is reused across calls, so you are not 
wasting allocations. I don't know if it's possible to use a fixed-size 
char[4096] array to remove the first memory allocation too. I think byChunk() 
needs a second optional argument, to give it a preallocated buffer (like a 
slice of a fixed-size array).

Bye,
bearophile

Reply via email to