Commit 337925c9 authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz

python: change postprocess to take an optional formula

Doing so also work around some differences between Swig 3.0.2 and 3.0.7
observed on our build farm.

* wrap/python/spot.py: Here.
* wrap/python/spot_impl.i: Recognize None as a null formula
on input.
parent 84f9be9e
......@@ -588,7 +588,7 @@ def translate(formula, *args):
formula.translate = translate
def postprocess(automaton, *args):
def postprocess(automaton, *args, formula=None):
"""Post process an automaton.
This applies a number of simlification algorithms, depending on
......@@ -607,12 +607,16 @@ def postprocess(automaton, *args):
(or 'SBAcc' for short)
The default corresponds to 'generic', 'small' and 'high'.
If a formula denoted by this automaton is known, pass it to as the
optional `formula` argument; it can help some algorithms by
providing an easy way to complement the automaton.
"""
p = postprocessor()
if type(automaton) == str:
automaton = globals()['automaton'](automaton)
_postproc_translate_options(p, postprocessor.Generic, *args)
return p.run(automaton)
return p.run(automaton, formula)
twa.postprocess = postprocess
......
......@@ -180,6 +180,24 @@ using namespace spot;
};
%apply char** OUTPUT { char** err };
// Allow None to be passed for formula. Some functions like
// postprocessor::run() take an optional formula that defaults to
// nullptr. So it make sense to have function that take formulas that
// default to None on the Python side.
%typemap(in) spot::formula {
void *tmp;
int res = SWIG_ConvertPtr($input, &tmp, $descriptor(spot::formula*), 0);
if (!SWIG_IsOK(res)) {
%argument_fail(res, "spot::formula", $symname, $argnum);
}
if (tmp) {
spot::formula* temp = reinterpret_cast< spot::formula * >(tmp);
$1 = *temp;
if (SWIG_IsNewObj(res)) delete temp;
}
// if tmp == nullptr, then the default value of $1 is fine.
}
%typemap(out) spot::formula {
if (!$1)
$result = SWIG_Py_Void();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment