|
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