diff --git a/NEWS b/NEWS index 3315779f0..da2211029 100644 --- a/NEWS +++ b/NEWS @@ -48,6 +48,7 @@ New in spot 1.99.4a (not yet released) https://spot.lrde.epita.fr/tut01.html for examples. * The Debian package is now compiled for all Python3 versions supported by Debian, not just the default one. + * Automata now have get_name()/set_name() methods. Bugs fixed: diff --git a/wrap/python/ajax/spotcgi.in b/wrap/python/ajax/spotcgi.in index 425075724..cc5560705 100755 --- a/wrap/python/ajax/spotcgi.in +++ b/wrap/python/ajax/spotcgi.in @@ -658,6 +658,7 @@ if output_type == 'm': unbufprint('
') dont_run_dot = print_stats(automaton) unbufprint('
') + automaton.set_name(str(f)) render_automaton(automaton, dont_run_dot) automaton = 0 finish() @@ -752,6 +753,7 @@ if output_type == 'a': del s else: # 't' or 's' dont_run_dot = print_stats(degen, True) + automaton.set_name(str(f)) render_automaton(degen, dont_run_dot) degen = 0 automaton = 0 diff --git a/wrap/python/spot_impl.i b/wrap/python/spot_impl.i index 97571e824..40b1ea67e 100644 --- a/wrap/python/spot_impl.i +++ b/wrap/python/spot_impl.i @@ -187,6 +187,13 @@ using namespace spot; $result = SWIG_NewPointerObj(new spot::formula($1), $descriptor(spot::formula*), SWIG_POINTER_OWN); } +%typemap(out) std::string* { + if (!$1) + $result = SWIG_Py_Void(); + else + $result = SWIG_FromCharPtr($1->c_str()); +} + %exception { try { $action @@ -330,6 +337,18 @@ namespace std { std::string __str__() { return spot::str_psl(*self); } } +%extend spot::twa { + void set_name(std::string name) + { + self->set_named_prop("automaton-name", new std::string(name)); + } + + std::string* get_name() + { + return self->get_named_prop("automaton-name"); + } +} + %extend spot::acc_cond::acc_code { std::string __repr__() { diff --git a/wrap/python/tests/remfin.py b/wrap/python/tests/remfin.py index 00ee84042..20565b4e6 100644 --- a/wrap/python/tests/remfin.py +++ b/wrap/python/tests/remfin.py @@ -35,3 +35,7 @@ State: 0 State: 1 [t] 1 --END--""") + +assert(aut.get_name() == None) +aut.set_name("test me") +assert(aut.get_name() == "test me")