1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/src/work/peter/xy-reader.cc Wed Mar 30 14:29:55 2005 +0000
1.3 @@ -0,0 +1,69 @@
1.4 +#include <fstream>
1.5 +#include <iostream>
1.6 +
1.7 +#include <lemon/xy.h>
1.8 +#include <lemon/concept/maps.h>
1.9 +#include <lemon/error.h>
1.10 +#include <lemon/list_graph.h>
1.11 +#include <lemon/graph_reader.h>
1.12 +#include <lemon/graph_utils.h>
1.13 +
1.14 +using namespace lemon;
1.15 +
1.16 +typedef ListGraph Graph;
1.17 +typedef xy<double> Coordinates;
1.18 +typedef Graph::NodeMap<Coordinates> CoordinatesMap;
1.19 +typedef Graph::Node Node;
1.20 +
1.21 +class CoordReaderMap: public concept::WriteMap<Node, double>
1.22 +{
1.23 + CoordinatesMap * cm;
1.24 + char xoy;
1.25 +
1.26 +public:
1.27 + CoordReaderMap(char xory, CoordinatesMap * coordmap): concept::WriteMap<Node, double>() ,cm(coordmap)
1.28 + {
1.29 + switch(xory)
1.30 + {
1.31 + case 'x':
1.32 + case 'y':
1.33 + xoy=xory;
1.34 + break;
1.35 + default:
1.36 + throw UninitializedParameter() ;
1.37 + }
1.38 + }
1.39 +
1.40 + void set(Node node, double coord)
1.41 + {
1.42 + switch(xoy)
1.43 + {
1.44 + case 'x':
1.45 + (*cm)[node].x=coord;
1.46 + break;
1.47 + case 'y':
1.48 + (*cm)[node].y=coord;
1.49 + break;
1.50 + default:
1.51 + throw UninitializedParameter() ;
1.52 + }
1.53 + }
1.54 +};
1.55 +
1.56 +int main(void)
1.57 +{
1.58 + Graph g;
1.59 + CoordinatesMap cm(g);
1.60 +
1.61 + CoordReaderMap xreader('x',&cm);
1.62 + CoordReaderMap yreader('y',&cm);
1.63 +
1.64 + std::ifstream is("dijkstra_test.lemon");
1.65 +
1.66 + GraphReader<Graph> reader(is, g);
1.67 + reader.addNodeMap("coordinates_x", xreader);
1.68 + reader.addNodeMap("coordinates_y", yreader);
1.69 + reader.run();
1.70 +
1.71 + return 0;
1.72 +}