ng_region: simplify checkAndAddExitCandidate

This commit is contained in:
Justin Viiret 2017-03-15 09:37:21 +11:00 committed by Matthew Barr
parent 7396c93990
commit d63fdcd860

View File

@ -87,22 +87,19 @@ static
void checkAndAddExitCandidate(const AcyclicGraph &g,
const ue2::unordered_set<NFAVertex> &r,
NFAVertex v, vector<exit_info> &exits) {
// set when we find our first candidate.
decltype(exit_info::open) *open = nullptr;
exit_info v_exit(v);
auto &open = v_exit.open;
/* find the set of vertices reachable from v which are not in r */
for (auto w : adjacent_vertices_range(v, g)) {
if (!contains(r, NFAVertex(w))) {
if (!open) {
exits.emplace_back(NFAVertex(v));
open = &exits.back().open;
}
open->insert(NFAVertex(w));
if (!contains(r, w)) {
open.insert(w);
}
}
if (open) {
if (!open.empty()) {
DEBUG_PRINTF("exit %zu\n", g[v].index);
exits.push_back(move(v_exit));
}
}