mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-09-30 03:34:25 +03:00
determinise: use queue, improve api
- Use a queue rather than always building the full vector of state sets. - Make more use of move, emplace, reserve. - Write directly into dstates argument. - Return bool rather than int.
This commit is contained in:
committed by
Matthew Barr
parent
64db576b9e
commit
31141dd35b
@@ -701,8 +701,8 @@ int addAutomaton(RoseBuildImpl &build, const NGHolder &h, ReportID *remap) {
|
||||
|
||||
Automaton_Holder autom(h);
|
||||
|
||||
unique_ptr<raw_dfa> out_dfa = ue2::make_unique<raw_dfa>(NFA_OUTFIX_RAW);
|
||||
if (!determinise(autom, out_dfa->states, MAX_DFA_STATES)) {
|
||||
auto out_dfa = ue2::make_unique<raw_dfa>(NFA_OUTFIX_RAW);
|
||||
if (determinise(autom, out_dfa->states, MAX_DFA_STATES)) {
|
||||
return finalise_out(build, h, autom, move(out_dfa), remap);
|
||||
}
|
||||
|
||||
@@ -764,8 +764,8 @@ void buildSimpleDfas(const RoseBuildImpl &build, const vector<u32> &frag_map,
|
||||
auto h = populate_holder(simple.first, exit_ids);
|
||||
Automaton_Holder autom(*h);
|
||||
auto rdfa = ue2::make_unique<raw_dfa>(NFA_OUTFIX_RAW);
|
||||
UNUSED int rv = determinise(autom, rdfa->states, MAX_DFA_STATES);
|
||||
assert(!rv);
|
||||
UNUSED bool rv = determinise(autom, rdfa->states, MAX_DFA_STATES);
|
||||
assert(rv);
|
||||
rdfa->start_anchored = INIT_STATE;
|
||||
rdfa->start_floating = DEAD_STATE;
|
||||
rdfa->alpha_size = autom.alphasize;
|
||||
|
Reference in New Issue
Block a user