summaryrefslogtreecommitdiff
path: root/src/runtime/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/java')
-rw-r--r--src/runtime/java/jpgf.c18
-rw-r--r--src/runtime/java/org/grammaticalframework/pgf/Expr.java2
2 files changed, 20 insertions, 0 deletions
diff --git a/src/runtime/java/jpgf.c b/src/runtime/java/jpgf.c
index db7765551..4d00b3c4b 100644
--- a/src/runtime/java/jpgf.c
+++ b/src/runtime/java/jpgf.c
@@ -1054,6 +1054,24 @@ Java_org_grammaticalframework_pgf_Expr_initApp(JNIEnv* env, jclass clazz, jstrin
return expr;
}
+JNIEXPORT jboolean JNICALL
+Java_org_grammaticalframework_pgf_Expr_equals(JNIEnv* env, jobject self, jobject other)
+{
+ jclass self_class = (*env)->GetObjectClass(env, self);
+ jclass other_class = (*env)->GetObjectClass(env, other);
+
+ if (!(*env)->IsAssignableFrom(env, other_class, self_class))
+ return JNI_FALSE;
+
+ PgfExpr e_self = gu_variant_from_ptr(l2p(get_ref(env, self)));
+ PgfExpr e_other = gu_variant_from_ptr(l2p(get_ref(env, other)));
+
+ if (pgf_expr_eq(e_self, e_other))
+ return JNI_TRUE;
+ else
+ return JNI_FALSE;
+}
+
JNIEXPORT jstring JNICALL
Java_org_grammaticalframework_pgf_Type_getCategory(JNIEnv* env, jobject self)
{
diff --git a/src/runtime/java/org/grammaticalframework/pgf/Expr.java b/src/runtime/java/org/grammaticalframework/pgf/Expr.java
index 753055ff9..f576f681a 100644
--- a/src/runtime/java/org/grammaticalframework/pgf/Expr.java
+++ b/src/runtime/java/org/grammaticalframework/pgf/Expr.java
@@ -37,6 +37,8 @@ public class Expr implements Serializable {
public static native Expr readExpr(String s) throws PGFError;
+ public native boolean equals(Expr e);
+
private static native String showExpr(long ref);
private static native long initStringLit(String s, long pool);