Writing Classes to File
icee
icee_member at pathlink.com
Mon May 8 21:29:20 PDT 2006
In article <e3p2me$oee$1 at digitaldaemon.com>, Jeremy says...
>
>In article <Pine.LNX.4.64.0605082013370.2422 at bellevue.puremagic.com>, Brad
>Roberts says...
>>
>>On Mon, 8 May 2006, Jeremy wrote:
>>
>>> In article <e3o0d4$1tdc$1 at digitaldaemon.com>, Sean Kelly says...
>>> >
>>> >Jeremy wrote:
>>> >> Is there a way I can just write a whole class to a file?
>>> >>
>>> >> For example, why can't I do:
>>> >>
>>> >> file.writeExact(someClass, someClass.sizeof);
>>> >>
>>> >> This seems to just write 4 bytes, which must be the pointer.
>>> >>
>>> >> The compiler complains when I do this:
>>> >>
>>> >> file.writeExact(*someClass, (*someClass).sizeof);
>>> >>
>>> >> Saying that '*' is only used infront of pointers -- but aren't class always
>>> >> represented with pointers?
>>> >
>>> >They are, but I think they don't have the same semantics as pointers
>>> >insofar as the type is concerned. This is what inspired me to make the
>>> >"isizeof" proposal a few weeks ago, as there's currently no way to get a
>>> >class' size at compile-time. However, you can get it a run-time via:
>>> >
>>> >someClass.classinfo.init.length
>>> >
>>> >
>>> >Sean
>>>
>>> Interesting... so could this be done:
>>>
>>> file.writeExact(someClass, someClass.classinfo.init.length);
>>>
>>> to write the entire class to a file? (I'd like to do some zlib compression on it
>>> too :-D )
>>
>>Even with this, direct writing of a class like this will only work in the
>>simplest of cases. It won't dive into sub structures, for example,
>>char[]'s. Object serialization for the general case is a lot more
>>complicated.
>>
>>Later,
>>Brad
>
>Hrm... So after I write the class, I should also write the char[]'s seperately
>with another write function. This shouldn't be too much of a problem... my class
>consists mostly of floats/ints/doubles
>
>
offset contents
0 pointer to vtable
4 monitor
8... non-static members
from the D abi def.
so you also write and read pointer to vtbl, is this safe enough? especially when
exchanging between different program?
More information about the Digitalmars-d
mailing list