mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 13:09:33 -06:00
added lookupMorpho in the Java binding
This commit is contained in:
@@ -350,6 +350,53 @@ Java_org_grammaticalframework_pgf_Concr_linearize(JNIEnv* env, jobject self, job
|
||||
return jstr;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
PgfMorphoCallback fn;
|
||||
jobject analyses;
|
||||
JNIEnv* env;
|
||||
jmethodID addId;
|
||||
jclass an_class;
|
||||
jmethodID an_constrId;
|
||||
} JMorphoCallback;
|
||||
|
||||
static void
|
||||
jpgf_collect_morpho(PgfMorphoCallback* self,
|
||||
PgfCId lemma, GuString analysis, prob_t prob,
|
||||
GuExn* err)
|
||||
{
|
||||
JMorphoCallback* callback = (JMorphoCallback*) self;
|
||||
JNIEnv* env = callback->env;
|
||||
|
||||
jobject jan = (*env)->NewObject(env,
|
||||
callback->an_class,
|
||||
callback->an_constrId,
|
||||
gu2j_string(env,lemma),
|
||||
gu2j_string(env,analysis),
|
||||
(double) prob);
|
||||
(*env)->CallObjectMethod(env, callback->analyses, callback->addId, jan);
|
||||
(*env)->DeleteLocalRef(env, jan);
|
||||
}
|
||||
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_org_grammaticalframework_pgf_Concr_lookupMorpho(JNIEnv* env, jobject self, jstring sentence)
|
||||
{
|
||||
jclass list_class = (*env)->FindClass(env, "java/util/ArrayList");
|
||||
jmethodID list_constrId = (*env)->GetMethodID(env, list_class, "<init>", "()V");
|
||||
jobject analyses = (*env)->NewObject(env, list_class, list_constrId);
|
||||
|
||||
jmethodID addId = (*env)->GetMethodID(env, list_class, "add", "(Ljava/lang/Object;)Z");
|
||||
|
||||
jclass an_class = (*env)->FindClass(env, "org/grammaticalframework/pgf/MorphoAnalysis");
|
||||
jmethodID an_constrId = (*env)->GetMethodID(env, an_class, "<init>", "(Ljava/lang/String;Ljava/lang/String;D)V");
|
||||
|
||||
GuPool* tmp_pool = gu_new_pool();
|
||||
JMorphoCallback callback = { { jpgf_collect_morpho }, analyses, env, addId, an_class, an_constrId };
|
||||
pgf_lookup_morpho(get_ref(env, self), j2gu_string(env, sentence, tmp_pool),
|
||||
&callback.fn, NULL);
|
||||
|
||||
return analyses;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_org_grammaticalframework_pgf_Pool_free(JNIEnv* env, jobject self, jlong ref)
|
||||
{
|
||||
|
||||
@@ -21,6 +21,8 @@ public class Concr {
|
||||
|
||||
public native String linearize(Expr expr);
|
||||
|
||||
public native List<MorphoAnalysis> lookupMorpho(String sentence);
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
// private stuff
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package org.grammaticalframework.pgf;
|
||||
|
||||
public class MorphoAnalysis {
|
||||
private String lemma;
|
||||
private String field;
|
||||
private double prob;
|
||||
|
||||
public MorphoAnalysis(String lemma, String field, double prob) {
|
||||
this.lemma = lemma;
|
||||
this.field = field;
|
||||
this.prob = prob;
|
||||
}
|
||||
|
||||
public String getLemma() {
|
||||
return lemma;
|
||||
}
|
||||
|
||||
public String getField() {
|
||||
return field;
|
||||
}
|
||||
|
||||
public double getProb() {
|
||||
return prob;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user