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")