diff --git a/src/runtime/c/pgf/pgf.c b/src/runtime/c/pgf/pgf.c index b9f555978..155b93135 100644 --- a/src/runtime/c/pgf/pgf.c +++ b/src/runtime/c/pgf/pgf.c @@ -158,3 +158,11 @@ pgf_print_name(PgfConcr* concr, PgfCId id) name = id; return name; } + +bool +pgf_has_linearization(PgfConcr* concr, PgfCId id) +{ + PgfCncOverloadMap* overl_table = + gu_map_get(concr->fun_indices, id, PgfCncOverloadMap*); + return (overl_table != NULL); +} diff --git a/src/runtime/c/pgf/pgf.h b/src/runtime/c/pgf/pgf.h index 606cb9940..20e6b1fa8 100644 --- a/src/runtime/c/pgf/pgf.h +++ b/src/runtime/c/pgf/pgf.h @@ -1,27 +1,3 @@ -/* - * Copyright 2010 University of Gothenburg. - * - * This file is part of libpgf. - * - * Libpgf is free software: you can redistribute it and/or modify it under - * the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Libpgf is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with libpgf. If not, see . - */ - -/** @file - * - * The public libpgf API. - */ - #ifndef PGF_H_ #define PGF_H_ @@ -114,6 +90,9 @@ pgf_function_type(PgfPGF* pgf, PgfCId funname); GuString pgf_print_name(PgfConcr*, PgfCId id); +bool +pgf_has_linearization(PgfConcr* concr, PgfCId id); + void pgf_linearize(PgfConcr* concr, PgfExpr expr, GuOut* out, GuExn* err); diff --git a/src/runtime/java/jpgf.c b/src/runtime/java/jpgf.c index d70301a62..8cfe2c705 100644 --- a/src/runtime/java/jpgf.c +++ b/src/runtime/java/jpgf.c @@ -472,6 +472,17 @@ Java_org_grammaticalframework_pgf_Concr_lookupMorpho(JNIEnv* env, jobject self, return analyses; } +JNIEXPORT jboolean JNICALL +Java_org_grammaticalframework_pgf_Concr_hasLinearization(JNIEnv* env, jobject self, jstring jid) +{ + PgfConcr* concr = get_ref(env, self); + GuPool* tmp_pool = gu_new_pool(); + PgfCId id = j2gu_string(env, jid, tmp_pool); + bool res = pgf_has_linearization(concr, id); + gu_pool_free(tmp_pool); + return res; +} + JNIEXPORT void JNICALL Java_org_grammaticalframework_pgf_Pool_free(JNIEnv* env, jobject self, jlong ref) { diff --git a/src/runtime/java/org/grammaticalframework/pgf/Concr.java b/src/runtime/java/org/grammaticalframework/pgf/Concr.java index 81f696aaf..779d461cc 100644 --- a/src/runtime/java/org/grammaticalframework/pgf/Concr.java +++ b/src/runtime/java/org/grammaticalframework/pgf/Concr.java @@ -25,6 +25,8 @@ public class Concr { public native List lookupMorpho(String sentence); + public native boolean hasLinearization(String id); + ////////////////////////////////////////////////////////////////// // private stuff diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java b/src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java index 5267cfde0..8fa41dfd0 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java @@ -211,8 +211,7 @@ public class LexicalEntryActivity extends ListActivity { TextView descView = (TextView) convertView.findViewById(R.id.lexical_desc); - Expr e = Expr.readExpr(lemma); - String phrase = mTranslator.generateTranslationEntry(e); + String phrase = mTranslator.generateTranslationEntry(lemma); descView.setText(phrase); convertView.setOnClickListener(new OnClickListener() { diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java index df042d1f1..60221d9b3 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java @@ -131,10 +131,14 @@ public class Translator { } } - public String generateTranslationEntry(Expr e) { + public String generateTranslationEntry(String lemma) { + Expr e = Expr.readExpr(lemma); Concr sourceLang = getConcr(getSourceLanguage().getConcrete()); Concr targetLang = getConcr(getTargetLanguage().getConcrete()); - return sourceLang.linearize(e) + " - " + targetLang.linearize(e); + if (targetLang.hasLinearization(lemma)) + return sourceLang.linearize(e) + " - " + targetLang.linearize(e); + else + return sourceLang.linearize(e); } public Map tabularLinearize(Expr e) {