Boost logo

Boost Users :

From: Alejandro Rubinos Carbajal (rubinoes_at_[hidden])
Date: 2007-06-12 11:53:35


how should i do that, the thing is that i am working in a network linux home
and i have to find a way to be make that change in my own proyect not
modificating the boost/multiarray.hpp. You will have to excuse my english i
am from cuba.

i have this code but i don't know how to call it inside a class were i
already have a serialize methods for other parameters of the class, i also
want to make an xml output file.

#ifndef BOOST_MULTI_ARRAY_S11N_HPP
#define BOOST_MULTI_ARRAY_S11N_HPP

//For serialization
#include <iomanip>
#include <iostream>
#include <fstream>

#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>

#include <boost/serialization/split_free.hpp>
//#include <boost/serialization/export.hpp>

//For multi_array
#include <boost/multi_array.hpp>

namespace boost {
namespace serialization {
//-----------------------------------------------------------------------------
template< class Archive, class T >
void save( Archive & ar, const multi_array<T,2>& t,
                   const unsigned int /* version */ )
{
        unsigned int rows = t.shape()[0];
        unsigned int cols = t.shape()[1];
        ar & rows & cols;
        for ( unsigned int i=0; i<rows; ++i ) {
                for ( unsigned int j=0; j<cols; ++j ) {
                        ar & t[i][j];
                }
        }
}
        
template< class Archive, class T >
void load( Archive & ar, multi_array<T,2>& t,
                   const unsigned int /* version */ )
{
        unsigned int rows, cols;
        ar & rows & cols;
        t.resize( boost::extents[rows][cols] );
        for ( unsigned int i=0; i<rows; ++i ) {
                for ( unsigned int j=0; j<cols; ++j ) {
                        ar & t[i][j];
                }
        }
}

template<class Archive, class T>
inline void serialize( Archive & ar, multi_array<T,2>& t,
                const unsigned int file_version )
{
        split_free(ar, t, file_version);
}

On 6/12/07, Matthias Troyer <troyer_at_[hidden]> wrote:
>
>
> On Jun 12, 2007, at 4:54 PM, Alejandro Rubinos Carbajal wrote:
>
> > I want to know how can i serialize with boost::serialization a two
> > dimensions boost::multiarray.
>
> You will need to implement serialization support in boost::multiarray
>
> Matthias
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>



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