summaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/c/pgf/pgf.c6
-rw-r--r--src/runtime/c/pgf/pgf.h3
-rw-r--r--src/runtime/python/pypgf.c16
3 files changed, 24 insertions, 1 deletions
diff --git a/src/runtime/c/pgf/pgf.c b/src/runtime/c/pgf/pgf.c
index 898d3be05..f0da5bddf 100644
--- a/src/runtime/c/pgf/pgf.c
+++ b/src/runtime/c/pgf/pgf.c
@@ -109,6 +109,12 @@ pgf_get_language(PgfPGF* pgf, PgfCId lang)
return gu_map_get(pgf->concretes, &lang, PgfConcr*);
}
+GuString
+pgf_concrete_name(PgfConcr* concr)
+{
+ return concr->name;
+}
+
void
pgf_iter_categories(PgfPGF* pgf, GuMapItor* fn, GuExn* err)
{
diff --git a/src/runtime/c/pgf/pgf.h b/src/runtime/c/pgf/pgf.h
index 032834d77..ef68e651f 100644
--- a/src/runtime/c/pgf/pgf.h
+++ b/src/runtime/c/pgf/pgf.h
@@ -91,6 +91,9 @@ pgf_iter_languages(PgfPGF*, GuMapItor*, GuExn* err);
PgfConcr*
pgf_get_language(PgfPGF*, PgfCId lang);
+GuString
+pgf_concrete_name(PgfConcr*);
+
void
pgf_iter_categories(PgfPGF* pgf, GuMapItor* fn, GuExn* err);
diff --git a/src/runtime/python/pypgf.c b/src/runtime/python/pypgf.c
index 4b2ab5891..95d92fbce 100644
--- a/src/runtime/python/pypgf.c
+++ b/src/runtime/python/pypgf.c
@@ -731,6 +731,20 @@ Concr_linearize(ConcrObject* self, PyObject *args)
return pystr;
}
+static PyObject*
+Concr_getName(ConcrObject *self, void *closure)
+{
+ return gu2py_string(pgf_concrete_name(self->concr));
+}
+
+static PyGetSetDef Concr_getseters[] = {
+ {"name",
+ (getter)Concr_getName, NULL,
+ "the name of the concrete syntax",
+ },
+ {NULL} /* Sentinel */
+};
+
static PyMethodDef Concr_methods[] = {
{"printName", (PyCFunction)Concr_printName, METH_VARARGS,
"Returns the print name of a function or category"
@@ -775,7 +789,7 @@ static PyTypeObject pgf_ConcrType = {
0, /*tp_iternext */
Concr_methods, /*tp_methods */
0, /*tp_members */
- 0, /*tp_getset */
+ Concr_getseters, /*tp_getset */
0, /*tp_base */
0, /*tp_dict */
0, /*tp_descr_get */