|
Boost Users : |
From: Marc Wäckerlin (marc_at_[hidden])
Date: 2007-01-22 06:46:29
The documentation "Serialization Archive Class Reference" on
http://boost.org/libs/serialization/doc/archive_reference.html is wrong, or
at lease very incomplete:
Brian Stempel wrote:
> I am wanting to serialize some C++ data structures
> into a binary stream, and I'm wanting to send that
> binary stream to an embedded python interpreter, where
> it can unpack the data and make use of it.
I have exactly the same problem: I need several kind of my own defined
streamer. One is to write binary data 1:1, as Brian would like to do; my
other idea is: Use the operator& syntax to stream either into a file, or
into an SQL database, depending on the streamer (in my idea, the
SQL-streamer would be similar to the existing XML-archive, but the XML-tags
would here name tables and column names).
Now I started by reading the "Serialization Archive Class Reference" on
http://boost.org/libs/serialization/doc/archive_reference.html, which
describes how to implement my own archive.
Unfortunately, if I copy the code from the "simplest possible output
archive" there into a header file, then write a code file that does nothing
except including that header, the result is not compilable (GNU g++ 4.1.2).
First problem (solved):
friend class boost::archive::load_access is undefined, so I have to add a
forward declaration:
namespace boost {
namespace archive {
class load_access;
}
}
Second problem (solved):
I need to include boost/archive/detail/iserializer.hpp, otherwise I get:
/usr/include/boost/archive/detail/interface_iarchive.hpp: In member
function âconst boost::archive::detail::basic_pointer_iserializer*
boost::archive::detail::interface_iarchive<Archive>::register_type(T*)â:
/usr/include/boost/archive/detail/interface_iarchive.hpp:54:
error: âinstantiate_pointer_iserializerâ is not a member
of âboost::archive::detailâ
/usr/include/boost/archive/detail/interface_iarchive.hpp:58: error: invalid
use of undefined type âconst struct
boost::archive::detail::basic_pointer_iserializerâ
/usr/include/boost/archive/detail/basic_iarchive.hpp:41: error: forward
declaration of âconst struct
boost::archive::detail::basic_pointer_iserializerâ
Then I can compile if the "main()" is empty.
Third problem (unsolved):
When I try to instantiate the archive abd store something in the archive,
then it does not compile at all. See the attached files test.cpp and
errors.
Try: g++ test.cpp
What's missing?
One point is: There's no default constructor!
- What is meant by the "int flags" parameter?
- What else is missing?
- Who can provide a minimal sample that works?
Thank you
Regards
Marc
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