summaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/c/pgf/pgf.c4
-rw-r--r--src/runtime/c/pgf/reader.c2
-rw-r--r--src/runtime/java/jpgf.c13
-rw-r--r--src/runtime/java/org/grammaticalframework/pgf/Concr.java4
-rw-r--r--src/runtime/python/pypgf.c10
5 files changed, 26 insertions, 7 deletions
diff --git a/src/runtime/c/pgf/pgf.c b/src/runtime/c/pgf/pgf.c
index 6bc78b194..a8c6bb800 100644
--- a/src/runtime/c/pgf/pgf.c
+++ b/src/runtime/c/pgf/pgf.c
@@ -191,9 +191,7 @@ PGF_API GuString
pgf_print_name(PgfConcr* concr, PgfCId id)
{
PgfCId name =
- gu_map_get(concr->printnames, id, PgfCId);
- if (*name == 0)
- name = id;
+ gu_map_get(concr->printnames, id, GuString);
return name;
}
diff --git a/src/runtime/c/pgf/reader.c b/src/runtime/c/pgf/reader.c
index 935fa61b0..2129269e8 100644
--- a/src/runtime/c/pgf/reader.c
+++ b/src/runtime/c/pgf/reader.c
@@ -565,7 +565,7 @@ pgf_read_abstract(PgfReader* rdr, PgfAbstr* abstract)
static PgfCIdMap*
pgf_read_printnames(PgfReader* rdr)
{
- PgfCIdMap* printnames = gu_new_string_map(GuString, &"", rdr->opool);
+ PgfCIdMap* printnames = gu_new_string_map(GuString, &gu_null_struct, rdr->opool);
size_t len = pgf_read_len(rdr);
gu_return_on_exn(rdr->err, NULL);
diff --git a/src/runtime/java/jpgf.c b/src/runtime/java/jpgf.c
index 84b2ebb4e..9a3c528ec 100644
--- a/src/runtime/java/jpgf.c
+++ b/src/runtime/java/jpgf.c
@@ -1146,6 +1146,19 @@ Java_org_grammaticalframework_pgf_Concr_hasLinearization(JNIEnv* env, jobject se
return res;
}
+JNIEXPORT jstring JNICALL
+Java_org_grammaticalframework_pgf_Concr_getPrintName(JNIEnv* env, jobject self, jstring jid)
+{
+ PgfConcr* concr = get_ref(env, self);
+ GuPool* tmp_pool = gu_local_pool();
+ PgfCId id = j2gu_string(env, jid, tmp_pool);
+ GuString name = pgf_print_name(concr, id);
+ jstring jname = (name == NULL) ? NULL : gu2j_string(env, name);
+ gu_pool_free(tmp_pool);
+
+ return jname;
+}
+
JNIEXPORT jlong JNICALL
Java_org_grammaticalframework_pgf_Pool_alloc(JNIEnv* env, jclass clazz)
{
diff --git a/src/runtime/java/org/grammaticalframework/pgf/Concr.java b/src/runtime/java/org/grammaticalframework/pgf/Concr.java
index e6cd958bb..af814b4a9 100644
--- a/src/runtime/java/org/grammaticalframework/pgf/Concr.java
+++ b/src/runtime/java/org/grammaticalframework/pgf/Concr.java
@@ -79,6 +79,10 @@ public class Concr {
*/
public native boolean hasLinearization(String fun);
+ /** returns the print name for that function or category.
+ */
+ public native String getPrintName(String id);
+
/** If the concrete syntaxes in the grammar are stored in external
* files then this method can be used to load the current syntax
* in memory.
diff --git a/src/runtime/python/pypgf.c b/src/runtime/python/pypgf.c
index c25a4e1e6..d8a3ac976 100644
--- a/src/runtime/python/pypgf.c
+++ b/src/runtime/python/pypgf.c
@@ -1303,11 +1303,15 @@ Concr_init(ConcrObject *self, PyObject *args, PyObject *kwds)
static PyObject*
Concr_printName(ConcrObject* self, PyObject *args)
{
- GuString name;
- if (!PyArg_ParseTuple(args, "s", &name))
+ GuString id;
+ if (!PyArg_ParseTuple(args, "s", &id))
return NULL;
- return PyString_FromString(pgf_print_name(self->concr, name));
+ GuString name = pgf_print_name(self->concr, id);
+ if (name == NULL)
+ Py_RETURN_NONE;
+
+ return PyString_FromString(name);
}
#if ( (PY_VERSION_HEX < 0x02070000) \