|
Boost : |
From: Russell Hind (rh_gmane_at_[hidden])
Date: 2004-10-21 04:00:21
Robert Ramey wrote:
>
> It certainly should - send me a code snippet. The package includes tests of
>
If I change this to use text_i/o archive then it works fine, but with
XML, m_Version is set to zero when writing, but set to 3 when reading
(this is with latest trunk from just before branch for release yesterday
morning). Also, if I provide a version number for the class of anything
but 0 then it works find (e.g. 1) but 0 or no version lead to the
ambiguity (running under borland bcc32 5.6.4)
#include <fstream>
#include <iostream>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>
class Test_c
{
public:
Test_c(void) : m_Version(99999999)
{
}
template <typename ArchiveT>
void serialize(ArchiveT& ar, const unsigned int version)
{
m_Version = version;
}
unsigned int m_Version;
};
int main(int argc, char** argv)
{
Test_c Test;
{
std::ofstream ofs("C:\\test.xml");
boost::archive::xml_oarchive toa(ofs);
toa & BOOST_SERIALIZATION_NVP(Test);
std::cout << "Test version = " << Test.m_Version << std::endl;
}
{
std::ifstream ifs("C:\\test.xml");
boost::archive::xml_iarchive tia(ifs);
tia & BOOST_SERIALIZATION_NVP(Test);
std::cout << "Test version = " << Test.m_Version << std::endl;
}
return 0;
}
>
> serialization traits determine whether or not a class is versioned. Default
> is for non primititve types to be versioned and the default version number
> is 0. The usage of version number when not necessary could be a performance
> issue so there is the option of setting serialization traits for any type so
> that versioning isn't done. For example, this is not done for STL
> collections. Review the section of the documentation "serialization traits"
>
Thanks, I will do.
Cheers
Russell
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk