Changeset 185:33e45a9b868c in lemon-1.2
- Timestamp:
- 07/01/08 21:21:49 (16 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/lgf_writer.h
r165 r185 604 604 DigraphWriter& skipNodes() { 605 605 LEMON_ASSERT(!_skip_nodes, "Multiple usage of skipNodes() member"); 606 _skip_nodes = true; 606 607 return *this; 607 608 } … … 612 613 DigraphWriter& skipArcs() { 613 614 LEMON_ASSERT(!_skip_arcs, "Multiple usage of skipArcs() member"); 615 _skip_arcs = true; 614 616 return *this; 615 617 } … … 676 678 } 677 679 *_os << std::endl; 680 } 681 } 682 683 void createNodeIndex() { 684 _writer_bits::MapStorageBase<Node>* label = 0; 685 for (typename NodeMaps::iterator it = _node_maps.begin(); 686 it != _node_maps.end(); ++it) { 687 if (it->first == "label") { 688 label = it->second; 689 break; 690 } 691 } 692 693 if (label == 0) { 694 for (NodeIt n(_digraph); n != INVALID; ++n) { 695 std::ostringstream os; 696 os << _digraph.id(n); 697 _node_index.insert(std::make_pair(n, os.str())); 698 } 699 } else { 700 for (NodeIt n(_digraph); n != INVALID; ++n) { 701 std::string value = label->get(n); 702 _node_index.insert(std::make_pair(n, value)); 703 } 678 704 } 679 705 } … … 746 772 } 747 773 774 void createArcIndex() { 775 _writer_bits::MapStorageBase<Arc>* label = 0; 776 for (typename ArcMaps::iterator it = _arc_maps.begin(); 777 it != _arc_maps.end(); ++it) { 778 if (it->first == "label") { 779 label = it->second; 780 break; 781 } 782 } 783 784 if (label == 0) { 785 for (ArcIt a(_digraph); a != INVALID; ++a) { 786 std::ostringstream os; 787 os << _digraph.id(a); 788 _arc_index.insert(std::make_pair(a, os.str())); 789 } 790 } else { 791 for (ArcIt a(_digraph); a != INVALID; ++a) { 792 std::string value = label->get(a); 793 _arc_index.insert(std::make_pair(a, value)); 794 } 795 } 796 } 797 748 798 void writeAttributes() { 749 799 if (_attributes.empty()) return; … … 772 822 if (!_skip_nodes) { 773 823 writeNodes(); 824 } else { 825 createNodeIndex(); 774 826 } 775 827 if (!_skip_arcs) { 776 828 writeArcs(); 829 } else { 830 createArcIndex(); 777 831 } 778 832 writeAttributes(); … … 1116 1170 GraphWriter& skipNodes() { 1117 1171 LEMON_ASSERT(!_skip_nodes, "Multiple usage of skipNodes() member"); 1172 _skip_nodes = true; 1118 1173 return *this; 1119 1174 } … … 1124 1179 GraphWriter& skipEdges() { 1125 1180 LEMON_ASSERT(!_skip_edges, "Multiple usage of skipEdges() member"); 1181 _skip_edges = true; 1126 1182 return *this; 1127 1183 } … … 1188 1244 } 1189 1245 *_os << std::endl; 1246 } 1247 } 1248 1249 void createNodeIndex() { 1250 _writer_bits::MapStorageBase<Node>* label = 0; 1251 for (typename NodeMaps::iterator it = _node_maps.begin(); 1252 it != _node_maps.end(); ++it) { 1253 if (it->first == "label") { 1254 label = it->second; 1255 break; 1256 } 1257 } 1258 1259 if (label == 0) { 1260 for (NodeIt n(_graph); n != INVALID; ++n) { 1261 std::ostringstream os; 1262 os << _graph.id(n); 1263 _node_index.insert(std::make_pair(n, os.str())); 1264 } 1265 } else { 1266 for (NodeIt n(_graph); n != INVALID; ++n) { 1267 std::string value = label->get(n); 1268 _node_index.insert(std::make_pair(n, value)); 1269 } 1190 1270 } 1191 1271 } … … 1258 1338 } 1259 1339 1340 void createEdgeIndex() { 1341 _writer_bits::MapStorageBase<Edge>* label = 0; 1342 for (typename EdgeMaps::iterator it = _edge_maps.begin(); 1343 it != _edge_maps.end(); ++it) { 1344 if (it->first == "label") { 1345 label = it->second; 1346 break; 1347 } 1348 } 1349 1350 if (label == 0) { 1351 for (EdgeIt e(_graph); e != INVALID; ++e) { 1352 std::ostringstream os; 1353 os << _graph.id(e); 1354 _edge_index.insert(std::make_pair(e, os.str())); 1355 } 1356 } else { 1357 for (EdgeIt e(_graph); e != INVALID; ++e) { 1358 std::string value = label->get(e); 1359 _edge_index.insert(std::make_pair(e, value)); 1360 } 1361 } 1362 } 1363 1260 1364 void writeAttributes() { 1261 1365 if (_attributes.empty()) return; … … 1284 1388 if (!_skip_nodes) { 1285 1389 writeNodes(); 1390 } else { 1391 createNodeIndex(); 1286 1392 } 1287 1393 if (!_skip_edges) { 1288 1394 writeEdges(); 1395 } else { 1396 createEdgeIndex(); 1289 1397 } 1290 1398 writeAttributes();
Note: See TracChangeset
for help on using the changeset viewer.