On Wednesday, 26 July 2017 at 02:32:07 UTC, Adam D. Ruppe wrote:

I've hand rolled a function which is working for me currently, but with my coding ability, I'd feel much safer with something official :)

You could also do (cast(ubyte[]) array).length.


This was my (way over complicated) attempt at the same thing. I'll blame my verbosity because I was trying to teach myself about templates and constraints at the time :)

/+
There is a special type of array which acts as a wildcard that can hold arrays of any kind, declared as void[]. The .length of a void array is the length of the data in
bytes rather than the number of elements in its original type. "
+/

int arrayByteSize(T)(T someArray) if (isDynamicArray!(T))
{
    ubyte[] arr = cast(ubyte[]) someArray;
    return cast(int) arr.length;
}

It just seems like something this basic regarding dynamic arrays should just be built-in.

What are you using it for?

glBufferData(GL_ARRAY_BUFFER, vertices.arrayByteSize, vertices.ptr, GL_STATIC_DRAW);

I find that openGL uses array buffers all over the place.

I just keep going back to the idea that such low level functionality should be inherent in either the language or Phobos. If that is even possible.

Reply via email to