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