* src/ltlvisit/reduce.hh: Mark the file as obsolete. (reduce): Declare this function as obsolete. * src/ltlvisit/reduce.cc: Define SKIP_DEPRECATED_WARNING so we can include reduce.hh. * src/sanity/includes.test: Also use SKIP_DEPRECATED_WARNING when compiling headers. * iface/dve2/dve2check.cc, src/ltltest/equals.cc, src/ltltest/randltl.cc, src/ltltest/reduc.cc, src/tgbaalgos/ltl2tgba_fm.hh, src/tgbaalgos/ltl2tgba_fm.cc, src/tgbatest/randtgba.cc, wrap/python/ajax/spot.in, wrap/python/spot.i: Adjust to use ltl_simplifier. * src/tgbatest/ltl2tgba.cc: Adjust to use ltl_simplifier, and replace -fr1...-fr7 options by a single -fr option. * src/tgbatest/spotlbtt.test: Adjust -fr flags accordingly. * src/tgbatest/reductgba.cc: Do not include reduce.hh.
355 lines
9.3 KiB
OpenEdge ABL
355 lines
9.3 KiB
OpenEdge ABL
// -*- encoding: utf-8 -*-
|
|
// Copyright (C) 2009, 2010, 2011, 2012 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.
|
|
//
|
|
// This file is part of Spot, a model checking library.
|
|
//
|
|
// Spot is free software; you can redistribute it and/or modify it
|
|
// under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation; either version 2 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Spot is distributed in the hope that it will be useful, but WITHOUT
|
|
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
|
// License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Spot; see the file COPYING. If not, write to the Free
|
|
// Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
// 02111-1307, USA.
|
|
|
|
%{
|
|
// Workaround for SWIG 2.0.2 using ptrdiff_t but not including cstddef.
|
|
// It matters with g++ 4.6.
|
|
#include <cstddef>
|
|
%}
|
|
|
|
%module(directors="1") spot
|
|
|
|
%include "std_string.i"
|
|
%include "std_list.i"
|
|
|
|
%import "buddy.i"
|
|
|
|
%{
|
|
#include <iostream>
|
|
#include <fstream>
|
|
#include <sstream>
|
|
#include <signal.h>
|
|
|
|
#include "misc/version.hh"
|
|
#include "misc/bddalloc.hh"
|
|
#include "misc/minato.hh"
|
|
#include "misc/modgray.hh"
|
|
#include "misc/optionmap.hh"
|
|
#include "misc/random.hh"
|
|
|
|
#include "ltlast/formula.hh"
|
|
#include "ltlast/refformula.hh"
|
|
#include "ltlast/atomic_prop.hh"
|
|
#include "ltlast/binop.hh"
|
|
#include "ltlast/constant.hh"
|
|
#include "ltlast/multop.hh"
|
|
#include "ltlast/unop.hh"
|
|
#include "ltlast/visitor.hh"
|
|
|
|
#include "ltlenv/environment.hh"
|
|
#include "ltlenv/defaultenv.hh"
|
|
|
|
#include "ltlparse/public.hh"
|
|
|
|
#include "ltlvisit/dotty.hh"
|
|
#include "ltlvisit/dump.hh"
|
|
#include "ltlvisit/lunabbrev.hh"
|
|
#include "ltlvisit/nenoform.hh"
|
|
#include "ltlvisit/simplify.hh"
|
|
#include "ltlvisit/tostring.hh"
|
|
#include "ltlvisit/tunabbrev.hh"
|
|
|
|
#include "tgba/bdddict.hh"
|
|
#include "tgba/bddprint.hh"
|
|
#include "tgba/state.hh"
|
|
#include "tgba/succiter.hh"
|
|
#include "tgba/tgba.hh"
|
|
#include "tgba/statebdd.hh"
|
|
#include "tgba/taatgba.hh"
|
|
#include "tgba/tgbabddcoredata.hh"
|
|
#include "tgba/succiterconcrete.hh"
|
|
#include "tgba/tgbabddconcrete.hh"
|
|
#include "tgba/tgbaexplicit.hh"
|
|
#include "tgba/tgbaproduct.hh"
|
|
#include "tgba/tgbatba.hh"
|
|
|
|
#include "tgbaalgos/dottydec.hh"
|
|
#include "tgbaalgos/dotty.hh"
|
|
#include "tgbaalgos/dupexp.hh"
|
|
#include "tgbaalgos/emptiness.hh"
|
|
#include "tgbaalgos/gtec/gtec.hh"
|
|
#include "tgbaalgos/lbtt.hh"
|
|
#include "tgbaalgos/ltl2taa.hh"
|
|
#include "tgbaalgos/ltl2tgba_fm.hh"
|
|
#include "tgbaalgos/ltl2tgba_lacim.hh"
|
|
#include "tgbaalgos/magic.hh"
|
|
#include "tgbaalgos/minimize.hh"
|
|
#include "tgbaalgos/neverclaim.hh"
|
|
#include "tgbaalgos/rundotdec.hh"
|
|
#include "tgbaalgos/save.hh"
|
|
#include "tgbaalgos/sccfilter.hh"
|
|
#include "tgbaalgos/stats.hh"
|
|
#include "tgbaalgos/simulation.hh"
|
|
|
|
using namespace spot::ltl;
|
|
using namespace spot;
|
|
%}
|
|
|
|
// For spot::emptiness_check_instantiator::construct and any other
|
|
// function that return errors via a "char **err" argument.
|
|
%typemap(in, numinputs=0) char** OUTPUT (char* temp)
|
|
"$1 = &temp;";
|
|
%typemap(argout) char** OUTPUT {
|
|
PyObject *obj = SWIG_FromCharPtr(*$1);
|
|
if (!$result) {
|
|
$result = obj;
|
|
//# If the function returns null_ptr (i.e. Py_None), we
|
|
//# don't want to override it with OUTPUT as in the
|
|
//# default implementation of t_output_helper.
|
|
// } else if ($result == Py_None) {
|
|
// Py_DECREF($result);
|
|
// $result = obj;
|
|
} else {
|
|
if (!PyList_Check($result)) {
|
|
PyObject *o2 = $result;
|
|
$result = PyList_New(1);
|
|
PyList_SetItem($result, 0, o2);
|
|
}
|
|
PyList_Append($result,obj);
|
|
Py_DECREF(obj);
|
|
}
|
|
};
|
|
%apply char** OUTPUT { char** err };
|
|
|
|
// False and True cannot be redefined in Python3, even in a class.
|
|
// Spot uses these in an enum of the constant class.
|
|
%rename(FalseVal) False;
|
|
%rename(TrueVal) True;
|
|
|
|
%include "misc/version.hh"
|
|
%include "misc/bddalloc.hh"
|
|
%include "misc/minato.hh"
|
|
%include "misc/optionmap.hh"
|
|
%include "misc/random.hh"
|
|
|
|
%feature("director") spot::loopless_modular_mixed_radix_gray_code;
|
|
%include "misc/modgray.hh"
|
|
|
|
%include "ltlast/formula.hh"
|
|
%include "ltlast/refformula.hh"
|
|
%include "ltlast/atomic_prop.hh"
|
|
%include "ltlast/binop.hh"
|
|
%include "ltlast/constant.hh"
|
|
%include "ltlast/multop.hh"
|
|
%include "ltlast/unop.hh"
|
|
%include "ltlast/visitor.hh"
|
|
|
|
%include "ltlenv/environment.hh"
|
|
%include "ltlenv/defaultenv.hh"
|
|
|
|
%include "ltlparse/public.hh"
|
|
|
|
%include "ltlvisit/dotty.hh"
|
|
%include "ltlvisit/dump.hh"
|
|
%include "ltlvisit/lunabbrev.hh"
|
|
%include "ltlvisit/nenoform.hh"
|
|
%include "ltlvisit/simplify.hh"
|
|
%include "ltlvisit/tostring.hh"
|
|
%include "ltlvisit/tunabbrev.hh"
|
|
|
|
%feature("new") spot::emptiness_check::check;
|
|
%feature("new") spot::emptiness_check_instantiator::construct;
|
|
%feature("new") spot::emptiness_check_instantiator::instanciate;
|
|
%feature("new") spot::emptiness_check_result::accepting_run;
|
|
%feature("new") spot::explicit_magic_search;
|
|
%feature("new") spot::explicit_se05_search;
|
|
%feature("new") spot::ltl_to_taa;
|
|
%feature("new") spot::ltl_to_tgba_fm;
|
|
%feature("new") spot::ltl_to_tgba_lacim;
|
|
%feature("new") spot::minimize_wdba;
|
|
%feature("new") spot::minimize_monitor;
|
|
%feature("new") spot::scc_filter;
|
|
%feature("new") spot::tgba_dupexp_bfs;
|
|
%feature("new") spot::tgba_dupexp_dfs;
|
|
%feature("new") spot::tgba::get_init_state;
|
|
%feature("new") spot::tgba::succ_iter;
|
|
%feature("new") spot::tgba_succ_iterator::current_state;
|
|
%feature("new") spot::simulation;
|
|
// Help SWIG with namespace lookups.
|
|
#define ltl spot::ltl
|
|
%include "tgba/bdddict.hh"
|
|
%include "tgba/bddprint.hh"
|
|
%include "tgba/state.hh"
|
|
%include "tgba/succiter.hh"
|
|
%include "tgba/tgba.hh"
|
|
%include "tgba/statebdd.hh"
|
|
%include "tgba/taatgba.hh"
|
|
%include "tgba/tgbabddcoredata.hh"
|
|
%include "tgba/succiterconcrete.hh"
|
|
%include "tgba/tgbabddconcrete.hh"
|
|
%include "tgba/tgbaexplicit.hh"
|
|
%include "tgba/tgbaproduct.hh"
|
|
%include "tgba/tgbatba.hh"
|
|
|
|
%template(explicit_graph__string_tgba)
|
|
spot::explicit_graph<state_explicit_string, tgba>;
|
|
%template(explicit_graph__number_tgba)
|
|
spot::explicit_graph<state_explicit_number, tgba>;
|
|
%template(explicit_graph__formula_tgba)
|
|
spot::explicit_graph<state_explicit_formula, tgba>;
|
|
%template(tgba_explicit__string) spot::tgba_explicit<state_explicit_string>;
|
|
%template(tgba_explicit__number) spot::tgba_explicit<state_explicit_number>;
|
|
%template(tgba_explicit__formula) spot::tgba_explicit<state_explicit_formula>;
|
|
|
|
%include "tgbaalgos/dottydec.hh"
|
|
%include "tgbaalgos/dotty.hh"
|
|
%include "tgbaalgos/dupexp.hh"
|
|
%include "tgbaalgos/emptiness.hh"
|
|
%include "tgbaalgos/gtec/gtec.hh"
|
|
%include "tgbaalgos/lbtt.hh"
|
|
%include "tgbaalgos/ltl2taa.hh"
|
|
%include "tgbaalgos/ltl2tgba_fm.hh"
|
|
%include "tgbaalgos/ltl2tgba_lacim.hh"
|
|
%include "tgbaalgos/magic.hh"
|
|
%include "tgbaalgos/minimize.hh"
|
|
%include "tgbaalgos/neverclaim.hh"
|
|
%include "tgbaalgos/rundotdec.hh"
|
|
%include "tgbaalgos/save.hh"
|
|
%include "tgbaalgos/sccfilter.hh"
|
|
%include "tgbaalgos/stats.hh"
|
|
%include "tgbaalgos/simulation.hh"
|
|
#undef ltl
|
|
|
|
%extend spot::ltl::formula {
|
|
|
|
// When comparing formula, make sure Python compare our
|
|
// pointers, not the pointers to its wrappers.
|
|
|
|
// __cmp__ is for Python 2.0
|
|
int __cmp__(const spot::ltl::formula* b) { return self - b; }
|
|
// These are for Python 2.1+ or 3.x. They more closely match
|
|
// the logic in Spot.
|
|
bool __lt__(const spot::ltl::formula* b)
|
|
{ spot::ltl::formula_ptr_less_than lt; return lt(self, b); }
|
|
bool __le__(const spot::ltl::formula* b)
|
|
{ spot::ltl::formula_ptr_less_than lt; return !lt(b, self); }
|
|
bool __eq__(const spot::ltl::formula* b) { return self == b; }
|
|
bool __ne__(const spot::ltl::formula* b) { return self != b; }
|
|
bool __gt__(const spot::ltl::formula* b)
|
|
{ spot::ltl::formula_ptr_less_than lt; return lt(b, self); }
|
|
bool __ge__(const spot::ltl::formula* b)
|
|
{ spot::ltl::formula_ptr_less_than lt; return !lt(self, b); }
|
|
|
|
size_t __hash__() { return self->hash(); }
|
|
|
|
std::string
|
|
__str__(void)
|
|
{
|
|
return spot::ltl::to_string(self);
|
|
}
|
|
|
|
}
|
|
|
|
%nodefaultctor std::ostream;
|
|
namespace std {
|
|
class ostream {};
|
|
class ofstream : public ostream
|
|
{
|
|
public:
|
|
ofstream(const char *fn);
|
|
~ofstream();
|
|
};
|
|
class ostringstream : public ostream
|
|
{
|
|
public:
|
|
ostringstream();
|
|
std::string str() const;
|
|
~ostringstream();
|
|
};
|
|
}
|
|
|
|
%feature("new") minimize_obligation_new;
|
|
|
|
%inline %{
|
|
|
|
// A variant of minimize_obligation() that always return a new object.
|
|
const spot::tgba*
|
|
minimize_obligation_new(const spot::tgba* a, const spot::ltl::formula* f)
|
|
{
|
|
const tgba* res = spot::minimize_obligation(a, f);
|
|
// Return 0 if the output is the same as the input, otherwise
|
|
// it is hard for swig to know if the output is "new" or not.
|
|
if (res == a)
|
|
return 0;
|
|
else
|
|
return res;
|
|
}
|
|
|
|
spot::ltl::parse_error_list
|
|
empty_parse_error_list()
|
|
{
|
|
parse_error_list l;
|
|
return l;
|
|
}
|
|
|
|
std::ostream&
|
|
get_cout()
|
|
{
|
|
return std::cout;
|
|
}
|
|
|
|
void
|
|
nl_cout()
|
|
{
|
|
std::cout << std::endl;
|
|
}
|
|
|
|
std::ostream&
|
|
get_cerr()
|
|
{
|
|
return std::cerr;
|
|
}
|
|
|
|
void
|
|
nl_cerr()
|
|
{
|
|
std::cerr << std::endl;
|
|
}
|
|
|
|
void
|
|
print_on(std::ostream& on, const std::string& what)
|
|
{
|
|
on << what;
|
|
}
|
|
|
|
int
|
|
unblock_signal(int signum)
|
|
{
|
|
sigset_t set;
|
|
sigemptyset(&set);
|
|
sigaddset(&set, signum);
|
|
return sigprocmask(SIG_UNBLOCK, &set, 0);
|
|
}
|
|
|
|
%}
|
|
|
|
%extend spot::ltl::parse_error_list {
|
|
|
|
bool
|
|
__nonzero__()
|
|
{
|
|
return !self->empty();
|
|
}
|
|
|
|
}
|