diff options
| author | krasimir <krasimir@chalmers.se> | 2017-05-12 11:12:29 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2017-05-12 11:12:29 +0000 |
| commit | 2b911792ee5202db041defedebe21da1c2fd63a6 (patch) | |
| tree | 4f8bfedbc1c0bef71cbf647bfad15432cd678b78 /src/runtime/java/jpgf.c | |
| parent | 7db25c5a744c9c3a5484c733663bc855be60e3b4 (diff) | |
sentence lookup API from Java
Diffstat (limited to 'src/runtime/java/jpgf.c')
| -rw-r--r-- | src/runtime/java/jpgf.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/runtime/java/jpgf.c b/src/runtime/java/jpgf.c index 9b09068d5..a2a5bcfa2 100644 --- a/src/runtime/java/jpgf.c +++ b/src/runtime/java/jpgf.c @@ -651,6 +651,34 @@ Java_org_grammaticalframework_pgf_Completer_complete(JNIEnv* env, jclass clazz, return jtokiter; } +JNIEXPORT jobject JNICALL +Java_org_grammaticalframework_pgf_SentenceExtractor_lookupSentence + (JNIEnv* env, jclass clazz, jobject jconcr, jstring jstartCat, jstring js, jobject jpool) +{ + GuPool* pool = get_ref(env, jpool); + GuPool* out_pool = gu_new_pool(); + + GuString startCat = j2gu_string(env, jstartCat, pool); + GuString s = j2gu_string(env, js, pool); + + PgfType* type = gu_new_flex(pool, PgfType, exprs, 0); + type->hypos = gu_empty_seq(); + type->cid = startCat; + type->n_exprs = 0; + + GuEnum* res = + pgf_lookup_sentence(get_ref(env, jconcr), type, s, pool, out_pool); + + jfieldID refId = (*env)->GetFieldID(env, (*env)->GetObjectClass(env, jconcr), "gr", "Lorg/grammaticalframework/pgf/PGF;"); + jobject jpgf = (*env)->GetObjectField(env, jconcr, refId); + + jclass expiter_class = (*env)->FindClass(env, "org/grammaticalframework/pgf/ExprIterator"); + jmethodID constrId = (*env)->GetMethodID(env, expiter_class, "<init>", "(Lorg/grammaticalframework/pgf/PGF;Lorg/grammaticalframework/pgf/Pool;JJ)V"); + jobject jexpiter = (*env)->NewObject(env, expiter_class, constrId, jpgf, jpool, p2l(out_pool), p2l(res)); + + return jexpiter; +} + JNIEXPORT jobject JNICALL Java_org_grammaticalframework_pgf_TokenIterator_fetchTokenProb(JNIEnv* env, jclass clazz, jlong enumRef, jobject jpool) { @@ -669,11 +697,12 @@ Java_org_grammaticalframework_pgf_TokenIterator_fetchTokenProb(JNIEnv* env, jcla JNIEXPORT jobject JNICALL Java_org_grammaticalframework_pgf_ExprIterator_fetchExprProb - (JNIEnv* env, jclass clazz, jlong enumRef, jobject pool, jobject gr) + (JNIEnv* env, jclass clazz, jlong enumRef, jobject jpool, jobject gr) { GuEnum* res = (GuEnum*) l2p(enumRef); + GuPool* pool = get_ref(env, jpool); - PgfExprProb* ep = gu_next(res, PgfExprProb*, NULL); + PgfExprProb* ep = gu_next(res, PgfExprProb*, pool); if (ep == NULL) return NULL; |
