Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Spot
Spot
Commits
e0bbc265
Commit
e0bbc265
authored
Jan 27, 2014
by
Alexandre Duret-Lutz
Browse files
c++11: more range-based for
* src/ltlvisit/simplify.cc, src/tgbaalgos/replayrun.cc: Here.
parent
b4c125c2
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/ltlvisit/simplify.cc
View file @
e0bbc265
// -*- coding: utf-8 -*-
// Copyright (C) 2011, 2012, 2013 Laboratoire de Recherche et
// Copyright (C) 2011, 2012, 2013
, 2014
Laboratoire de Recherche et
// Developpement de l'Epita (LRDE).
//
// This file is part of Spot, a model checking library.
...
...
@@ -994,13 +994,12 @@ namespace spot
: split_(split), c_(cache)
{
init();
multop
::
vec
::
const_iterator
end
=
v
->
end
();
for
(
multop
::
vec
::
const_iterator
i
=
v
->
begin
();
i
<
end
;
++
i
)
for (auto f: *v)
{
if
(
*
i
)
// skip null pointers left by previous simplifications
if (
f
) // skip null pointers left by previous simplifications
{
process
(
*
i
);
(
*
i
)
->
destroy
();
process(
f
);
f
->destroy();
}
}
delete v;
...
...
@@ -1259,11 +1258,9 @@ namespace spot
}
else
{
for
(
multop
::
vec
::
iterator
j
=
s
.
res_other
->
begin
();
j
!=
s
.
res_other
->
end
();
++
j
)
if
(
*
j
)
(
*
j
)
->
destroy
();
for (auto f: *s.res_other)
if (f)
f->destroy();
delete s.res_other;
delete s.res_G;
delete s.res_X;
...
...
@@ -1346,11 +1343,10 @@ namespace spot
if (s.res_Univ)
{
// Strip any F.
for
(
multop
::
vec
::
iterator
i
=
s
.
res_Univ
->
begin
();
i
!=
s
.
res_Univ
->
end
();
++
i
)
if
(
const
unop
*
u
=
is_F
(
*
i
))
for (auto& f: *s.res_Univ)
if (const unop* u = is_F(f))
{
*
i
=
u
->
child
()
->
clone
();
f
= u->child()->clone();
u->destroy();
}
const formula* fu =
...
...
@@ -1475,11 +1471,10 @@ namespace spot
if (s.res_Event)
{
// Strip any G.
for
(
multop
::
vec
::
iterator
i
=
s
.
res_Event
->
begin
();
i
!=
s
.
res_Event
->
end
();
++
i
)
if
(
const
unop
*
u
=
is_G
(
*
i
))
for (auto& f: *s.res_Event)
if (const unop* u = is_G(f))
{
*
i
=
u
->
child
()
->
clone
();
f
= u->child()->clone();
u->destroy();
}
const formula* ge =
...
...
@@ -1530,11 +1525,9 @@ namespace spot
}
else
{
for
(
multop
::
vec
::
iterator
j
=
s
.
res_other
->
begin
();
j
!=
s
.
res_other
->
end
();
++
j
)
if
(
*
j
)
(
*
j
)
->
destroy
();
for (auto f: *s.res_other)
if (f)
f->destroy();
delete s.res_other;
delete s.res_F;
delete s.res_X;
...
...
@@ -2962,11 +2955,8 @@ namespace spot
if (gs == wuset.end())
continue;
const
std
::
set
<
unsigned
>&
s
=
gs
->
second
;
std
::
set
<
unsigned
>::
const_iterator
g
;
for
(
g
=
s
.
begin
();
g
!=
s
.
end
();
++
g
)
for (unsigned pos: gs->second)
{
unsigned
pos
=
*
g
;
const binop* wu = is_binop((*res)[pos]);
if (wu)
{
...
...
@@ -3027,15 +3017,14 @@ namespace spot
multop::vec* xgv = new multop::vec;
xgv->reserve(xgs);
fset_t::iterator i;
for
(
i
=
xgset
.
begin
();
i
!=
xgset
.
end
();
++
i
)
xgv
->
push_back
(
*
i
);
for (
auto f: xgset
)
xgv->push_back(
f
);
const formula* gv =
multop::instance(multop::And, xgv);
xv->push_back(unop::instance(unop::G, gv));
}
fset_t
::
iterator
j
;
for
(
j
=
xset
.
begin
();
j
!=
xset
.
end
();
++
j
)
xv
->
push_back
(
*
j
);
for (auto f: xset)
xv->push_back(f);
const formula* av =
multop::instance(multop::And, xv);
res->push_back(unop::instance(unop::X, av));
...
...
@@ -3078,13 +3067,11 @@ namespace spot
{
multop::vec* eu = new multop::vec;
bool seen_g = false;
for
(
multop
::
vec
::
const_iterator
i
=
s
.
res_EventUniv
->
begin
();
i
!=
s
.
res_EventUniv
->
end
();
++
i
)
for (auto f: *s.res_EventUniv)
{
if
(
(
*
i
)
->
is_eventual
()
&&
(
*
i
)
->
is_universal
())
if (
f
->is_eventual() &&
f
->is_universal())
{
if
(
const
unop
*
g
=
is_G
(
*
i
))
if (const unop* g = is_G(
f
))
{
seen_g = true;
eu->push_back(g->child()->clone());
...
...
@@ -3092,11 +3079,11 @@ namespace spot
}
else
{
eu
->
push_back
(
*
i
);
eu->push_back(
f
);
}
}
else
s
.
res_other
->
push_back
(
*
i
);
s.res_other->push_back(
f
);
}
if (seen_g)
{
...
...
@@ -3139,7 +3126,7 @@ namespace spot
// (a U b) & (c U b) = (a & c) U b
// (a U b) & (c W b) = (a & c) U b
// (a W b) & (c W b) = (a & c) W b
for
(
multop
::
vec
::
iterator
i
=
s
.
res_U_or_W
->
begin
();
for (
auto
i = s.res_U_or_W->begin();
i != s.res_U_or_W->end(); ++i)
{
const binop* bo = static_cast<const binop*>(*i);
...
...
@@ -3171,7 +3158,7 @@ namespace spot
// (a R b) & (a R c) = a R (b & c)
// (a R b) & (a M c) = a M (b & c)
// (a M b) & (a M c) = a M (b & c)
for
(
multop
::
vec
::
iterator
i
=
s
.
res_R_or_M
->
begin
();
for (
auto
i = s.res_R_or_M->begin();
i != s.res_R_or_M->end(); ++i)
{
const binop* bo = static_cast<const binop*>(*i);
...
...
@@ -3204,7 +3191,7 @@ namespace spot
// F(a) & (a M b) = a M b
// F(b) & (a W b) = a U b
// F(b) & (a U b) = a U b
for
(
multop
::
vec
::
iterator
i
=
s
.
res_F
->
begin
();
for (
auto
i = s.res_F->begin();
i != s.res_F->end(); ++i)
{
bool superfluous = false;
...
...
@@ -3278,12 +3265,11 @@ namespace spot
if (!s.res_X->empty() && !opt_.favor_event_univ)
{
multop::vec* event = new multop::vec;
for
(
multop
::
vec
::
iterator
i
=
s
.
res_G
->
begin
();
i
!=
s
.
res_G
->
end
();
++
i
)
if
((
*
i
)
->
is_eventual
())
for (auto& f: *s.res_G)
if (f->is_eventual())
{
event
->
push_back
(
*
i
);
*
i
=
0
;
// Remove it from res_G.
event->push_back(
f
);
f
= 0; // Remove it from res_G.
}
s.res_X->push_back(unop_multop(unop::G,
multop::And, event));
...
...
@@ -3317,13 +3303,12 @@ namespace spot
multop::instance(multop::And, s.res_Bool);
multop::vec* ares = new multop::vec;
for
(
multop
::
vec
::
iterator
i
=
s
.
res_other
->
begin
();
i
!=
s
.
res_other
->
end
();
++
i
)
switch
((
*
i
)
->
kind
())
for (auto& f: *s.res_other)
switch (f->kind())
{
case formula::BUnOp:
{
const
bunop
*
r
=
down_cast
<
const
bunop
*>
(
*
i
);
const bunop* r = down_cast<const bunop*>(
f
);
// b && r[*i..j] = b & r if i<=1<=j
// = 0 otherwise
switch (r->op())
...
...
@@ -3333,14 +3318,14 @@ namespace spot
goto returnfalse;
ares->push_back(r->child()->clone());
r->destroy();
*
i
=
0
;
f
= 0;
break;
}
break;
}
case formula::MultOp:
{
const
multop
*
r
=
down_cast
<
const
multop
*>
(
*
i
);
const multop* r = down_cast<const multop*>(
f
);
unsigned rs = r->size();
switch (r->op())
{
...
...
@@ -3349,7 +3334,7 @@ namespace spot
for (unsigned j = 0; j < rs; ++j)
ares->push_back(r->nth(j)->clone());
r->destroy();
*
i
=
0
;
f
= 0;
break;
case multop::Concat:
// b && {r1;...;rn} =
...
...
@@ -3390,7 +3375,7 @@ namespace spot
goto returnfalse;
}
r->destroy();
*
i
=
0
;
f
= 0;
break;
}
default:
...
...
@@ -3400,8 +3385,8 @@ namespace spot
}
default:
common:
ares
->
push_back
(
*
i
);
*
i
=
0
;
ares->push_back(
f
);
f
= 0;
break;
}
delete s.res_other;
...
...
@@ -3414,14 +3399,12 @@ namespace spot
return;
returnfalse:
b->destroy();
for
(
multop
::
vec
::
iterator
i
=
s
.
res_other
->
begin
();
i
!=
s
.
res_other
->
end
();
++
i
)
if
(
*
i
)
(
*
i
)
->
destroy
();
for (auto f: *s.res_other)
if (f)
f->destroy();
delete s.res_other;
for
(
multop
::
vec
::
iterator
i
=
ares
->
begin
();
i
!=
ares
->
end
();
++
i
)
(
*
i
)
->
destroy
();
for (auto f: *ares)
f->destroy();
delete ares;
result_ = constant::false_instance();
return;
...
...
@@ -3441,14 +3424,13 @@ namespace spot
multop::vec* tail1 = new multop::vec;
multop::vec* head2 = new multop::vec;
multop::vec* tail2 = new multop::vec;
for
(
multop
::
vec
::
iterator
i
=
s
.
res_other
->
begin
();
i
!=
s
.
res_other
->
end
();
++
i
)
for (auto& i: *s.res_other)
{
if
(
!
*
i
)
if (!i)
continue;
if
(
(
*
i
)
->
kind
()
!=
formula
::
MultOp
)
if (
i
->kind() != formula::MultOp)
continue;
const
multop
*
f
=
down_cast
<
const
multop
*>
(
*
i
);
const multop* f = down_cast<const multop*>(i);
const formula* h = f->nth(0);
if (!h->is_boolean())
continue;
...
...
@@ -3461,8 +3443,8 @@ namespace spot
for (unsigned j = 1; j < s; ++j)
tail->push_back(f->nth(j)->clone());
tail1->push_back(multop::instance(op, tail));
(
*
i
)
->
destroy
();
*
i
=
0
;
i
->destroy();
i = 0;
}
else if (op == multop::Fusion)
{
...
...
@@ -3472,8 +3454,8 @@ namespace spot
for (unsigned j = 1; j < s; ++j)
tail->push_back(f->nth(j)->clone());
tail2->push_back(multop::instance(op, tail));
(
*
i
)
->
destroy
();
*
i
=
0
;
i
->destroy();
i = 0;
}
else
{
...
...
@@ -3519,14 +3501,13 @@ namespace spot
multop::vec* tail3 = new multop::vec;
multop::vec* head4 = new multop::vec;
multop::vec* tail4 = new multop::vec;
for
(
multop
::
vec
::
iterator
i
=
s
.
res_other
->
begin
();
i
!=
s
.
res_other
->
end
();
++
i
)
for (auto& i: *s.res_other)
{
if
(
!
*
i
)
if (!i)
continue;
if
(
(
*
i
)
->
kind
()
!=
formula
::
MultOp
)
if (
i
->kind() != formula::MultOp)
continue;
const
multop
*
f
=
down_cast
<
const
multop
*>
(
*
i
);
const multop* f = down_cast<const multop*>(i);
unsigned s = f->size() - 1;
const formula* t = f->nth(s);
if (!t->is_boolean())
...
...
@@ -3539,8 +3520,8 @@ namespace spot
for (unsigned j = 0; j < s; ++j)
head->push_back(f->nth(j)->clone());
head3->push_back(multop::instance(op, head));
(
*
i
)
->
destroy
();
*
i
=
0
;
i
->destroy();
i = 0;
}
else if (op == multop::Fusion)
{
...
...
@@ -3549,8 +3530,8 @@ namespace spot
for (unsigned j = 0; j < s; ++j)
head->push_back(f->nth(j)->clone());
head4->push_back(multop::instance(op, head));
(
*
i
)
->
destroy
();
*
i
=
0
;
i
->destroy();
i = 0;
}
else
{
...
...
@@ -3718,11 +3699,8 @@ namespace spot
fmap_t::const_iterator gs = rmset.find(x);
if (gs == rmset.end())
continue;
const
std
::
set
<
unsigned
>&
s
=
gs
->
second
;
std
::
set
<
unsigned
>::
const_iterator
g
;
for
(
g
=
s
.
begin
();
g
!=
s
.
end
();
++
g
)
for (unsigned pos: gs->second)
{
unsigned
pos
=
*
g
;
const binop* rm = is_binop((*res)[pos]);
if (rm)
{
...
...
@@ -3791,17 +3769,15 @@ namespace spot
// Group all XF(a)|XF(b|c|...)|... as XF(a|b|c|...)
multop::vec* xfv = new multop::vec;
xfv->reserve(xfs);
fset_t
::
iterator
i
;
for
(
i
=
xfset
.
begin
();
i
!=
xfset
.
end
();
++
i
)
xfv
->
push_back
(
*
i
);
for (auto f: xfset)
xfv->push_back(f);
const formula* fv =
multop::instance(multop::Or, xfv);
xv->push_back(unop::instance(unop::F, fv));
}
// Also gather the remaining Xa | X(b|c) as X(b|c).
fset_t
::
iterator
j
;
for
(
j
=
xset
.
begin
();
j
!=
xset
.
end
();
++
j
)
xv
->
push_back
(
*
j
);
for (auto f: xset)
xv->push_back(f);
const formula* ov = multop::instance(multop::Or, xv);
res->push_back(unop::instance(unop::X, ov));
}
...
...
@@ -3874,12 +3850,10 @@ namespace spot
// If some of the EventUniv formulae start
// with an F, Gather them all under the
// same F. Striping any leading F.
for
(
multop
::
vec
::
iterator
i
=
s
.
res_EventUniv
->
begin
();
i
!=
s
.
res_EventUniv
->
end
();
++
i
)
if
(
const
unop
*
u
=
is_F
(
*
i
))
for (auto& f: *s.res_EventUniv)
if (const unop* u = is_F(f))
{
*
i
=
u
->
child
()
->
clone
();
f
= u->child()->clone();
u->destroy();
seen_f = true;
}
...
...
@@ -3930,7 +3904,7 @@ namespace spot
// (a U b) | (a U c) = a U (b | c)
// (a W b) | (a U c) = a W (b | c)
// (a W b) | (a W c) = a W (b | c)
for
(
multop
::
vec
::
iterator
i
=
s
.
res_U_or_W
->
begin
();
for (
auto
i = s.res_U_or_W->begin();
i != s.res_U_or_W->end(); ++i)
{
const binop* bo = static_cast<const binop*>(*i);
...
...
@@ -3962,7 +3936,7 @@ namespace spot
// (a R b) | (c R b) = (a | c) R b
// (a R b) | (c M b) = (a | c) R b
// (a M b) | (c M b) = (a | c) M b
for
(
multop
::
vec
::
iterator
i
=
s
.
res_R_or_M
->
begin
();
for (
auto
i = s.res_R_or_M->begin();
i != s.res_R_or_M->end(); ++i)
{
const binop* bo = static_cast<const binop*>(*i);
...
...
@@ -3995,11 +3969,10 @@ namespace spot
// G(a) | (a W b) = a W b
// G(b) | (a R b) = a R b.
// G(b) | (a M b) = a R b.
for
(
multop
::
vec
::
iterator
i
=
s
.
res_G
->
begin
();
i
!=
s
.
res_G
->
end
();
++
i
)
for (auto& f: *s.res_G)
{
bool superfluous = false;
const
unop
*
uo
=
static_cast
<
const
unop
*>
(
*
i
);
const unop* uo = static_cast<const unop*>(
f
);
const formula* c = uo->child();
fmap_t::iterator j = uwmap.find(c);
...
...
@@ -4036,8 +4009,8 @@ namespace spot
}
if (superfluous)
{
(
*
i
)
->
destroy
();
*
i
=
0
;
f
->destroy();
f
= 0;
}
}
...
...
@@ -4067,12 +4040,11 @@ namespace spot
if (!s.res_X->empty())
{
multop::vec* univ = new multop::vec;
for
(
multop
::
vec
::
iterator
i
=
s
.
res_F
->
begin
();
i
!=
s
.
res_F
->
end
();
++
i
)
if
((
*
i
)
->
is_universal
())
for (auto& f: *s.res_F)
if (f->is_universal())
{
univ
->
push_back
(
*
i
);
*
i
=
0
;
// Remove it from res_F.
univ->push_back(
f
);
f
= 0; // Remove it from res_F.
}
s.res_X->push_back(unop_multop(unop::F,
multop::Or, univ));
...
...
@@ -4160,14 +4132,13 @@ namespace spot
multop::vec* tail1 = new multop::vec;
multop::vec* head2 = new multop::vec;
multop::vec* tail2 = new multop::vec;
for
(
multop
::
vec
::
iterator
i
=
s
.
res_other
->
begin
();
i
!=
s
.
res_other
->
end
();
++
i
)
for (auto& i: *s.res_other)
{
if
(
!
*
i
)
if (!i)
continue;
if
(
(
*
i
)
->
kind
()
!=
formula
::
MultOp
)
if (
i
->kind() != formula::MultOp)
continue;
const
multop
*
f
=
down_cast
<
const
multop
*>
(
*
i
);
const multop* f = down_cast<const multop*>(i);
const formula* h = f->nth(0);
if (!h->is_boolean())
continue;
...
...
@@ -4180,8 +4151,8 @@ namespace spot
for (unsigned j = 1; j < s; ++j)
tail->push_back(f->nth(j)->clone());
tail1->push_back(multop::instance(op, tail));
(
*
i
)
->
destroy
();
*
i
=
0
;
i
->destroy();
i = 0;
}
else if (op == multop::Fusion)
{
...
...
@@ -4191,8 +4162,8 @@ namespace spot
for (unsigned j = 1; j < s; ++j)
tail->push_back(f->nth(j)->clone());
tail2->push_back(multop::instance(op, tail));
(
*
i
)
->
destroy
();
*
i
=
0
;
i
->destroy();
i = 0;
}
else
{
...
...
@@ -4238,14 +4209,13 @@ namespace spot
multop::vec* tail3 = new multop::vec;
multop::vec* head4 = new multop::vec;
multop::vec* tail4 = new multop::vec;
for
(
multop
::
vec
::
iterator
i
=
s
.
res_other
->
begin
();
i
!=
s
.
res_other
->
end
();
++
i
)
for (auto& i: *s.res_other)
{
if
(
!
*
i
)
if (!i)
continue;
if
(
(
*
i
)
->
kind
()
!=
formula
::
MultOp
)
if (
i
->kind() != formula::MultOp)
continue;
const
multop
*
f
=
down_cast
<
const
multop
*>
(
*
i
);
const multop* f = down_cast<const multop*>(i);
unsigned s = f->size() - 1;
const formula* t = f->nth(s);
if (!t->is_boolean())
...
...
@@ -4258,8 +4228,8 @@ namespace spot
for (unsigned j = 0; j < s; ++j)
head->push_back(f->nth(j)->clone());
head3->push_back(multop::instance(op, head));
(
*
i
)
->
destroy
();
*
i
=
0
;
i
->destroy();
i = 0;
}
else if (op == multop::Fusion)
{
...
...
@@ -4268,8 +4238,8 @@ namespace spot
for (unsigned j = 0; j < s; ++j)
head->push_back(f->nth(j)->clone());
head4->push_back(multop::instance(op, head));
(
*
i
)
->
destroy
();
*
i
=
0
;
i
->destroy();
i = 0;
}
else
{
...
...
src/tgbaalgos/replayrun.cc
View file @
e0bbc265
...
...
@@ -95,9 +95,8 @@ namespace spot
std
::
ostringstream
msg
;
if
(
o
!=
seen
.
end
())
{
std
::
set
<
int
>::
const_iterator
d
;
for
(
d
=
o
->
second
.
begin
();
d
!=
o
->
second
.
end
();
++
d
)
msg
<<
" == "
<<
*
d
;
for
(
auto
d
:
o
->
second
)
msg
<<
" == "
<<
d
;
o
->
second
.
insert
(
serial
);
s
->
destroy
();
s
=
o
->
first
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment