summaryrefslogtreecommitdiff
path: root/src/runtime/java/jpgf.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/java/jpgf.c')
-rw-r--r--src/runtime/java/jpgf.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/runtime/java/jpgf.c b/src/runtime/java/jpgf.c
index aa4b09473..4f9ee7c4d 100644
--- a/src/runtime/java/jpgf.c
+++ b/src/runtime/java/jpgf.c
@@ -1281,10 +1281,16 @@ Java_org_grammaticalframework_pgf_Type_getHypos(JNIEnv* env, jobject self)
PgfType* tp = get_ref(env, self);
jclass hypo_class = (*env)->FindClass(env, "org/grammaticalframework/pgf/Hypo");
+ jmethodID constrId = (*env)->GetMethodID(env, hypo_class, "<init>", "(Ljava/lang/Object;J)V");
size_t n_hypos = gu_seq_length(tp->hypos);
- jobjectArray jhypos = (*env)->NewObjectArray(env, n_hypos, hypo_class, NULL);
-
+ jobjectArray jhypos = (*env)->NewObjectArray(env, n_hypos, hypo_class, NULL);
+ for (size_t i = 0; i < n_hypos; i++) {
+ PgfHypo *hypo = gu_seq_index(tp->hypos, PgfHypo, i);
+ jobject jhypo = (*env)->NewObject(env, hypo_class, constrId, self, p2l(hypo));
+ (*env)->SetObjectArrayElement(env, jhypos, i, jhypo);
+ (*env)->DeleteLocalRef(env, jhypo);
+ }
return jhypos;
}
@@ -1306,6 +1312,18 @@ Java_org_grammaticalframework_pgf_Type_toString(JNIEnv* env, jobject self)
}
JNIEXPORT jobject JNICALL
+Java_org_grammaticalframework_pgf_Hypo_getType(JNIEnv* env, jobject self)
+{
+ PgfHypo* hypo = get_ref(env, self);
+
+ jclass type_class = (*env)->FindClass(env, "org/grammaticalframework/pgf/Type");
+ jmethodID constrId = (*env)->GetMethodID(env, type_class, "<init>", "(Ljava/lang/Object;J)V");
+ jobject jtype = (*env)->NewObject(env, type_class, constrId, self, p2l(hypo->type));
+
+ return jtype;
+}
+
+JNIEXPORT jobject JNICALL
Java_org_grammaticalframework_pgf_Generator_generateAll(JNIEnv* env, jclass clazz, jobject jpgf, jstring jstartCat)
{
GuPool* pool = gu_new_pool();