From 956021dbfcecfdcab0c8f72deca68d731be79898 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 25 Jan 2016 12:20:01 +0100 Subject: qlalr: eradicate all Q_FOREACH loops ... by replacing them with C++11 range-for, or, for loops over .values(), with explicit iterator loops over the result of equal_range(). Some fixes here and there to get to mark containers const for iteration, without having to resort to qAsConst(). Didn't work everywhere. Change-Id: Ibc0e71d3b208d118f06e16741af47261ef4b9e15 Reviewed-by: Lars Knoll --- src/tools/qlalr/lalr.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/tools/qlalr/lalr.cpp') diff --git a/src/tools/qlalr/lalr.cpp b/src/tools/qlalr/lalr.cpp index 5b88456ce9..81975a0f2a 100644 --- a/src/tools/qlalr/lalr.cpp +++ b/src/tools/qlalr/lalr.cpp @@ -410,8 +410,10 @@ void Automaton::buildLookbackSets () if (! _M_grammar->isNonTerminal (A)) continue; - foreach (const RulePointer &rule, _M_grammar->rule_map.values (A)) + const auto range = qAsConst(_M_grammar->rule_map).equal_range(A); + for (auto it = range.first; it != range.second; ++it) { + const RulePointer &rule = *it; StatePointer q = p; for (NameList::iterator dot = rule->rhs.begin (); dot != rule->rhs.end (); ++dot) @@ -603,8 +605,10 @@ void Automaton::buildIncludesDigraph () if (! _M_grammar->isNonTerminal (name)) continue; - foreach (const RulePointer &rule, _M_grammar->rule_map.values (name)) + const auto range = qAsConst(_M_grammar->rule_map).equal_range(name); + for (auto it = range.first; it != range.second; ++it) { + const RulePointer &rule = *it; StatePointer p = pp; for (NameList::iterator A = rule->rhs.begin (); A != rule->rhs.end (); ++A) -- cgit v1.2.3