Skip to content
Snippets Groups Projects
Commit d83aad67 authored by Jan Travnicek's avatar Jan Travnicek
Browse files

use move semantics in compaction

parent 684b86f8
No related branches found
No related tags found
No related merge requests found
Pipeline #36595 failed
......@@ -82,7 +82,7 @@ ext::require < isDFA < T > || isNFA < T >, Compaction::CompactAutomaton < T > >
for(const auto& transition: automaton.getTransitionsFromState(automaton.getInitialState()))
stack.push(ext::make_tuple(transition.second, automaton.getInitialState(), transition.first.second));
 
if(automaton.getFinalStates().count(automaton.getInitialState()) > 0)
if(automaton.getFinalStates().count(automaton.getInitialState()))
res.addFinalState(automaton.getInitialState());
 
while(!stack.empty()) {
......@@ -91,7 +91,7 @@ ext::require < isDFA < T > || isNFA < T >, Compaction::CompactAutomaton < T > >
SymbolType symbol = std::move(std::get<2>(stack.top()));
stack.pop();
 
ext::vector < SymbolType > path { symbol };
ext::vector < SymbolType > path { std::move ( symbol ) };
 
decltype ( automaton.getTransitionsFromState ( q ) ) transitions;
// only 1 child and nonfinal
......@@ -101,17 +101,17 @@ ext::require < isDFA < T > || isNFA < T >, Compaction::CompactAutomaton < T > >
q = transition.second;
}
 
for(const std::pair<const ext::pair<StateType, SymbolType>, StateType>& transition : transitions )
if(visited.insert(ext::make_tuple(transition.second, q, transition.first.second)).second)
stack.push(ext::make_tuple(transition.second, q, transition.first.second));
// fork or final state
res.addState(q);
 
if(automaton.getFinalStates().count(q))
res.addFinalState(q);
 
res.addTransition(lastFork, path, q);
for(const std::pair<const ext::pair<StateType, SymbolType>, StateType>& transition : transitions )
if(visited.insert(ext::make_tuple(transition.second, q, transition.first.second)).second)
stack.push(ext::make_tuple(transition.second, q, transition.first.second));
res.addTransition ( std::move ( lastFork ), std::move ( path ), std::move ( q ) );
 
}
 
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment