determinisation: cleanups, remove shrinkStateSet

This commit is contained in:
Alex Coyte 2017-05-01 11:33:37 +10:00 committed by Matthew Barr
parent c17085ba35
commit 725de51f89

View File

@ -379,7 +379,9 @@ public:
NFAVertex v = sq.first;
u32 vert_id = graph[v].index;
squash.set(vert_id);
squash_mask[vert_id] = shrinkStateSet(sq.second);
squash_mask[vert_id]
= Automaton_Traits::copy_states(std::move(sq.second),
numStates);
}
cr_by_index = populateCR(graph, v_by_index, alpha);
@ -387,21 +389,11 @@ public:
dynamic_bitset<> temp(numStates);
markToppableStarts(graph, unused, single_trigger, triggers,
&temp);
toppable = Automaton_Traits::copy_states(temp, numStates);
toppable = Automaton_Traits::copy_states(std::move(temp),
numStates);
}
}
private:
// Convert an NFAStateSet (as used by the squash code) into a StateSet
StateSet shrinkStateSet(const NFAStateSet &in) const {
StateSet out = Automaton_Traits::init_states(numStates);
for (size_t i = in.find_first(); i != in.npos && i < out.size();
i = in.find_next(i)) {
out.set(i);
}
return out;
}
public:
void transition(const StateSet &in, StateSet *next) {
transition_graph(*this, v_by_index, in, next);
@ -475,7 +467,7 @@ struct Big_Traits {
return StateSet(num);
}
static StateSet copy_states(const dynamic_bitset<> &in, UNUSED u32 num) {
static StateSet copy_states(dynamic_bitset<> in, UNUSED u32 num) {
assert(in.size() == num);
return in;
}