$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r58023 - sandbox/statistics/detail/multi_array/libs/statistics/detail/multi_array/example
From: erwann.rogard_at_[hidden]
Date: 2009-11-28 18:05:34
Author: e_r
Date: 2009-11-28 18:05:34 EST (Sat, 28 Nov 2009)
New Revision: 58023
URL: http://svn.boost.org/trac/boost/changeset/58023
Log:
m
Text files modified: 
   sandbox/statistics/detail/multi_array/libs/statistics/detail/multi_array/example/serialize.cpp |    51 +++++++++++++++++++++++++++++++++++++-- 
   1 files changed, 48 insertions(+), 3 deletions(-)
Modified: sandbox/statistics/detail/multi_array/libs/statistics/detail/multi_array/example/serialize.cpp
==============================================================================
--- sandbox/statistics/detail/multi_array/libs/statistics/detail/multi_array/example/serialize.cpp	(original)
+++ sandbox/statistics/detail/multi_array/libs/statistics/detail/multi_array/example/serialize.cpp	2009-11-28 18:05:34 EST (Sat, 28 Nov 2009)
@@ -9,8 +9,12 @@
 #include <vector>
 #include <string>
 #include <fstream>
+#include <boost/mpl/int.hpp>
+#include <boost/fusion/include/make_map.hpp>
+#include <boost/fusion/include/at_key.hpp>
 #include <boost/multi_array.hpp>
 #include <boost/statistics/detail/multi_array/serialization/serialize.hpp>
+#include <boost/statistics/detail/fusion/serialization/include.hpp>
 #include <boost/serialization/serialization.hpp>
 #include <boost/archive/text_oarchive.hpp>
 #include <boost/archive/text_iarchive.hpp>
@@ -29,13 +33,16 @@
     typedef std::ifstream ifs_;
         typedef boost::archive::text_oarchive oa_;
         typedef boost::archive::text_iarchive ia_;
-    typedef double val_;
+    typedef unsigned val_;
     typedef std::vector<val_> vec_;
+    typedef boost::mpl::int_<0> tag_;
+    typedef boost::fusion::result_of::make_map<tag_,val_>::type map_;
         typedef boost::multi_array<val_, 2> array_;
         typedef boost::multi_array<vec_,2> array_vec_;
+    typedef boost::multi_array<map_,2> array_map_;
     typedef boost::array<ma::multi_array_base::index,2> extents_;
-    unsigned n0 = 2;
-    unsigned n1 = 2;
+    const unsigned n0 = 2;
+    const unsigned n1 = 2;
         {
             const str_ path = "./multi_array_serialization";
             {
@@ -111,6 +118,44 @@
                     }
             }
         }
+	{
+    	const str_ path = "./multi_array_serialization3";
+    	{
+
+        
+    		ofs_ ofs(path.c_str());
+	    	oa_ oa(ofs);
+    		extents_ extents = {{ n0, n1 }};
+			array_map_ a(extents);
+			for(unsigned i = 0; i<n0; i++)
+    		{
+    			for(unsigned j = 0; j<n1; j++)
+        		{
+					map_ map = boost::fusion::make_map<tag_>(i * n1 + j);
+					a[i][j] = map; 
+        		}
+    		}
+        	oa << a;
+    	}
+    	{
+    		ifs_ ifs(path.c_str());
+    		ia_ ia(ifs);
+    		array_map_ a;
+        	ia >> a;
+			for(unsigned i = 0; i<n0; i++)
+    		{
+    			for(unsigned j = 0; j<n1; j++)
+        		{
+                	map_ map =  a[i][j]; 
+                	val_ val = boost::fusion::at_key<tag_>(map);
+					BOOST_ASSERT(
+                    	val == i * n1 + j
+                    ); 
+                	os  << val << ' ';
+        		}
+    		}
+    	}
+	}
 
         os << "<-" << std::endl;
 }