diff -r 4a04bb856ac7 -r 2dd083dded66 gui/mapstorage.cc --- a/gui/mapstorage.cc Tue Aug 23 07:36:09 2005 +0000 +++ b/gui/mapstorage.cc Tue Aug 23 15:57:12 2005 +0000 @@ -11,6 +11,9 @@ nodemap_storage["id"] = new Graph::NodeMap(graph); edgemap_storage["id"] = new Graph::EdgeMap(graph); + + nodemap_default["id"] = 1.0; + edgemap_default["id"] = 1.0; } MapStorage::~MapStorage() @@ -125,6 +128,7 @@ { bool read_x = false; bool read_y = false; + bool read_edge_id = false; try { LemonReader lreader(filename); @@ -182,6 +186,16 @@ return 1; } + if (!read_edge_id) + { + edgemap_storage["id"] = new Graph::EdgeMap(graph); + int i = 1; + for (EdgeIt e(graph); e != INVALID; ++e) + { + (*edgemap_storage["id"])[e] = i++; + } + } + if (!read_x || !read_y) { int node_num = 0; @@ -210,6 +224,17 @@ { nodemap_default[it->first] = 0.0; } + else if (it->first == "id") + { + NodeIt n(graph); + double max = (*nodemap_storage["id"])[n]; + for (; n != INVALID; ++n) + { + if ((*nodemap_storage["id"])[n] > max) + max = (*nodemap_storage["id"])[n]; + } + nodemap_default["id"] = max + 1.0; + } } for (std::map*>::const_iterator it = edgemap_storage.begin(); it != edgemap_storage.end(); ++it) @@ -218,6 +243,17 @@ { edgemap_default[it->first] = 0.0; } + else + { + EdgeIt e(graph); + double max = (*edgemap_storage["id"])[e]; + for (; e != INVALID; ++e) + { + if ((*edgemap_storage["id"])[e] > max) + max = (*edgemap_storage["id"])[e]; + } + edgemap_default["id"] = max + 1.0; + } } return 0; @@ -267,12 +303,14 @@ for (std::map::iterator it = nodemap_default.begin(); it != nodemap_default.end(); ++it) { - nodemap_default.erase(it); + if (it->first != "id") + nodemap_default.erase(it); } for (std::map::iterator it = edgemap_default.begin(); it != edgemap_default.end(); ++it) { - edgemap_default.erase(it); + if (it->first != "id") + edgemap_default.erase(it); } graph.clear(); file_name = "";