casting and arrays..
gareis
dhasenan at gmail.com
Sat Mar 10 19:06:39 PST 2007
Chris Warwick wrote:
> "Kirk McDonald" <kirklin.mcdonald at gmail.com> wrote in message
> news:esvk4l$28mi$1 at digitalmars.com...
>> Chris Warwick wrote:
>>> "Jarrett Billingsley" <kb3ctd2 at yahoo.com> wrote in message
>>> news:esvhdv$261a$1 at digitalmars.com...
>>>> "Chris Warwick" <sp at m.me.not> wrote in message
>>>> news:esvf5h$2317$1 at digitalmars.com...
>>>>> std.file.read(filename);
>>>>>
>>>>> returns type void[]
>>> Ok say you have that void[] array returned from std.read.file(). Whats
>>> the best way to copy a struct out from the void array? Only way i can
>>> think is memcpy, or some heavy duty casting and pointers. Is there a
>>> cleaner - pretier way with D?
>>>
>>> thanks,
>>>
>>> cw
>> Assuming that array.length == YourStruct.sizeof, you can say
>> cast(YourStruct*)array.ptr
>> to treat the array as the struct in-place.
>
> Well i cant realy do that cause im reading a binary file in, and then i want
> to parse it, extract structs and various types here and there.
Then you need to do pointer arithmetic, it seems. Assuming your struct
has a deserializer method that takes a void*:
---
for (int i = 0; i < array.length; i++) {
if (someStructStartsHere()) {
someStruct s;
s.deserialize(array.ptr + i);
do_stuff_with_someStruct (s);
}
}
---
That should probably work.
> cheers,
>
> cw
>
>
More information about the Digitalmars-d-learn
mailing list