std.jgrandson

Jacob Carlborg via Digitalmars-d digitalmars-d at puremagic.com
Mon Aug 4 11:38:23 PDT 2014


On 2014-08-04 16:55, Dicebot wrote:

> That is exactly the problem - if `structToJson` won't be provided,
> complaints are inevitable, it is too basic feature to wait for
> std.serialization :(

Hmm, yeah, that's a problem.

> Simplified serialization algorithm:
>
> 1) write (cast(void*) &struct)[0..struct.sizeof] to target buffer
> 2) write any of array content to the same buffer after the struct
> 3.1) if array contains structs, recursion
> 3.2) go back to buffer[0..struct.sizeof] slice and update array fields
> to store an index in the same buffer instead of actual ptr
>
> Simplified deserialization algorithm:
>
> 1) recursively traverse the struct and replace array index offsets with
> real slices to the buffer

I see. I need to think a bit about this.

> (I don't want to bother with getting copyright permissions to publish
> actual code)

Fair enough. The above was quite descriptive.

> I am pretty sure that this is not the only optimized serialization
> approach out there that does not fit in a content-insensitive
> primitive-based traversal scheme. And we won't Phobos stuff to be
> blazingly fast which can lead to situation where new data module will
> circumvent the std.serialization API to get more performance.

I don't like the idea of having to reimplement serialization for each 
data type that can be generalized.

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list