• Alexandre Duret-Lutz's avatar
    Introduce tgba::release_iter(). · 06c69f88
    Alexandre Duret-Lutz authored
    Instead of "delete iter;" we now do "aut->release_iter(iter);" to
    give the iterator back to the automaton.  The TGBA classes now
    reuse a previously returned tgba_succ_iterator to answer a succ_iter()
    call, therefore avoiding (1) memory allocation, as well as (2) vtable
    and other constant member initialization.
    
    * src/tgba/tgba.hh, src/tgba/tgba.cc (release_iter, iter_cache_):
    Implement a release_iter() that stores the released iterator
    in iter_cache_.
    * src/tgba/succiter.hh (internal::succ_iterable): Move...
    * src/tgba/tgba.hh (tgba::succ_iterable): ... here. And use
    release_iter().
    
    * iface/dve2/dve2.cc, src/kripke/kripke.cc, src/kripke/kripke.hh,
    src/tgba/succiterconcrete.cc, src/tgba/succiterconcrete.hh,
    src/tgba/taatgba.hh, src/tgba/tgbabddconcrete.cc,
    src/tgba/tgbaexplicit.hh, src/tgba/tgbamask.cc, src/tgba/tgbaproduct.cc,
    src/tgba/tgbaproxy.cc, src/tgba/tgbascc.cc, src/tgba/tgbatba.cc,
    src/tgba/tgbaunion.cc, src/tgba/tgbaunion.hh, src/tgba/wdbacomp.cc,
    src/tgbaalgos/bfssteps.cc, src/tgbaalgos/compsusp.cc,
    src/tgbaalgos/cycles.cc, src/tgbaalgos/dtbasat.cc,
    src/tgbaalgos/dtgbasat.cc, src/tgbaalgos/gtec/gtec.cc,
    src/tgbaalgos/gv04.cc, src/tgbaalgos/isweakscc.cc,
    src/tgbaalgos/lbtt.cc, src/tgbaalgos/ltl2tgba_fm.cc,
    src/tgbaalgos/magic.cc, src/tgbaalgos/ndfs_result.hxx,
    src/tgbaalgos/neverclaim.cc, src/tgbaalgos/reachiter.cc,
    src/tgbaalgos/replayrun.cc, src/tgbaalgos/safety.cc,
    src/tgbaalgos/scc.cc, src/tgbaalgos/se05.cc,
    src/tgbaalgos/simulation.cc, src/tgbaalgos/tau03.cc,
    src/tgbaalgos/tau03opt.cc: Use release_iter() instead of deleting
    iterators, and used recycle iter_cache_ in implementations of
    tgba::succ_iter().
    06c69f88
tgba.hh 11.4 KB