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
|
||||
|
||||
|
||||
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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue