$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r57498 - in sandbox/statistics/detail/fusion: boost/statistics/detail/fusion/map/serialization libs/statistics/detail/fusion/example libs/statistics/detail/fusion/src
From: erwann.rogard_at_[hidden]
Date: 2009-11-08 19:43:04
Author: e_r
Date: 2009-11-08 19:43:03 EST (Sun, 08 Nov 2009)
New Revision: 57498
URL: http://svn.boost.org/trac/boost/changeset/57498
Log:
m/a
Added:
   sandbox/statistics/detail/fusion/boost/statistics/detail/fusion/map/serialization/
   sandbox/statistics/detail/fusion/boost/statistics/detail/fusion/map/serialization/include.hpp   (contents, props changed)
   sandbox/statistics/detail/fusion/boost/statistics/detail/fusion/map/serialization/loader.hpp   (contents, props changed)
   sandbox/statistics/detail/fusion/boost/statistics/detail/fusion/map/serialization/saver.hpp   (contents, props changed)
   sandbox/statistics/detail/fusion/libs/statistics/detail/fusion/example/serialize.cpp   (contents, props changed)
   sandbox/statistics/detail/fusion/libs/statistics/detail/fusion/example/serialize.h   (contents, props changed)
Text files modified: 
   sandbox/statistics/detail/fusion/libs/statistics/detail/fusion/src/main.cpp |     3 ++-                                     
   1 files changed, 2 insertions(+), 1 deletions(-)
