diff --git a/src/nfagraph/ng_region.cpp b/src/nfagraph/ng_region.cpp index 2391082a..6fef9aa9 100644 --- a/src/nfagraph/ng_region.cpp +++ b/src/nfagraph/ng_region.cpp @@ -70,9 +70,9 @@ using namespace std; namespace ue2 { -typedef ue2::unordered_set BackEdgeSet; -typedef boost::filtered_graph> - AcyclicGraph; +using BackEdgeSet = unordered_set; +using AcyclicGraph = + boost::filtered_graph>; namespace { struct exit_info { @@ -85,8 +85,8 @@ struct exit_info { static void checkAndAddExitCandidate(const AcyclicGraph &g, - const ue2::unordered_set &r, - NFAVertex v, vector &exits) { + const unordered_set &r, NFAVertex v, + vector &exits) { exit_info v_exit(v); auto &open = v_exit.open; @@ -104,7 +104,7 @@ void checkAndAddExitCandidate(const AcyclicGraph &g, } static -void findExits(const AcyclicGraph &g, const ue2::unordered_set &r, +void findExits(const AcyclicGraph &g, const unordered_set &r, vector &exits) { exits.clear(); for (auto v : r) { @@ -113,7 +113,7 @@ void findExits(const AcyclicGraph &g, const ue2::unordered_set &r, } static -void refineExits(const AcyclicGraph &g, const ue2::unordered_set &r, +void refineExits(const AcyclicGraph &g, const unordered_set &r, NFAVertex new_v, vector &exits) { /* new_v is no long an open edge */ for (auto &exit : exits) { @@ -121,10 +121,9 @@ void refineExits(const AcyclicGraph &g, const ue2::unordered_set &r, } /* no open edges: no longer an exit */ - exits.erase( - remove_if(exits.begin(), exits.end(), + exits.erase(remove_if(exits.begin(), exits.end(), [&](const exit_info &exit) { return exit.open.empty(); }), - exits.end()); + exits.end()); checkAndAddExitCandidate(g, r, new_v, exits); } @@ -162,8 +161,8 @@ bool exitValid(UNUSED const AcyclicGraph &g, const vector &exits, } static -void setRegion(const ue2::unordered_set &r, u32 rid, - ue2::unordered_map ®ions) { +void setRegion(const unordered_set &r, u32 rid, + unordered_map ®ions) { for (auto v : r) { regions[v] = rid; } @@ -173,34 +172,34 @@ static void buildInitialCandidate(const AcyclicGraph &g, vector::const_reverse_iterator &it, const vector::const_reverse_iterator &ite, - ue2::unordered_set *candidate, + unordered_set &candidate, /* in exits of prev region; * out exits from candidate */ vector &exits, - flat_set *open_jumps) { + flat_set &open_jumps) { if (it == ite) { - candidate->clear(); + candidate.clear(); exits.clear(); return; } if (exits.empty()) { DEBUG_PRINTF("odd\n"); - candidate->clear(); + candidate.clear(); DEBUG_PRINTF("adding %zu to initial\n", g[*it].index); - candidate->insert(*it); - open_jumps->erase(*it); - checkAndAddExitCandidate(g, *candidate, *it, exits); + candidate.insert(*it); + open_jumps.erase(*it); + checkAndAddExitCandidate(g, candidate, *it, exits); ++it; return; } auto enters = exits.front().open; // copy - candidate->clear(); + candidate.clear(); for (; it != ite; ++it) { DEBUG_PRINTF("adding %zu to initial\n", g[*it].index); - candidate->insert(*it); + candidate.insert(*it); if (contains(enters, *it)) { break; } @@ -208,24 +207,24 @@ void buildInitialCandidate(const AcyclicGraph &g, if (it != ite) { enters.erase(*it); - *open_jumps = move(enters); - DEBUG_PRINTF("oj size = %zu\n", open_jumps->size()); + open_jumps = move(enters); + DEBUG_PRINTF("oj size = %zu\n", open_jumps.size()); ++it; } else { - open_jumps->clear(); + open_jumps.clear(); } - findExits(g, *candidate, exits); + findExits(g, candidate, exits); } static void findDagLeaders(const NGHolder &h, const AcyclicGraph &g, const vector &topo, - ue2::unordered_map ®ions) { + unordered_map ®ions) { assert(!topo.empty()); u32 curr_id = 0; - vector::const_reverse_iterator t_it = topo.rbegin(); - ue2::unordered_set candidate; + auto t_it = topo.rbegin(); + unordered_set candidate; flat_set open_jumps; DEBUG_PRINTF("adding %zu to current\n", g[*t_it].index); assert(t_it != topo.rend()); @@ -251,8 +250,8 @@ void findDagLeaders(const NGHolder &h, const AcyclicGraph &g, DEBUG_PRINTF("setting region %u\n", curr_id); } setRegion(candidate, curr_id++, regions); - buildInitialCandidate(g, t_it, topo.rend(), &candidate, exits, - &open_jumps); + buildInitialCandidate(g, t_it, topo.rend(), candidate, exits, + open_jumps); } else { NFAVertex curr = *t_it; DEBUG_PRINTF("adding %zu to current\n", g[curr].index); @@ -271,7 +270,7 @@ void findDagLeaders(const NGHolder &h, const AcyclicGraph &g, static void mergeUnderBackEdges(const NGHolder &g, const vector &topo, const BackEdgeSet &backEdges, - ue2::unordered_map ®ions) { + unordered_map ®ions) { for (const auto &e : backEdges) { NFAVertex u = source(e, g); NFAVertex v = target(e, g); @@ -341,7 +340,7 @@ void reorderSpecials(const NGHolder &w, const AcyclicGraph &acyclic_g, static void liftSinks(const AcyclicGraph &acyclic_g, vector &topoOrder) { - ue2::unordered_set sinks; + unordered_set sinks; for (auto v : vertices_range(acyclic_g)) { if (is_special(v, acyclic_g)) { continue; @@ -386,7 +385,7 @@ void liftSinks(const AcyclicGraph &acyclic_g, vector &topoOrder) { } NFAVertex s = *ri; DEBUG_PRINTF("handling sink %zu\n", acyclic_g[s].index); - ue2::unordered_set parents; + unordered_set parents; for (const auto &e : in_edges_range(s, acyclic_g)) { parents.insert(NFAVertex(source(e, acyclic_g))); } @@ -437,7 +436,7 @@ vector buildTopoOrder(const NGHolder &w, return topoOrder; } -ue2::unordered_map assignRegions(const NGHolder &g) { +unordered_map assignRegions(const NGHolder &g) { assert(hasCorrectlyNumberedVertices(g)); const u32 numVertices = num_vertices(g); DEBUG_PRINTF("assigning regions for %u vertices in holder\n", numVertices); @@ -459,7 +458,7 @@ ue2::unordered_map assignRegions(const NGHolder &g) { vector topoOrder = buildTopoOrder(g, acyclic_g, colours); // Everybody starts in region 0. - ue2::unordered_map regions; + unordered_map regions; regions.reserve(numVertices); for (auto v : vertices_range(g)) { regions.emplace(v, 0);