hegyi@1277: #include hegyi@1277: #include hegyi@1277: hegyi@1277: #include alpar@1278: #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@1286: typedef Graph::EdgeIt EdgeIt; hegyi@1286: typedef Graph::NodeIt NodeIt; hegyi@1277: hegyi@1286: class CoordReaderMap: public MapBase hegyi@1277: { hegyi@1286: CoordinatesMap & cm; hegyi@1277: char xoy; hegyi@1277: hegyi@1277: public: hegyi@1286: CoordReaderMap(char xory, CoordinatesMap & coordmap): 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@1286: cm[node].x=coord; hegyi@1277: break; hegyi@1277: case 'y': hegyi@1286: 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@1286: CoordReaderMap xreader('x',cm); hegyi@1286: CoordReaderMap yreader('y',cm); hegyi@1277: hegyi@1286: std::ifstream is("graphocska.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@1286: std::cout << "Megvagyok" << std::endl; hegyi@1286: hegyi@1286: for (NodeIt i(g); i!=INVALID; ++i) hegyi@1286: std::cout << " " << g.id(i) << " " << cm[i]; hegyi@1286: std::cout << std::endl; hegyi@1286: hegyi@1277: return 0; hegyi@1277: }