#include #include #include #include #include #include #include #include using namespace lemon; typedef ListGraph Graph; typedef xy Coordinates; typedef Graph::NodeMap CoordinatesMap; typedef Graph::Node Node; class CoordReaderMap: public MapBase { CoordinatesMap * cm; char xoy; public: CoordReaderMap(char xory, CoordinatesMap * coordmap): cm(coordmap) { switch(xory) { case 'x': case 'y': xoy=xory; break; default: throw UninitializedParameter() ; } } void set(Node node, double coord) { switch(xoy) { case 'x': (*cm)[node].x=coord; break; case 'y': (*cm)[node].y=coord; break; default: throw UninitializedParameter() ; } } }; int main(void) { Graph g; CoordinatesMap cm(g); CoordReaderMap xreader('x',&cm); CoordReaderMap yreader('y',&cm); std::ifstream is("dijkstra_test.lemon"); GraphReader reader(is, g); reader.addNodeMap("coordinates_x", xreader); reader.addNodeMap("coordinates_y", yreader); reader.run(); return 0; }