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.
This commit is contained in:
parent
84f9be9e8e
commit
337925c94a
2 changed files with 24 additions and 2 deletions
|
|
@ -588,7 +588,7 @@ def translate(formula, *args):
|
||||||
formula.translate = translate
|
formula.translate = translate
|
||||||
|
|
||||||
|
|
||||||
def postprocess(automaton, *args):
|
def postprocess(automaton, *args, formula=None):
|
||||||
"""Post process an automaton.
|
"""Post process an automaton.
|
||||||
|
|
||||||
This applies a number of simlification algorithms, depending on
|
This applies a number of simlification algorithms, depending on
|
||||||
|
|
@ -607,12 +607,16 @@ def postprocess(automaton, *args):
|
||||||
(or 'SBAcc' for short)
|
(or 'SBAcc' for short)
|
||||||
|
|
||||||
The default corresponds to 'generic', 'small' and 'high'.
|
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()
|
p = postprocessor()
|
||||||
if type(automaton) == str:
|
if type(automaton) == str:
|
||||||
automaton = globals()['automaton'](automaton)
|
automaton = globals()['automaton'](automaton)
|
||||||
_postproc_translate_options(p, postprocessor.Generic, *args)
|
_postproc_translate_options(p, postprocessor.Generic, *args)
|
||||||
return p.run(automaton)
|
return p.run(automaton, formula)
|
||||||
|
|
||||||
|
|
||||||
twa.postprocess = postprocess
|
twa.postprocess = postprocess
|
||||||
|
|
|
||||||
|
|
@ -180,6 +180,24 @@ using namespace spot;
|
||||||
};
|
};
|
||||||
%apply char** OUTPUT { char** err };
|
%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 {
|
%typemap(out) spot::formula {
|
||||||
if (!$1)
|
if (!$1)
|
||||||
$result = SWIG_Py_Void();
|
$result = SWIG_Py_Void();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue