Using the Variant (Setting it's memory location)
Ali Çehreli
acehreli at yahoo.com
Sun Feb 5 22:10:15 PST 2012
On 02/05/2012 12:20 PM, Era Scarecrow wrote:
> I've been working and building a struct called 'AllTypes' which I've
> come to the conclusion is already available as a variant. However as I
> look at the documentation I don't see any methods/constructors to use
> where I can specify where I want the data to be access from.
>
> The data I will be accessing has dozens of different structures of
> records which I keep the formatting and types saved in an array. I see
> the problem where although variant can handle what I need, but I don't
> see a way to specify a specific memory range/access in order to use it.
>
> ubyte[] buffer;
>
> //buffer is loaded at some point with data so length > 0;
> buffer.length = 2;
>
> //0 is the offset from the buffer rather than making a range.
> Variant v(buffer, int8, 0);
> v = 10;
> assert(buffer[0] == 10);
>
> v = Variant(buffer, int8, 1);
> v = 25;
>
> assert(buffer[0] == 10);
> assert(buffer[1] == 25);
I see that it's not exactly what you are looking for, but have you
looked at std.conv.emplace()?
Ali
More information about the Digitalmars-d-learn
mailing list