Added: sandbox/statistics/detail/fusion/boost/statistics/detail/fusion/map/serialization/include.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/detail/fusion/boost/statistics/detail/fusion/map/serialization/include.hpp	2009-11-08 19:43:03 EST (Sun, 08 Nov 2009)
@@ -0,0 +1,15 @@
+//////////////////////////////////////////////////////////////////////////////
+// detail::fusion::map::serialization::include.hpp                          //
+//                                                                          //
+//  (C) Copyright 2009 Erwann Rogard                                        //
+//  Use, modification and distribution are subject to the                   //
+//  Boost Software License, Version 1.0. (See accompanying file             //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_STATISTICS_DETAIL_FUSION_MAP_SERIALIZATION_INCLUDE_HPP_ER_2009
+#define BOOST_STATISTICS_DETAIL_FUSION_MAP_SERIALIZATION_INCLUDE_HPP_ER_2009
+
+#include <boost/statistics/detail/fusion/map/serialization/loader.hpp>
+#include <boost/statistics/detail/fusion/map/serialization/saver.hpp>
+
+#endif
\ No newline at end of file
Added: sandbox/statistics/detail/fusion/boost/statistics/detail/fusion/map/serialization/loader.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/detail/fusion/boost/statistics/detail/fusion/map/serialization/loader.hpp	2009-11-08 19:43:03 EST (Sun, 08 Nov 2009)
@@ -0,0 +1,56 @@
+//////////////////////////////////////////////////////////////////////////////
+// detail::fusion::map::serialization::loader.hpp                           //
+//                                                                          //
+//  (C) Copyright 2009 Erwann Rogard                                        //
+//  Use, modification and distribution are subject to the                   //
+//  Boost Software License, Version 1.0. (See accompanying file             //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_STATISTICS_DETAIL_FUSION_MAP_SERIALIZATION_LOADER_HPP_ER_2009
+#define BOOST_STATISTICS_DETAIL_FUSION_MAP_SERIALIZATION_LOADER_HPP_ER_2009
+#include <boost/fusion/support/pair.hpp>
+#include <boost/fusion/include/pair.hpp>
+#include <boost/fusion/algorithm/iteration/for_each.hpp>
+#include <boost/fusion/include/for_each.hpp>
+
+namespace boost{
+namespace statistics{
+namespace detail{
+namespace fusion{
+namespace map{
+
+// Implementation is suggested here
+// http://www.boost.org/doc/libs/1_40_0/libs/fusion/doc/html/fusion/quick_start.html
+// under AssociativeContainer
+template<typename Ia>
+struct loader
+{
+
+	loader(Ia& ar):ar_(ar){}
+    loader(const loader& that):ar_(that.ar_){}
+
+    template <typename Pair>
+    void operator()(Pair& data) const
+    {
+        (this->ar_ >> data.second);
+    }
+
+	private:
+	Ia& ar_;    
+};
+
+template <typename Stuff,typename Ia>
+void load(Stuff & stuff, Ia& ar)
+{
+	typedef loader<Ia> loader_;
+    boost::fusion::for_each(stuff, loader_(ar));
+}
+
+
+}// map
+}// fusion
+}// detail
+}// statistics
+}// boost
+
+#endif
\ No newline at end of file
Added: sandbox/statistics/detail/fusion/boost/statistics/detail/fusion/map/serialization/saver.hpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/detail/fusion/boost/statistics/detail/fusion/map/serialization/saver.hpp	2009-11-08 19:43:03 EST (Sun, 08 Nov 2009)
@@ -0,0 +1,56 @@
+//////////////////////////////////////////////////////////////////////////////
+// detail::fusion::map::serialization::saver.hpp                            //
+//                                                                          //
+//  (C) Copyright 2009 Erwann Rogard                                        //
+//  Use, modification and distribution are subject to the                   //
+//  Boost Software License, Version 1.0. (See accompanying file             //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)        //
+//////////////////////////////////////////////////////////////////////////////
+#ifndef BOOST_STATISTICS_DETAIL_FUSION_MAP_SERIALIZATION_SAVER_HPP_ER_2009
+#define BOOST_STATISTICS_DETAIL_FUSION_MAP_SERIALIZATION_SAVER_HPP_ER_2009
+#include <boost/fusion/support/pair.hpp>
+#include <boost/fusion/include/pair.hpp>
+#include <boost/fusion/algorithm/iteration/for_each.hpp>
+#include <boost/fusion/include/for_each.hpp>
+
+namespace boost{
+namespace statistics{
+namespace detail{
+namespace fusion{
+namespace map{
+
+// Implementation is suggested here
+// http://www.boost.org/doc/libs/1_40_0/libs/fusion/doc/html/fusion/quick_start.html
+// under AssociativeContainer
+template<typename Oa>
+struct saver
+{
+
+	saver(Oa& ar):ar_(ar){}
+    saver(const saver& that):ar_(that.ar_){}
+
+    template <typename Pair>
+    void operator()(Pair const& data) const
+    {
+        this->ar_ << data.second;
+    }
+
+	private:
+	Oa& ar_;    
+};
+
+template <typename Stuff,typename Oa>
+void save(Stuff const& stuff,Oa& ar)
+{
+	typedef saver<Oa> saver_;
+    boost::fusion::for_each(stuff, saver_(ar));
+}
+
+
+}// map
+}// fusion
+}// detail
+}// statistics
+}// boost
+
+#endif
\ No newline at end of file
Added: sandbox/statistics/detail/fusion/libs/statistics/detail/fusion/example/serialize.cpp
==============================================================================
--- (empty file)
+++ sandbox/statistics/detail/fusion/libs/statistics/detail/fusion/example/serialize.cpp	2009-11-08 19:43:03 EST (Sun, 08 Nov 2009)
@@ -0,0 +1,69 @@
+///////////////////////////////////////////////////////////////////////////////
+// statistics::detail::fusion::example::serialize.cpp                  		 //
+//                                                                           //
+//  Copyright 2009 Erwann Rogard. Distributed under the Boost                //
+//  Software License, Version 1.0. (See accompanying file                    //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)         //
+/////////////////////////////////////////////////////////////////////////////// 
+#include <vector>
+#include <fstream>
+#include <string>
+#include <boost/mpl/int.hpp>
+#include <boost/utility/result_of.hpp>
+#include <boost/assert.hpp>
+#include <boost/range.hpp>
+#include <boost/archive/text_oarchive.hpp>
+#include <boost/archive/text_iarchive.hpp>
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+#include <boost/fusion/include/at_key.hpp>
+#include <boost/fusion/container/map.hpp>
+#include <boost/fusion/include/map.hpp>
+#include <boost/fusion/include/map_fwd.hpp>
+#include <boost/fusion/include/make_map.hpp>
+
+#include <boost/statistics/detail/fusion/map/serialization/include.hpp>
+#include <libs/statistics/detail/fusion/example/serialize.h>
+
+void example_serialize(std::ostream& os){
+
+    os << "example_serialize -> ";
+
+    using namespace boost;
+    namespace stat = boost::statistics::detail;
+	namespace sf = stat::fusion;
+
+    typedef mpl::int_<0> k_0_;
+    typedef mpl::int_<1> k_1_;
+    typedef int d_0_;
+    typedef int d_1_;
+    typedef fusion::pair<k_0_,d_0_> p_0_;
+    typedef fusion::pair<k_1_,d_1_> p_1_;
+    typedef fusion::map<p_0_,p_1_>  map_;
+    typedef boost::archive::text_iarchive           ia_;
+    typedef boost::archive::text_oarchive           oa_;
+    typedef std::ifstream                           ifs_;
+    typedef std::ofstream                           ofs_;
+	typedef std::string 							str_;
+
+    const str_ path = "./serialize";
+    const d_0_ d_0 = 0;
+    const d_1_ d_1 = 1;
+    
+    map_ map = boost::fusion::make_map<k_0_,k_1_>(d_0,d_1);
+    {
+    	ofs_ ofs(path.c_str());
+    	oa_ oa(ofs);
+		sf::map::save(map,oa);
+    }
+    {
+    	map_ map;
+    	ifs_ ifs(path.c_str());
+    	ia_ ia(ifs);
+		sf::map::load(map,ia);
+		BOOST_ASSERT(boost::fusion::at_key<k_0_>(map) == d_0);        
+		BOOST_ASSERT(boost::fusion::at_key<k_1_>(map) == d_1);        
+    }
+
+    os << "<-" << std::endl;
+
+}
Added: sandbox/statistics/detail/fusion/libs/statistics/detail/fusion/example/serialize.h
==============================================================================
--- (empty file)
+++ sandbox/statistics/detail/fusion/libs/statistics/detail/fusion/example/serialize.h	2009-11-08 19:43:03 EST (Sun, 08 Nov 2009)
@@ -0,0 +1,14 @@
+///////////////////////////////////////////////////////////////////////////////
+// statistics::detail::fusion::example::serialize.h                        	 //
+//                                                                           //
+//  Copyright 2009 Erwann Rogard. Distributed under the Boost                //
+//  Software License, Version 1.0. (See accompanying file                    //
+//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)         //
+/////////////////////////////////////////////////////////////////////////////// 
+#ifndef LIBS_STATISTICS_DETAIL_FUSION_EXAMPLE_SERIALIZE_HPP_ER_2009
+#define LIBS_STATISTICS_DETAIL_FUSION_EXAMPLE_SERIALIZE_HPP_ER_2009
+#include <iostream>
+
+void example_serialize(std::ostream&);
+
+#endif
\ No newline at end of file
Modified: sandbox/statistics/detail/fusion/libs/statistics/detail/fusion/src/main.cpp
==============================================================================
--- sandbox/statistics/detail/fusion/libs/statistics/detail/fusion/src/main.cpp	(original)
+++ sandbox/statistics/detail/fusion/libs/statistics/detail/fusion/src/main.cpp	2009-11-08 19:43:03 EST (Sun, 08 Nov 2009)
@@ -7,11 +7,12 @@
 /////////////////////////////////////////////////////////////////////////////// 
 #include <iostream>
 #include <libs/statistics/detail/fusion/example/at_key.h>
-#include <boost/statistics/detail/fusion/joint_view/bind.hpp>
+#include <libs/statistics/detail/fusion/example/serialize.h>
 
 int main(){
 
     example_at_key_iterator(std::cout);
+    example_serialize(std::cout);
 
     return 0;
 }