... | ... |
@@ -604,4 +604,5 @@ |
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,4 +613,5 @@ |
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 |
} |
... | ... |
@@ -679,4 +681,28 @@ |
679 | 681 |
} |
680 | 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 |
} |
|
704 |
} |
|
705 |
} |
|
706 |
|
|
681 | 707 |
void writeArcs() { |
682 | 708 |
_writer_bits::MapStorageBase<Arc>* label = 0; |
... | ... |
@@ -746,4 +772,28 @@ |
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,7 +822,11 @@ |
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,4 +1170,5 @@ |
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,4 +1179,5 @@ |
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 |
} |
... | ... |
@@ -1191,4 +1247,28 @@ |
1191 | 1247 |
} |
1192 | 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 |
} |
|
1270 |
} |
|
1271 |
} |
|
1272 |
|
|
1193 | 1273 |
void writeEdges() { |
1194 | 1274 |
_writer_bits::MapStorageBase<Edge>* label = 0; |
... | ... |
@@ -1258,4 +1338,28 @@ |
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,7 +1388,11 @@ |
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(); |
0 comments (0 inline)