Range interface for std.serialization

Dicebot public at dicebot.lv
Thu Aug 22 08:49:04 PDT 2013


On Thursday, 22 August 2013 at 15:33:07 UTC, Johannes Pfau wrote:
> The reason is simple: In serialization it is not common to 
> post-process
> the serialized data as far as I know. Usually it's either 
> written to a
> file or sent over network which are perfect examples of Streams 
> (or
> output ranges).

Hm but in this model it is file / socket which is an OutputRange, 
isn't it? Serializer itself just provides yet another InputRange 
which can be fed to target OutputRange. Am I getting this part 
wrong?

> But InputRanges are limited to the same type for all elements, 
> the
> "serialize" call isn't.

I was thinking about this but do we have any way to express 
non-monotone range in D? Variant seems only option, it implies 
that any format used by Archiver must always store type 
information though.

> Of course you can use Variant. But what about
> big structs?

After some thinking I come to conclusion that is simply a matter 
of two `data` ranges - one parametrized by output type and other 
"raw". Latter than can output stuff in string chunks of undefined 
size (as small as serialization implementation allows). Does that 
help?


More information about the Digitalmars-d mailing list