| ... | ... |
@@ -600,20 +600,22 @@ |
| 600 | 600 |
|
| 601 | 601 |
/// \brief Skip writing the node set |
| 602 | 602 |
/// |
| 603 | 603 |
/// The \c \@nodes section will be not written to the stream. |
| 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 |
} |
| 608 | 609 |
|
| 609 | 610 |
/// \brief Skip writing arc set |
| 610 | 611 |
/// |
| 611 | 612 |
/// The \c \@arcs section will be not written to the stream. |
| 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 |
} |
| 616 | 618 |
|
| 617 | 619 |
/// @} |
| 618 | 620 |
|
| 619 | 621 |
private: |
| ... | ... |
@@ -675,12 +677,36 @@ |
| 675 | 677 |
*_os << '\t'; |
| 676 | 678 |
} |
| 677 | 679 |
*_os << std::endl; |
| 678 | 680 |
} |
| 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; |
| 683 | 709 |
for (typename ArcMaps::iterator it = _arc_maps.begin(); |
| 684 | 710 |
it != _arc_maps.end(); ++it) {
|
| 685 | 711 |
if (it->first == "label") {
|
| 686 | 712 |
label = it->second; |
| ... | ... |
@@ -742,12 +768,36 @@ |
| 742 | 768 |
*_os << '\t'; |
| 743 | 769 |
} |
| 744 | 770 |
*_os << std::endl; |
| 745 | 771 |
} |
| 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; |
| 750 | 800 |
*_os << "@attributes"; |
| 751 | 801 |
if (!_attributes_caption.empty()) {
|
| 752 | 802 |
_writer_bits::writeToken(*_os << ' ', _attributes_caption); |
| 753 | 803 |
} |
| ... | ... |
@@ -768,15 +818,19 @@ |
| 768 | 818 |
/// \brief Start the batch processing |
| 769 | 819 |
/// |
| 770 | 820 |
/// This function starts the batch processing |
| 771 | 821 |
void run() {
|
| 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(); |
| 779 | 833 |
} |
| 780 | 834 |
|
| 781 | 835 |
/// \brief Gives back the stream of the writer |
| 782 | 836 |
/// |
| ... | ... |
@@ -1112,20 +1166,22 @@ |
| 1112 | 1166 |
|
| 1113 | 1167 |
/// \brief Skip writing the node set |
| 1114 | 1168 |
/// |
| 1115 | 1169 |
/// The \c \@nodes section will be not written to the stream. |
| 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 |
} |
| 1120 | 1175 |
|
| 1121 | 1176 |
/// \brief Skip writing edge set |
| 1122 | 1177 |
/// |
| 1123 | 1178 |
/// The \c \@edges section will be not written to the stream. |
| 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 |
} |
| 1128 | 1184 |
|
| 1129 | 1185 |
/// @} |
| 1130 | 1186 |
|
| 1131 | 1187 |
private: |
| ... | ... |
@@ -1187,12 +1243,36 @@ |
| 1187 | 1243 |
*_os << '\t'; |
| 1188 | 1244 |
} |
| 1189 | 1245 |
*_os << std::endl; |
| 1190 | 1246 |
} |
| 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; |
| 1195 | 1275 |
for (typename EdgeMaps::iterator it = _edge_maps.begin(); |
| 1196 | 1276 |
it != _edge_maps.end(); ++it) {
|
| 1197 | 1277 |
if (it->first == "label") {
|
| 1198 | 1278 |
label = it->second; |
| ... | ... |
@@ -1254,12 +1334,36 @@ |
| 1254 | 1334 |
*_os << '\t'; |
| 1255 | 1335 |
} |
| 1256 | 1336 |
*_os << std::endl; |
| 1257 | 1337 |
} |
| 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; |
| 1262 | 1366 |
*_os << "@attributes"; |
| 1263 | 1367 |
if (!_attributes_caption.empty()) {
|
| 1264 | 1368 |
_writer_bits::writeToken(*_os << ' ', _attributes_caption); |
| 1265 | 1369 |
} |
| ... | ... |
@@ -1280,15 +1384,19 @@ |
| 1280 | 1384 |
/// \brief Start the batch processing |
| 1281 | 1385 |
/// |
| 1282 | 1386 |
/// This function starts the batch processing |
| 1283 | 1387 |
void run() {
|
| 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(); |
| 1291 | 1399 |
} |
| 1292 | 1400 |
|
| 1293 | 1401 |
/// \brief Gives back the stream of the writer |
| 1294 | 1402 |
/// |
0 comments (0 inline)