diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2013-09-06 07:21:38 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2013-09-06 07:21:38 +0000 |
| commit | 5a4454aa8f910bc701da5cd4057eed77196764ad (patch) | |
| tree | c043135e06f030c181c7a173090e6caf6a06994e /src/runtime/java/jpgf.c | |
| parent | 14f8b96b563dda9f7d61f5dc1cde14436ef6ea69 (diff) | |
added exhaustive generation in the Java binding
Diffstat (limited to 'src/runtime/java/jpgf.c')
| -rw-r--r-- | src/runtime/java/jpgf.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/runtime/java/jpgf.c b/src/runtime/java/jpgf.c index 17ae453cb..a0290aeae 100644 --- a/src/runtime/java/jpgf.c +++ b/src/runtime/java/jpgf.c @@ -395,3 +395,25 @@ Java_org_grammaticalframework_pgf_Expr_showExpr(JNIEnv* env, jclass clazz, jlong gu_pool_free(tmp_pool); return jstr; } + +JNIEXPORT jobject JNICALL +Java_org_grammaticalframework_pgf_Generator_generateAll(JNIEnv* env, jclass clazz, jobject jpgf, jstring jstartCat) +{ + GuPool* pool = gu_new_pool(); + + GuString startCat = j2gu_string(env, jstartCat, pool); + + GuEnum* res = + pgf_generate_all(get_ref(env, jpgf), startCat, pool); + if (res == NULL) { + throw_string_exception(env, "org/grammaticalframework/pgf/PGFError", "The generation failed"); + gu_pool_free(pool); + return NULL; + } + + jclass expiter_class = (*env)->FindClass(env, "org/grammaticalframework/pgf/ExprIterator"); + jmethodID constrId = (*env)->GetMethodID(env, expiter_class, "<init>", "(Lorg/grammaticalframework/pgf/PGF;JJJ)V"); + jobject jexpiter = (*env)->NewObject(env, expiter_class, constrId, jpgf, p2l(pool), p2l(pool), p2l(res)); + + return jexpiter; +} |
