COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/work/deba/graph_io_test.cc @ 1037:3eaff8d04171

Last change on this file since 1037:3eaff8d04171 was 1037:3eaff8d04171, checked in by Balazs Dezso, 19 years ago

graph_io under construction
This is a working version, but needs more improvments.

todo:

documention + fix the file format
improve the exception system

add some possible asserts

tutorials

File size: 2.2 KB
Line 
1#include <lemon/smart_graph.h>
2
3#include "map_utils.h"
4
5
6#include "graph_reader.h"
7#include "graph_writer.h"
8
9#include <iostream>
10#include <fstream>
11
12using namespace std;
13using namespace lemon;
14
15int main() {
16  ifstream input("test.lgf");
17  SmartGraph graph;
18  GraphReader<SmartGraph> reader(input, graph);
19
20  SmartGraph::NodeMap<int> id(graph);
21  reader.readNodeMap("id", id);
22
23  SmartGraph::NodeMap<int> cost(graph);
24  reader.readNodeMap("cost", cost);
25 
26  SmartGraph::NodeMap<string> color(graph);
27  reader.readNodeMap("color", color);
28
29  SmartGraph::NodeMap<string> description(graph);
30  reader.readNodeMap<QuotedStringReader>("description", description);
31
32  SmartGraph::EdgeMap<char> mmap(graph);
33  reader.readEdgeMap("mmap", mmap);
34
35  reader.skipEdgeMap<QuotedStringReader>("description");
36
37  SmartGraph::Node source;
38  reader.readNode("source", source);
39 
40  SmartGraph::Edge newedge;
41  reader.readEdge("newedge", newedge);
42
43  try {
44    reader.read();
45  } catch (IOException& e) {
46    cerr << e.what() << endl;
47  } catch (Exception e) {
48    cerr << e.what() << endl;
49  }
50  for (SmartGraph::NodeIt it(graph); it != INVALID; ++it) {
51    cout << cost[it] << ' ' << color[it] << ' ' << description[it] << endl;
52  }
53
54  for (SmartGraph::EdgeIt it(graph); it != INVALID; ++it) {
55    cout << mmap[it] << ' ' << id[graph.source(it)] << ' ' << id[graph.target(it)]  << endl;
56  }
57
58  cout << id[source] << ' ' << cost[source] << ' ' << color[source] << ' ' << description[source] << endl;
59  cout << mmap[newedge] << ' ' << id[graph.source(newedge)] << ' ' << id[graph.target(newedge)]  << endl;
60
61  ofstream output("copy.lgf");
62  GraphWriter<SmartGraph> writer(output, graph);
63 
64  DescriptorMap<SmartGraph, SmartGraph::Node, SmartGraph::NodeIt, SmartGraph::NodeMap<int> > node_ids(graph);
65 
66  writer.writeNodeMap("id", node_ids);
67  writer.writeNodeMap<QuotedStringWriter>("format", description);
68
69  DescriptorMap<SmartGraph, SmartGraph::Edge, SmartGraph::EdgeIt, SmartGraph::EdgeMap<int> > edge_ids(graph);
70
71  writer.writeEdgeMap("id", edge_ids);
72  writer.writeEdgeMap("chars", mmap);
73 
74  writer.writeNode("source", node_ids.inverse()[3]);
75  writer.writeEdge("elek", edge_ids.inverse()[6]);
76  writer.write();
77 
78  return 0;
79}
Note: See TracBrowser for help on using the repository browser.