Dynamically Sized Structs

Rene Zwanenburg renezwanenburg at gmail.com
Wed Apr 16 16:37:08 PDT 2014


On Wednesday, 16 April 2014 at 23:15:43 UTC, Jeroen Bollen wrote:
> Is it possible to have a structure with a dynamic size? The 
> structure would contain an array.
>
> I know I can use templates, but the size won't be known at 
> compile time. I also know I could just put a dynamic array into 
> it, but that way it would just be a pointer.
>
> I know there would be major issues like how to pass the struct 
> to a function, as it has an unknown size, but to be quite 
> honest I just want pretty code. I'm doing network related 
> operations. I was hoping there'd still be a way to do this 
> using templates or so? I just don't want to go through the 
> hassle of writing a constructor for it to fill in all the 
> fields, and a toByteArray method to convert it back to raw data.
>
> struct MyStruct {
>         ulong length;
>         ubyte[length] data; // obv won't compile
> }

Dynamic structs are impossible with D's static type system. 
However I suspect vibe's BSON module [1] is pretty close to what 
you're looking for; it has a nice API and can easily be sent in 
binary form.

[1] http://vibed.org/api/vibe.data.bson/


More information about the Digitalmars-d-learn mailing list