* iface/gspn/ltlgspn.cc: New option -L.

* iface/gspn/ssp.cc, iface/gspn/ssp.hh (gspn_ssp_interface)
support for a new option "pushfront".
This commit is contained in:
Alexandre Duret-Lutz 2007-07-23 13:56:34 +00:00
parent fd2033aaba
commit b8fd421232
4 changed files with 25 additions and 6 deletions

View file

@ -1,5 +1,9 @@
2007-07-23 Alexandre Duret-Lutz <adl@src.lip6.fr> 2007-07-23 Alexandre Duret-Lutz <adl@src.lip6.fr>
* iface/gspn/ltlgspn.cc: New option -L.
* iface/gspn/ssp.cc, iface/gspn/ssp.hh (gspn_ssp_interface)
support for a new option "pushfront".
* NEWS, configure.in: Bump version to 0.4a. * NEWS, configure.in: Bump version to 0.4a.
2007-07-17 Alexandre Duret-Lutz <adl@src.lip6.fr> 2007-07-17 Alexandre Duret-Lutz <adl@src.lip6.fr>

View file

@ -1,4 +1,4 @@
// Copyright (C) 2003, 2004, 2006 Laboratoire d'Informatique de Paris 6 // Copyright (C) 2003, 2004, 2006, 2007 Laboratoire d'Informatique de Paris 6
// (LIP6), département Systèmes Répartis Coopératifs (SRC), // (LIP6), département Systèmes Répartis Coopératifs (SRC),
// Université Pierre et Marie Curie. // Université Pierre et Marie Curie.
// //
@ -53,6 +53,8 @@ syntax(char* prog)
#ifdef SSP #ifdef SSP
<< " -1 do not use a double hash (for inclusion check)" << " -1 do not use a double hash (for inclusion check)"
<< std::endl << std::endl
<< " -L use LIFO ordering for inclusion check"
<< std::endl
#endif #endif
<< " -c compute an example" << std::endl << " -c compute an example" << std::endl
<< " (instead of just checking for emptiness)" << std::endl << " (instead of just checking for emptiness)" << std::endl
@ -108,6 +110,7 @@ main(int argc, char **argv)
#ifdef SSP #ifdef SSP
bool doublehash = true; bool doublehash = true;
bool stack_inclusion = true; bool stack_inclusion = true;
bool pushfront = false;
#endif #endif
std::string dead = "true"; std::string dead = "true";
@ -120,6 +123,10 @@ main(int argc, char **argv)
{ {
doublehash = false; doublehash = false;
} }
else if (!strcmp(argv[formula_index], "-L"))
{
pushfront = true;
}
else else
#endif #endif
if (!strcmp(argv[formula_index], "-c")) if (!strcmp(argv[formula_index], "-c"))
@ -209,7 +216,8 @@ main(int argc, char **argv)
#if SSP #if SSP
bool inclusion = (check != Couvreur && check != Couvreur2); bool inclusion = (check != Couvreur && check != Couvreur2);
spot::gspn_ssp_interface gspn(2, argv, dict, env, inclusion, doublehash); spot::gspn_ssp_interface gspn(2, argv, dict, env, inclusion,
doublehash, pushfront);
spot::tgba_parse_error_list pel1; spot::tgba_parse_error_list pel1;
spot::tgba_explicit* control = spot::tgba_parse(argv[formula_index + 2], spot::tgba_explicit* control = spot::tgba_parse(argv[formula_index + 2],

View file

@ -49,6 +49,7 @@ namespace spot
} }
static bool doublehash; static bool doublehash;
static bool pushfront;
} }
// state_gspn_ssp // state_gspn_ssp
@ -539,10 +540,12 @@ namespace spot
const const
ltl::declarative_environment& env, ltl::declarative_environment& env,
bool inclusion, bool inclusion,
bool doublehash_) bool doublehash_,
bool pushfront_)
: dict_(dict), env_(env) : dict_(dict), env_(env)
{ {
doublehash = doublehash_; doublehash = doublehash_;
pushfront = pushfront_;
if (inclusion) if (inclusion)
inclusion_version(); inclusion_version();
@ -863,7 +866,10 @@ namespace spot
if (sg) if (sg)
{ {
const void* cont = container_(sg); const void* cont = container_(sg);
contained[cont][s_->right()].push_front(s); if (pushfront)
contained[cont][s_->right()].push_front(s);
else
contained[cont][s_->right()].push_back(s);
} }
} }

View file

@ -1,4 +1,4 @@
// Copyright (C) 2003, 2004, 2006 Laboratoire d'Informatique de // Copyright (C) 2003, 2004, 2006, 2007 Laboratoire d'Informatique de
// Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC), // Paris 6 (LIP6), département Systèmes Répartis Coopératifs (SRC),
// Université Pierre et Marie Curie. // Université Pierre et Marie Curie.
// //
@ -41,7 +41,8 @@ namespace spot
gspn_ssp_interface(int argc, char **argv, gspn_ssp_interface(int argc, char **argv,
bdd_dict* dict, const ltl::declarative_environment& env, bdd_dict* dict, const ltl::declarative_environment& env,
bool inclusion = false, bool inclusion = false,
bool doublehash = true); bool doublehash = true,
bool pushfront = false);
~gspn_ssp_interface(); ~gspn_ssp_interface();
tgba* automaton(const tgba* operand) const; tgba* automaton(const tgba* operand) const;
private: private: