Boost logo

Boost Users :

From: Dominick Layfield (dom.layfield_at_[hidden])
Date: 2007-08-21 16:15:04


>> > Obviously, I can just switch to a different serialization library
>> > (e.g. s11n).
>
> I believe that library also has serialization of pointers

Darn it! Foiled at every turn! :-)

If that is the case, maybe you might consider updating/clarifying the "Overview
-> Other implementations" section of the docs. There you imply that s11n
doesn't do this. (Maybe it didn't back when you wrote the docs.)

>> But as much as possible, I would like to stick with
>> > whatever is most "standard". And as part of the Boost family, I'm
>> > guessing that boost::serialization is top dog here. Would that be
>> > right? Is this library included in any of the proposed C++
>> > standards (TR2, C++0x)?
>
> This serialization library will never be part of any C++ standard.

Oh. That's disappointing. Why not? Too much bureaucracy involved?

> Because normally one doesn't want to change data while its being saved
> one will typically have something like the following in his program.
>
> FileSave(const MyData & md){
> // create archive
> oa << md; // no need for "const cast" because md is already "const"
> ...
> }

Okay. That makes a lot of sense.

Let me ask another newbie question, about how to get data in and out of an
archive. I have to work with legacy C-based code that delivers/accepts data in
a char* buffer. My code to serialize data into and out of this buffer is both
convoluted and inefficient. It looks something like this:

my_class mc;

void read_from_cbuffer(const char* buf, const size_t buf_sz) {
     std::string buf_str(buf, buf_sz);
     std::istringstream iss(buf_str);
     boost::archive::text_iarchive ia(iss);
     ia >> mc;
}

void write_to_cbuffer(char** buf_p, size_t* buf_sz_p) {
     std::ostringstream oss;
     boost::archive::text_oarchive oa(oss);
     oa << mc;
     *buf_p = new char[oss.str().size()];
     memcpy(*buf_p, oss.str().c_str(), oss.str().size());
     *buf_sz_p = oss.str().size();
}

Any suggestions about how this can be done better?

Thanks,

-- Dominick


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