X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FGraph.cpp;h=d7ea066dc36e6daa7bc76fa5a2de54d9b8cfe51c;hb=edc94a578f3e43c036842f91f25cf2eea42eb6cf;hp=874bbb7f08d6223137011db510414f57da6122a0;hpb=2cd88f07b3a7c862584a20d6b1050ce71f8d42e1;p=lyx.git diff --git a/src/Graph.cpp b/src/Graph.cpp index 874bbb7f08..d7ea066dc3 100644 --- a/src/Graph.cpp +++ b/src/Graph.cpp @@ -24,12 +24,13 @@ using namespace std; namespace lyx { -bool Graph::bfs_init(int s, bool clear_visited, queue* Q) +bool Graph::bfs_init(int s, bool clear_visited, queue & Q) { - if (s < 0 || !Q) + if (s < 0) return false; - - *Q = queue(); + + if (!Q.empty()) + Q = queue(); if (clear_visited) { vector::iterator it = vertices_.begin(); @@ -38,19 +39,19 @@ bool Graph::bfs_init(int s, bool clear_visited, queue* Q) it->visited = false; } if (!vertices_[s].visited) { - Q->push(s); + Q.push(s); vertices_[s].visited = true; } return true; } -vector const +Graph::EdgePath const Graph::getReachableTo(int target, bool clear_visited) { - vector result; + EdgePath result; queue Q; - if (!bfs_init(target, clear_visited, &Q)) + if (!bfs_init(target, clear_visited, Q)) return result; // Here's the logic, which is shared by the other routines. @@ -80,13 +81,13 @@ vector const } -vector const +Graph::EdgePath const Graph::getReachable(int from, bool only_viewable, bool clear_visited) { - vector result; + EdgePath result; queue Q; - if (!bfs_init(from, clear_visited, &Q)) + if (!bfs_init(from, clear_visited, Q)) return result; while (!Q.empty()) { @@ -125,7 +126,7 @@ bool Graph::isReachable(int from, int to) return true; queue Q; - if (to < 0 || !bfs_init(from, true, &Q)) + if (to < 0 || !bfs_init(from, true, Q)) return false; while (!Q.empty()) { @@ -157,7 +158,7 @@ Graph::EdgePath const Graph::getPath(int from, int to) return EdgePath(); queue Q; - if (to < 0 || !bfs_init(from, true, &Q)) + if (to < 0 || !bfs_init(from, true, Q)) return EdgePath(); vector pathes;