0
3
0
| ... | ... |
@@ -738,32 +738,35 @@ |
| 738 | 738 |
/// |
| 739 | 739 |
/// This function makes a snapshot of the given digraph. |
| 740 | 740 |
/// It can be called more than once. In case of a repeated |
| 741 | 741 |
/// call, the previous snapshot gets lost. |
| 742 | 742 |
void save(ListDigraph &gr) {
|
| 743 | 743 |
if (attached()) {
|
| 744 | 744 |
detach(); |
| 745 | 745 |
clear(); |
| 746 | 746 |
} |
| 747 | 747 |
attach(gr); |
| 748 | 748 |
} |
| 749 | 749 |
|
| 750 | 750 |
/// \brief Undo the changes until the last snapshot. |
| 751 | 751 |
/// |
| 752 | 752 |
/// This function undos the changes until the last snapshot |
| 753 | 753 |
/// created by save() or Snapshot(ListDigraph&). |
| 754 |
/// |
|
| 755 |
/// \warning This method invalidates the snapshot, i.e. repeated |
|
| 756 |
/// restoring is not supported unless you call save() again. |
|
| 754 | 757 |
void restore() {
|
| 755 | 758 |
detach(); |
| 756 | 759 |
for(std::list<Arc>::iterator it = added_arcs.begin(); |
| 757 | 760 |
it != added_arcs.end(); ++it) {
|
| 758 | 761 |
digraph->erase(*it); |
| 759 | 762 |
} |
| 760 | 763 |
for(std::list<Node>::iterator it = added_nodes.begin(); |
| 761 | 764 |
it != added_nodes.end(); ++it) {
|
| 762 | 765 |
digraph->erase(*it); |
| 763 | 766 |
} |
| 764 | 767 |
clear(); |
| 765 | 768 |
} |
| 766 | 769 |
|
| 767 | 770 |
/// \brief Returns \c true if the snapshot is valid. |
| 768 | 771 |
/// |
| 769 | 772 |
/// This function returns \c true if the snapshot is valid. |
| ... | ... |
@@ -1537,32 +1540,35 @@ |
| 1537 | 1540 |
/// |
| 1538 | 1541 |
/// This function makes a snapshot of the given graph. |
| 1539 | 1542 |
/// It can be called more than once. In case of a repeated |
| 1540 | 1543 |
/// call, the previous snapshot gets lost. |
| 1541 | 1544 |
void save(ListGraph &gr) {
|
| 1542 | 1545 |
if (attached()) {
|
| 1543 | 1546 |
detach(); |
| 1544 | 1547 |
clear(); |
| 1545 | 1548 |
} |
| 1546 | 1549 |
attach(gr); |
| 1547 | 1550 |
} |
| 1548 | 1551 |
|
| 1549 | 1552 |
/// \brief Undo the changes until the last snapshot. |
| 1550 | 1553 |
/// |
| 1551 | 1554 |
/// This function undos the changes until the last snapshot |
| 1552 | 1555 |
/// created by save() or Snapshot(ListGraph&). |
| 1556 |
/// |
|
| 1557 |
/// \warning This method invalidates the snapshot, i.e. repeated |
|
| 1558 |
/// restoring is not supported unless you call save() again. |
|
| 1553 | 1559 |
void restore() {
|
| 1554 | 1560 |
detach(); |
| 1555 | 1561 |
for(std::list<Edge>::iterator it = added_edges.begin(); |
| 1556 | 1562 |
it != added_edges.end(); ++it) {
|
| 1557 | 1563 |
graph->erase(*it); |
| 1558 | 1564 |
} |
| 1559 | 1565 |
for(std::list<Node>::iterator it = added_nodes.begin(); |
| 1560 | 1566 |
it != added_nodes.end(); ++it) {
|
| 1561 | 1567 |
graph->erase(*it); |
| 1562 | 1568 |
} |
| 1563 | 1569 |
clear(); |
| 1564 | 1570 |
} |
| 1565 | 1571 |
|
| 1566 | 1572 |
/// \brief Returns \c true if the snapshot is valid. |
| 1567 | 1573 |
/// |
| 1568 | 1574 |
/// This function returns \c true if the snapshot is valid. |
| ... | ... |
@@ -273,32 +273,40 @@ |
| 273 | 273 |
checkGraphInArcList(G, n2, 1); |
| 274 | 274 |
checkGraphInArcList(G, n3, 2); |
| 275 | 275 |
|
| 276 | 276 |
checkGraphConArcList(G, 4); |
| 277 | 277 |
|
| 278 | 278 |
checkNodeIds(G); |
| 279 | 279 |
checkArcIds(G); |
| 280 | 280 |
checkGraphNodeMap(G); |
| 281 | 281 |
checkGraphArcMap(G); |
| 282 | 282 |
|
| 283 | 283 |
G.addNode(); |
| 284 | 284 |
snapshot.save(G); |
| 285 | 285 |
|
| 286 | 286 |
G.addArc(G.addNode(), G.addNode()); |
| 287 | 287 |
|
| 288 | 288 |
snapshot.restore(); |
| 289 |
snapshot.save(G); |
|
| 290 |
|
|
| 291 |
checkGraphNodeList(G, 4); |
|
| 292 |
checkGraphArcList(G, 4); |
|
| 293 |
|
|
| 294 |
G.addArc(G.addNode(), G.addNode()); |
|
| 295 |
|
|
| 296 |
snapshot.restore(); |
|
| 289 | 297 |
|
| 290 | 298 |
checkGraphNodeList(G, 4); |
| 291 | 299 |
checkGraphArcList(G, 4); |
| 292 | 300 |
} |
| 293 | 301 |
|
| 294 | 302 |
void checkConcepts() {
|
| 295 | 303 |
{ // Checking digraph components
|
| 296 | 304 |
checkConcept<BaseDigraphComponent, BaseDigraphComponent >(); |
| 297 | 305 |
|
| 298 | 306 |
checkConcept<IDableDigraphComponent<>, |
| 299 | 307 |
IDableDigraphComponent<> >(); |
| 300 | 308 |
|
| 301 | 309 |
checkConcept<IterableDigraphComponent<>, |
| 302 | 310 |
IterableDigraphComponent<> >(); |
| 303 | 311 |
|
| 304 | 312 |
checkConcept<MappableDigraphComponent<>, |
| ... | ... |
@@ -246,32 +246,41 @@ |
| 246 | 246 |
checkGraphConEdgeList(G, 3); |
| 247 | 247 |
checkGraphConArcList(G, 6); |
| 248 | 248 |
|
| 249 | 249 |
checkNodeIds(G); |
| 250 | 250 |
checkEdgeIds(G); |
| 251 | 251 |
checkArcIds(G); |
| 252 | 252 |
checkGraphNodeMap(G); |
| 253 | 253 |
checkGraphEdgeMap(G); |
| 254 | 254 |
checkGraphArcMap(G); |
| 255 | 255 |
|
| 256 | 256 |
G.addNode(); |
| 257 | 257 |
snapshot.save(G); |
| 258 | 258 |
|
| 259 | 259 |
G.addEdge(G.addNode(), G.addNode()); |
| 260 | 260 |
|
| 261 | 261 |
snapshot.restore(); |
| 262 |
snapshot.save(G); |
|
| 263 |
|
|
| 264 |
checkGraphNodeList(G, 4); |
|
| 265 |
checkGraphEdgeList(G, 3); |
|
| 266 |
checkGraphArcList(G, 6); |
|
| 267 |
|
|
| 268 |
G.addEdge(G.addNode(), G.addNode()); |
|
| 269 |
|
|
| 270 |
snapshot.restore(); |
|
| 262 | 271 |
|
| 263 | 272 |
checkGraphNodeList(G, 4); |
| 264 | 273 |
checkGraphEdgeList(G, 3); |
| 265 | 274 |
checkGraphArcList(G, 6); |
| 266 | 275 |
} |
| 267 | 276 |
|
| 268 | 277 |
void checkFullGraph(int num) {
|
| 269 | 278 |
typedef FullGraph Graph; |
| 270 | 279 |
GRAPH_TYPEDEFS(Graph); |
| 271 | 280 |
|
| 272 | 281 |
Graph G(num); |
| 273 | 282 |
check(G.nodeNum() == num && G.edgeNum() == num * (num - 1) / 2, |
| 274 | 283 |
"Wrong size"); |
| 275 | 284 |
|
| 276 | 285 |
G.resize(num); |
| 277 | 286 |
check(G.nodeNum() == num && G.edgeNum() == num * (num - 1) / 2, |
0 comments (0 inline)