Introduce tgba::release_iter().
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().
This commit is contained in:
parent
487cd01d9f
commit
06c69f88ff
40 changed files with 386 additions and 248 deletions
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright (C) 2004 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// Copyright (C) 2004, 2014 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// et Marie Curie.
|
||||
//
|
||||
|
|
@ -88,7 +88,7 @@ namespace spot
|
|||
{
|
||||
// Found it!
|
||||
finalize(father, s, start, l);
|
||||
delete i;
|
||||
a_->release_iter(i);
|
||||
return dest;
|
||||
}
|
||||
|
||||
|
|
@ -100,7 +100,7 @@ namespace spot
|
|||
father[dest] = s;
|
||||
}
|
||||
}
|
||||
delete i;
|
||||
a_->release_iter(i);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -339,7 +339,8 @@ namespace spot
|
|||
else
|
||||
break;
|
||||
}
|
||||
delete ri;
|
||||
if (ri)
|
||||
right->release_iter(ri);
|
||||
}
|
||||
}
|
||||
delete left;
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ namespace spot
|
|||
// No more successors.
|
||||
bool f = cur.f;
|
||||
tagged_state v = cur.ts;
|
||||
delete cur.succ;
|
||||
aut_->release_iter(cur.succ);
|
||||
|
||||
dfs_.pop_back();
|
||||
if (f)
|
||||
|
|
@ -158,7 +158,7 @@ namespace spot
|
|||
// returned false.
|
||||
while (!dfs_.empty())
|
||||
{
|
||||
delete dfs_.back().succ;
|
||||
aut_->release_iter(dfs_.back().succ);
|
||||
dfs_.pop_back();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -438,8 +438,7 @@ namespace spot
|
|||
|
||||
dout << "(3) augmenting paths based on Cand[" << q1
|
||||
<< "] and Ref[" << q1p << "]\n";
|
||||
tgba_succ_iterator* it = ref->succ_iter(d.int_to_state[q1p]);
|
||||
for (it->first(); !it->done(); it->next())
|
||||
for (auto it: ref->succ(d.int_to_state[q1p]))
|
||||
{
|
||||
const state* dps = it->current_state();
|
||||
int dp = d.state_to_int[dps];
|
||||
|
|
@ -469,7 +468,6 @@ namespace spot
|
|||
}
|
||||
}
|
||||
}
|
||||
delete it;
|
||||
}
|
||||
|
||||
bdd all_acc = ref->all_acceptance_conditions();
|
||||
|
|
@ -502,9 +500,7 @@ namespace spot
|
|||
else
|
||||
pid1 = d.pathid_ref[p1];
|
||||
|
||||
tgba_succ_iterator* it =
|
||||
ref->succ_iter(d.int_to_state[q2p]);
|
||||
for (it->first(); !it->done(); it->next())
|
||||
for (auto it: ref->succ(d.int_to_state[q2p]))
|
||||
{
|
||||
const state* dps = it->current_state();
|
||||
// Skip destinations not in the SCC.
|
||||
|
|
@ -567,7 +563,6 @@ namespace spot
|
|||
}
|
||||
}
|
||||
}
|
||||
delete it;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -598,9 +593,7 @@ namespace spot
|
|||
else
|
||||
pid1 = d.pathid_cand[p1];
|
||||
|
||||
tgba_succ_iterator* it =
|
||||
ref->succ_iter(d.int_to_state[q2p]);
|
||||
for (it->first(); !it->done(); it->next())
|
||||
for (auto it: ref->succ(d.int_to_state[q2p]))
|
||||
{
|
||||
const state* dps = it->current_state();
|
||||
// Skip destinations not in the SCC.
|
||||
|
|
@ -665,7 +658,6 @@ namespace spot
|
|||
}
|
||||
}
|
||||
}
|
||||
delete it;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -582,8 +582,7 @@ namespace spot
|
|||
path p1(q1, q1p);
|
||||
int p1id = d.pathid[p1];
|
||||
|
||||
tgba_succ_iterator* it = ref->succ_iter(d.int_to_state[q1p]);
|
||||
for (it->first(); !it->done(); it->next())
|
||||
for (auto it: ref->succ(d.int_to_state[q1p]))
|
||||
{
|
||||
const state* dps = it->current_state();
|
||||
int dp = d.state_to_int[dps];
|
||||
|
|
@ -612,7 +611,6 @@ namespace spot
|
|||
}
|
||||
}
|
||||
}
|
||||
delete it;
|
||||
}
|
||||
|
||||
bdd all_acc = ref->all_acceptance_conditions();
|
||||
|
|
@ -645,10 +643,7 @@ namespace spot
|
|||
|
||||
int pid = d.pathid[p];
|
||||
|
||||
tgba_succ_iterator* it =
|
||||
ref->succ_iter(d.int_to_state[q2p]);
|
||||
|
||||
for (it->first(); !it->done(); it->next())
|
||||
for (auto it: ref->succ(d.int_to_state[q2p]))
|
||||
{
|
||||
const state* dps = it->current_state();
|
||||
// Skip destinations not in the SCC.
|
||||
|
|
@ -836,7 +831,6 @@ namespace spot
|
|||
}
|
||||
}
|
||||
}
|
||||
delete it;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
// Copyright (C) 2008, 2011 Laboratoire de Recherche et Développement
|
||||
// de l'Epita (LRDE).
|
||||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2008, 2011, 2014 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2003, 2004, 2005, 2006 Laboratoire d'Informatique de
|
||||
// Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC),
|
||||
// Université Pierre et Marie Curie.
|
||||
// Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC),
|
||||
// Université Pierre et Marie Curie.
|
||||
//
|
||||
// This file is part of Spot, a model checking library.
|
||||
//
|
||||
|
|
@ -135,7 +136,7 @@ namespace spot
|
|||
to_remove.push(ecs_->aut->succ_iter(spi.first));
|
||||
}
|
||||
}
|
||||
delete i;
|
||||
ecs_->aut->release_iter(i);
|
||||
if (to_remove.empty())
|
||||
break;
|
||||
i = to_remove.top();
|
||||
|
|
@ -212,8 +213,7 @@ namespace spot
|
|||
remove_component(curr);
|
||||
ecs_->root.pop();
|
||||
}
|
||||
|
||||
delete succ;
|
||||
ecs_->aut->release_iter(succ);
|
||||
// Do not destroy CURR: it is a key in H.
|
||||
continue;
|
||||
}
|
||||
|
|
@ -288,7 +288,7 @@ namespace spot
|
|||
// Release all iterators in TODO.
|
||||
while (!todo.empty())
|
||||
{
|
||||
delete todo.top().second;
|
||||
ecs_->aut->release_iter(todo.top().second);
|
||||
todo.pop();
|
||||
dec_depth();
|
||||
}
|
||||
|
|
@ -325,14 +325,13 @@ namespace spot
|
|||
couvreur99_check_shy* shy)
|
||||
: s(s), n(n)
|
||||
{
|
||||
tgba_succ_iterator* iter = shy->ecs_->aut->succ_iter(s);
|
||||
for (iter->first(); !iter->done(); iter->next(), shy->inc_transitions())
|
||||
for (auto iter: shy->ecs_->aut->succ(s))
|
||||
{
|
||||
q.push_back(successor(iter->current_acceptance_conditions(),
|
||||
iter->current_state()));
|
||||
shy->inc_depth();
|
||||
shy->inc_transitions();
|
||||
}
|
||||
delete iter;
|
||||
}
|
||||
|
||||
couvreur99_check_shy::couvreur99_check_shy(const tgba* a,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2008, 2010, 2011, 2013 Laboratoire de recherche et
|
||||
// développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2008, 2010, 2011, 2013, 2014 Laboratoire de recherche
|
||||
// et développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2004, 2005 Laboratoire d'Informatique de Paris 6
|
||||
// (LIP6), département Systèmes Répartis Coopératifs (SRC), Université
|
||||
// Pierre et Marie Curie.
|
||||
|
|
@ -80,7 +80,7 @@ namespace spot
|
|||
~gv04()
|
||||
{
|
||||
for (stack_type::iterator i = stack.begin(); i != stack.end(); ++i)
|
||||
delete i->lasttr;
|
||||
a_->release_iter(i->lasttr);
|
||||
hash_type::const_iterator s = h.begin();
|
||||
while (s != h.end())
|
||||
{
|
||||
|
|
@ -203,7 +203,7 @@ namespace spot
|
|||
assert(static_cast<unsigned int>(top + 1) == stack.size());
|
||||
for (int i = top; i >= dftop; --i)
|
||||
{
|
||||
delete stack[i].lasttr;
|
||||
a_->release_iter(stack[i].lasttr);
|
||||
stack.pop_back();
|
||||
dec_depth();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
// Copyright (C) 2012, 2013 Laboratoire de Recherche et Developpement
|
||||
// de l'Epita (LRDE).
|
||||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2012, 2013, 2014 Laboratoire de Recherche et
|
||||
// Developpement de l'Epita (LRDE).
|
||||
//
|
||||
// This file is part of Spot, a model checking library.
|
||||
//
|
||||
|
|
@ -96,12 +97,10 @@ namespace spot
|
|||
if (!aut)
|
||||
return false;
|
||||
|
||||
const std::list<const spot::state*> states = map.states_of(scc);
|
||||
std::list<const spot::state*>::const_iterator it;
|
||||
for (it = states.begin(); it != states.end(); ++it)
|
||||
for (auto ss: map.states_of(scc))
|
||||
{
|
||||
const state_explicit_formula* s =
|
||||
down_cast<const state_explicit_formula*>(*it);
|
||||
down_cast<const state_explicit_formula*>(ss);
|
||||
assert(s);
|
||||
if (aut->get_label(s)->is_syntactic_persistence())
|
||||
return true;
|
||||
|
|
@ -117,12 +116,10 @@ namespace spot
|
|||
if (!aut)
|
||||
return false;
|
||||
|
||||
const std::list<const spot::state*> states = map.states_of(scc);
|
||||
std::list<const spot::state*>::const_iterator it;
|
||||
for (it = states.begin(); it != states.end(); ++it)
|
||||
for (auto ss: map.states_of(scc))
|
||||
{
|
||||
const state_explicit_formula* s =
|
||||
down_cast<const state_explicit_formula*>(*it);
|
||||
down_cast<const state_explicit_formula*>(ss);
|
||||
assert(s);
|
||||
if (aut->get_label(s)->is_syntactic_guarantee())
|
||||
return true;
|
||||
|
|
@ -134,18 +131,15 @@ namespace spot
|
|||
is_complete_scc(scc_map& map, unsigned scc)
|
||||
{
|
||||
const spot::tgba *a = map.get_aut();
|
||||
const std::list<const spot::state*> states = map.states_of(scc);
|
||||
std::list<const spot::state*>::const_iterator it;
|
||||
for (it = states.begin(); it != states.end(); ++it)
|
||||
for (auto s: map.states_of(scc))
|
||||
{
|
||||
const state *s = *it;
|
||||
tgba_succ_iterator* it = a->succ_iter(s);
|
||||
it->first();
|
||||
|
||||
// If a state has no successors, the SCC is not complete.
|
||||
if (it->done())
|
||||
{
|
||||
delete it;
|
||||
a->release_iter(it);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -163,7 +157,7 @@ namespace spot
|
|||
it->next();
|
||||
}
|
||||
while (!it->done());
|
||||
delete it;
|
||||
a->release_iter(it);
|
||||
|
||||
if (sumall != bddtrue)
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2011, 2012, 2013 Laboratoire de Recherche et
|
||||
// Copyright (C) 2011, 2012, 2013, 2014 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2003, 2004, 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// et Marie Curie.
|
||||
// Copyright (C) 2003, 2004, 2005 Laboratoire d'Informatique de Paris
|
||||
// 6 (LIP6), département Systèmes Répartis Coopératifs (SRC),
|
||||
// Université Pierre et Marie Curie.
|
||||
//
|
||||
// This file is part of Spot, a model checking library.
|
||||
//
|
||||
|
|
@ -104,7 +104,7 @@ namespace spot
|
|||
it->first();
|
||||
bool accepting =
|
||||
!it->done() && it->current_acceptance_conditions() == all_acc_conds_;
|
||||
delete it;
|
||||
aut_->release_iter(it);
|
||||
return accepting;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ namespace spot
|
|||
{
|
||||
public:
|
||||
ratexp_to_dfa(translate_dict& dict);
|
||||
tgba_succ_iterator* succ(const formula* f);
|
||||
std::pair<tgba_explicit_formula*, const state*> succ(const formula* f);
|
||||
const formula* get_label(const formula* f, const state* s) const;
|
||||
~ratexp_to_dfa();
|
||||
|
||||
|
|
@ -1133,7 +1133,7 @@ namespace spot
|
|||
}
|
||||
|
||||
// FIXME: use the new tgba::succ() interface
|
||||
tgba_succ_iterator*
|
||||
std::pair<tgba_explicit_formula*, const state*>
|
||||
ratexp_to_dfa::succ(const formula* f)
|
||||
{
|
||||
f2a_t::const_iterator it = f2a_.find(f);
|
||||
|
|
@ -1145,13 +1145,11 @@ namespace spot
|
|||
|
||||
// If a is nul, f has an empty language.
|
||||
if (!a)
|
||||
return 0;
|
||||
return {nullptr, nullptr};
|
||||
|
||||
assert(a->has_state(f));
|
||||
// This won't create a new state.
|
||||
const state* s = a->add_state(f);
|
||||
|
||||
return a->succ_iter(s);
|
||||
return {a, a->add_state(f)};
|
||||
}
|
||||
|
||||
const formula*
|
||||
|
|
@ -1364,12 +1362,11 @@ namespace spot
|
|||
{
|
||||
// rat_seen_ = true;
|
||||
const formula* f = node->child();
|
||||
tgba_succ_iterator* i = dict_.transdfa.succ(f);
|
||||
auto p = dict_.transdfa.succ(f);
|
||||
res_ = bddfalse;
|
||||
|
||||
if (!i)
|
||||
if (!p.first)
|
||||
break;
|
||||
for (i->first(); !i->done(); i->next())
|
||||
for (auto i: p.first->succ(p.second))
|
||||
{
|
||||
bdd label = i->current_condition();
|
||||
state* s = i->current_state();
|
||||
|
|
@ -1391,7 +1388,6 @@ namespace spot
|
|||
res_ |= label & bdd_ithvar(x);
|
||||
}
|
||||
}
|
||||
delete i;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2011, 2013 Laboratoire de recherche et développement de
|
||||
// l'Epita (LRDE).
|
||||
// Copyright (C) 2011, 2013, 2014 Laboratoire de recherche et
|
||||
// développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2004, 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// et Marie Curie.
|
||||
|
|
@ -68,13 +68,13 @@ namespace spot
|
|||
while (!st_blue.empty())
|
||||
{
|
||||
h.pop_notify(st_blue.front().s);
|
||||
delete st_blue.front().it;
|
||||
a_->release_iter(st_blue.front().it);
|
||||
st_blue.pop_front();
|
||||
}
|
||||
while (!st_red.empty())
|
||||
{
|
||||
h.pop_notify(st_red.front().s);
|
||||
delete st_red.front().it;
|
||||
a_->release_iter(st_red.front().it);
|
||||
st_red.pop_front();
|
||||
}
|
||||
}
|
||||
|
|
@ -159,7 +159,7 @@ namespace spot
|
|||
void pop(stack_type& st)
|
||||
{
|
||||
dec_depth();
|
||||
delete st.front().it;
|
||||
a_->release_iter(st.front().it);
|
||||
st.pop_front();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2011, 2013 Laboratoire de recherche et développement de
|
||||
// l'Epita (LRDE).
|
||||
// Copyright (C) 2011, 2013, 2014 Laboratoire de recherche et
|
||||
// développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2004, 2005, 2006 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// et Marie Curie.
|
||||
|
|
@ -230,11 +230,11 @@ namespace spot
|
|||
typedef std::unordered_set<const state*,
|
||||
state_ptr_hash, state_ptr_equal> state_set;
|
||||
|
||||
void clean(stack_type& st1, state_set& seen, state_set& dead)
|
||||
void clean(const tgba* a, stack_type& st1, state_set& seen, state_set& dead)
|
||||
{
|
||||
while (!st1.empty())
|
||||
{
|
||||
delete st1.front().it;
|
||||
a->release_iter(st1.front().it);
|
||||
st1.pop_front();
|
||||
}
|
||||
for (state_set::iterator i = seen.begin(); i != seen.end();)
|
||||
|
|
@ -309,7 +309,7 @@ namespace spot
|
|||
covered_acc |= acc;
|
||||
if (covered_acc == a_->all_acceptance_conditions())
|
||||
{
|
||||
clean(st1, seen, dead);
|
||||
clean(a_, st1, seen, dead);
|
||||
s_prime->destroy();
|
||||
return true;
|
||||
}
|
||||
|
|
@ -334,7 +334,7 @@ namespace spot
|
|||
ndfsr_trace << " all the successors have been visited"
|
||||
<< std::endl;
|
||||
stack_item f_dest(f);
|
||||
delete st1.front().it;
|
||||
a_->release_iter(st1.front().it);
|
||||
st1.pop_front();
|
||||
if (!st1.empty() && (f_dest.acc & covered_acc) != f_dest.acc)
|
||||
{
|
||||
|
|
@ -351,7 +351,7 @@ namespace spot
|
|||
covered_acc |= f_dest.acc;
|
||||
if (covered_acc == a_->all_acceptance_conditions())
|
||||
{
|
||||
clean(st1, seen, dead);
|
||||
clean(a_, st1, seen, dead);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -364,7 +364,7 @@ namespace spot
|
|||
}
|
||||
}
|
||||
|
||||
clean(st1, seen, dead);
|
||||
clean(a_, st1, seen, dead);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
// Copyright (C) 2009, 2011, 2012 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2009, 2011, 2012, 2014 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2004 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// et Marie Curie.
|
||||
//
|
||||
// This file is part of Spot, a model checking library.
|
||||
|
|
@ -88,7 +89,7 @@ namespace spot
|
|||
it->first();
|
||||
bool accepting =
|
||||
!it->done() && it->current_acceptance_conditions() == all_acc_conds_;
|
||||
delete it;
|
||||
aut_->release_iter(it);
|
||||
return accepting;
|
||||
}
|
||||
|
||||
|
|
@ -123,7 +124,7 @@ namespace spot
|
|||
label = "accept_all";
|
||||
current->destroy();
|
||||
}
|
||||
delete it;
|
||||
aut_->release_iter(it);
|
||||
}
|
||||
else
|
||||
label = "T0_S" + ns;
|
||||
|
|
@ -149,7 +150,7 @@ namespace spot
|
|||
}
|
||||
else
|
||||
{
|
||||
state* current =it->current_state();
|
||||
state* current = it->current_state();
|
||||
if (state_is_accepting(s)
|
||||
&& it->current_condition() == bddtrue
|
||||
&& s->compare(init_) != 0
|
||||
|
|
@ -167,8 +168,8 @@ namespace spot
|
|||
}
|
||||
current->destroy();
|
||||
}
|
||||
delete it;
|
||||
}
|
||||
aut_->release_iter(it);
|
||||
}
|
||||
|
||||
void
|
||||
process_link(const state*, int in, const state*, int out,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
// Copyright (C) 2009, 2011, 2013 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2009, 2011, 2013, 2014 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// et Marie Curie.
|
||||
//
|
||||
// This file is part of Spot, a model checking library.
|
||||
|
|
@ -81,7 +82,7 @@ namespace spot
|
|||
current->destroy();
|
||||
}
|
||||
}
|
||||
delete si;
|
||||
aut_->release_iter(si);
|
||||
}
|
||||
end();
|
||||
}
|
||||
|
|
@ -174,7 +175,7 @@ namespace spot
|
|||
void
|
||||
tgba_reachable_iterator_depth_first::pop()
|
||||
{
|
||||
delete todo.back().it;
|
||||
aut_->release_iter(todo.back().it);
|
||||
todo.pop_back();
|
||||
if (!todo.empty())
|
||||
todo.back().it->next();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2011, 2013 Laboratoire de Recherche et Développement
|
||||
// de l'Epita (LRDE).
|
||||
// Copyright (C) 2011, 2013, 2014 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2004 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// et Marie Curie.
|
||||
|
|
@ -189,7 +189,7 @@ namespace spot
|
|||
s2->destroy();
|
||||
}
|
||||
}
|
||||
delete j;
|
||||
a->release_iter(j);
|
||||
s->destroy();
|
||||
return false;
|
||||
}
|
||||
|
|
@ -211,7 +211,7 @@ namespace spot
|
|||
bdd_print_accset(os, a->get_dict(), acc);
|
||||
os << std::endl;
|
||||
}
|
||||
delete j;
|
||||
a->release_iter(j);
|
||||
|
||||
// Sum acceptance conditions.
|
||||
//
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ namespace spot
|
|||
it->next();
|
||||
result = (!dest->compare(s)) && it->done() && (cond == bddtrue);
|
||||
dest->destroy();
|
||||
delete it;
|
||||
aut->release_iter(it);
|
||||
}
|
||||
|
||||
// Free the scc_map if we created it.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2008, 2009, 2011, 2012, 2013 Laboratoire de Recherche
|
||||
// et Développement de l'Epita.
|
||||
// Copyright (C) 2008, 2009, 2011, 2012, 2013, 2014 Laboratoire de
|
||||
// Recherche et Développement de l'Epita.
|
||||
//
|
||||
// This file is part of Spot, a model checking library.
|
||||
//
|
||||
|
|
@ -199,7 +199,7 @@ namespace spot
|
|||
root_.front().succ.insert(std::make_pair(num, cond));
|
||||
}
|
||||
|
||||
delete succ;
|
||||
aut_->release_iter(succ);
|
||||
// Do not destroy CURR: it is a key in H.
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2011, 2013 Laboratoire de Recherche et Developpement de
|
||||
// l'Epita (LRDE).
|
||||
// Copyright (C) 2011, 2013, 2014 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2004, 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// et Marie Curie.
|
||||
|
|
@ -68,13 +68,13 @@ namespace spot
|
|||
while (!st_blue.empty())
|
||||
{
|
||||
h.pop_notify(st_blue.front().s);
|
||||
delete st_blue.front().it;
|
||||
a_->release_iter(st_blue.front().it);
|
||||
st_blue.pop_front();
|
||||
}
|
||||
while (!st_red.empty())
|
||||
{
|
||||
h.pop_notify(st_red.front().s);
|
||||
delete st_red.front().it;
|
||||
a_->release_iter(st_red.front().it);
|
||||
st_red.pop_front();
|
||||
}
|
||||
}
|
||||
|
|
@ -159,7 +159,7 @@ namespace spot
|
|||
void pop(stack_type& st)
|
||||
{
|
||||
dec_depth();
|
||||
delete st.front().it;
|
||||
a_->release_iter(st.front().it);
|
||||
st.pop_front();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -335,14 +335,12 @@ namespace spot
|
|||
// the acceptance of the destination state on its incoming
|
||||
// arcs (which now become outgoing args after
|
||||
// transposition).
|
||||
tgba_succ_iterator* it = out_->succ_iter(out_s);
|
||||
it->first();
|
||||
if (!it->done())
|
||||
for (auto it: out_->succ(out_s))
|
||||
{
|
||||
bdd acc = ac_.complement(it->current_acceptance_conditions());
|
||||
t->acceptance_conditions = acc;
|
||||
break;
|
||||
}
|
||||
delete it;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -68,13 +68,13 @@ namespace spot
|
|||
while (!st_blue.empty())
|
||||
{
|
||||
h.pop_notify(st_blue.front().s);
|
||||
delete st_blue.front().it;
|
||||
a_->release_iter(st_blue.front().it);
|
||||
st_blue.pop_front();
|
||||
}
|
||||
while (!st_red.empty())
|
||||
{
|
||||
h.pop_notify(st_red.front().s);
|
||||
delete st_red.front().it;
|
||||
a_->release_iter(st_red.front().it);
|
||||
st_red.pop_front();
|
||||
}
|
||||
}
|
||||
|
|
@ -133,7 +133,7 @@ namespace spot
|
|||
void pop(stack_type& st)
|
||||
{
|
||||
dec_depth();
|
||||
delete st.front().it;
|
||||
a_->release_iter(st.front().it);
|
||||
st.pop_front();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// -*- coding: utf-8 -*-
|
||||
// Copyright (C) 2011, 2013 Laboratoire de Recherche et Developpement de
|
||||
// l'Epita (LRDE).
|
||||
// Copyright (C) 2011, 2013, 2014 Laboratoire de Recherche et
|
||||
// Développement de l'Epita (LRDE).
|
||||
// Copyright (C) 2004, 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
|
||||
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
|
||||
// et Marie Curie.
|
||||
|
|
@ -93,13 +93,13 @@ namespace spot
|
|||
while (!st_blue.empty())
|
||||
{
|
||||
h.pop_notify(st_blue.front().s);
|
||||
delete st_blue.front().it;
|
||||
a_->release_iter(st_blue.front().it);
|
||||
st_blue.pop_front();
|
||||
}
|
||||
while (!st_red.empty())
|
||||
{
|
||||
h.pop_notify(st_red.front().s);
|
||||
delete st_red.front().it;
|
||||
a_->release_iter(st_red.front().it);
|
||||
st_red.pop_front();
|
||||
}
|
||||
}
|
||||
|
|
@ -158,7 +158,7 @@ namespace spot
|
|||
void pop(stack_type& st)
|
||||
{
|
||||
dec_depth();
|
||||
delete st.front().it;
|
||||
a_->release_iter(st.front().it);
|
||||
st.pop_front();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue