|
Boost Users : |
Subject: Re: [Boost-users] boost serialization stream error question
From: Robert Ramey (ramey_at_[hidden])
Date: 2010-01-31 20:11:19
OvermindDL1 wrote:
> On Sun, Jan 31, 2010 at 10:34 AM, Robert Ramey <ramey_at_[hidden]> wrote:
>>> The problem is caused by double values less than DBL_MIN.
>>> Apparently, streaming such values in causes the input stream
>>> fail_bit to be set, which causes the serialization lib to throw an
>>> exception.
>>
>> The standard stream library writes out NaN values as text, but
>> cannot read them.
>>
>> It shows up in various places besides the serialization library -
>> e.g. lexical_cast.
>>
>> Work has been done on this. I believe that there is code in vault
>> which deals with this.
>
> Why not just memcpy the double into the stream? (or bitcast it to long
> long or so?)
text and xml archives are meant to be portable. This would conflict
with that requirement. Then there is the fact that putting binary data
into the text stream might create some conflicts depending on the
characterset etc. In general, one cannot put binary data into a text
stream and be able to count on getting it back.
So here are a couple of options in order of my personal preference.
a) Just avoid saving and restoring NaN's. They just waste space
in the archive anyway. There a number ways to do this.
b) find the fixup for floating point stream in either the vault and/or
sand box and install that.
b) wrap the double in a binary_wrapper and serialize that. This
would also break portability.
Robert Ramey
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net