|
Boost : |
Subject: [boost] Details on boost::serialization
From: Per Nordlöw (per.nordlow_at_[hidden])
Date: 2009-08-02 16:31:46
I haven't found any documentation on the header bits of the archive formats
supported by boost::serialization. These are added as default when I
construct binary and text formats. I am especially interested in skipping
these headers completely in my application, that is serializing a char
should only result in one byte outputted to stream.
Does the headers basic_binary_[io]archive.hpp play any roles in this case? I
have tried to use them instead by I got some strange error messages so these
are commented out here.
Thanks in advance,
Nordlöw
Compileable sample code follows:
#include <fstream>
// #include <boost/archive/basic_text_iarchive.hpp>
// #include <boost/archive/basic_text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
class gps_position
{
public:
gps_position() {};
gps_position(int d, size_t m, float s) : degrees(d), minutes(m),
seconds(s) {}
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version) { ar & degrees
& minutes & seconds; }
int degrees;
size_t minutes;
float seconds;
};
template<class OA, class IA>
static void test(const gps_position & pos, const char * filename)
{
std::ofstream ofs(filename); // create and open a character archive for
output
{
OA oa(ofs);
oa << pos;
}
gps_position newg;
{
std::ifstream ifs(filename); // create and open an archive for input
IA ia(ifs);
ia >> newg;
}
}
int main() {
const gps_position p(35, 59, 24.567f);
// test<boost::archive::basic_text_oarchive,
// boost::archive::basic_text_iarchive>(p,
"boost_serialization_basic_text_archive");
test<boost::archive::text_oarchive,
boost::archive::text_iarchive>(p,
"boost_serialization_text_archive");
test<boost::archive::binary_oarchive,
boost::archive::binary_iarchive>(p,
"boost_serialization_binary_archive");
return 0;
}
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk