os/ossrv/stdcpp/tsrc/Boost_test/graph/src/serialize.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 // Copyright (C) 2006 Trustees of Indiana University
     2 //
     3 // Distributed under the Boost Software License, Version 1.0.
     4 // (See accompanying file LICENSE_1_0.txt or copy at
     5 // http://www.boost.org/LICENSE_1_0.txt)
     6 /*
     7  * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
     8 */
     9 
    10 
    11 #include <boost/config.hpp>
    12 #include <iostream>
    13 #include <fstream>
    14 #include <string>
    15 #include <boost/tuple/tuple.hpp>
    16 #include <boost/graph/adjacency_list.hpp>
    17 #include <boost/graph/visitors.hpp>
    18 #include <boost/graph/breadth_first_search.hpp>
    19 #include <map>
    20 #include <boost/graph/adj_list_serialize.hpp>
    21 #include <boost/archive/xml_iarchive.hpp>
    22 #include <boost/archive/xml_oarchive.hpp>
    23 
    24 #ifdef __SYMBIAN32__
    25 #include "std_log_result.h"
    26 #define LOG_FILENAME_LINE __FILE__, __LINE__
    27 #endif
    28 struct vertex_properties {
    29   std::string name;
    30 
    31   template<class Archive>
    32   void serialize(Archive & ar, const unsigned int version) {
    33     ar & BOOST_SERIALIZATION_NVP(name);
    34   }  
    35 };
    36 
    37 struct edge_properties {
    38   std::string name;
    39 
    40   template<class Archive>
    41   void serialize(Archive & ar, const unsigned int version) {
    42     ar & BOOST_SERIALIZATION_NVP(name);
    43   }  
    44 };
    45 
    46 using namespace boost;
    47 
    48 typedef adjacency_list<vecS, vecS, undirectedS, 
    49                vertex_properties, edge_properties> Graph;
    50 
    51 typedef graph_traits<Graph>::vertex_descriptor vd_type;
    52 
    53 
    54 typedef adjacency_list<vecS, vecS, undirectedS, 
    55                vertex_properties> Graph_no_edge_property;
    56 
    57 int main()
    58 {
    59   {
    60     std::ofstream ofs("./kevin-bacon2.dat");
    61     archive::xml_oarchive oa(ofs);
    62     Graph g;
    63 		vertex_properties vp;
    64 		vp.name = "A";
    65 		vd_type A = add_vertex( vp, g );
    66 		vp.name = "B";
    67 		vd_type B = add_vertex( vp, g );
    68 
    69 		edge_properties ep;
    70 		ep.name = "a";
    71 		add_edge( A, B, ep, g);
    72 
    73     oa << BOOST_SERIALIZATION_NVP(g);
    74 
    75     Graph_no_edge_property g_n;
    76     oa << BOOST_SERIALIZATION_NVP(g_n);
    77   }
    78 
    79   {
    80     std::ifstream ifs("./kevin-bacon2.dat");
    81     archive::xml_iarchive ia(ifs);
    82     Graph g;
    83     ia >> BOOST_SERIALIZATION_NVP(g);
    84 
    85 		if  (!( g[*(vertices( g ).first)].name == "A" )) return -1;
    86 
    87     Graph_no_edge_property g_n;
    88     ia >> BOOST_SERIALIZATION_NVP(g_n);
    89   }
    90   
    91   #ifdef __SYMBIAN32__
    92   
    93   	std_log(LOG_FILENAME_LINE,"[End Test Case ]");
    94 
    95 	testResultXml("serialize");
    96 	close_log_file();
    97 #endif
    98   return 0;
    99 }