Java API for SATune ...
authorHamed Gorjiara <hgorjiar@uci.edu>
Mon, 4 Mar 2019 21:42:14 +0000 (13:42 -0800)
committerHamed Gorjiara <hgorjiar@uci.edu>
Mon, 4 Mar 2019 21:42:14 +0000 (13:42 -0800)
src/Makefile
src/SatuneJavaAPI.java [new file with mode: 0644]
src/common.mk
src/satunejavaapi.cc [new file with mode: 0644]
src/satunejavaapi.h [new file with mode: 0644]

index 29627f4482702c16d5bff522d894213660602a34..f04c58faa517c09b503d66b1b8e702907038aa40 100644 (file)
@@ -8,13 +8,17 @@ CPP_SOURCES := $(wildcard *.cc) $(wildcard AST/*.cc) $(wildcard ASTTransform/*.c
 
 C_SOURCES := $(wildcard *.c) $(wildcard AST/*.c) $(wildcard ASTTransform/*.c) $(wildcard Translator/*.c) $(wildcard ASTAnalyses/*.c) $(wildcard ASTAnalyses/Order/*.c) $(wildcard ASTAnalyses/Encoding/*.c) $(wildcard ASTAnalyses/Polarity/*.c) $(wildcard Tuner/*.c) $(wildcard Collections/*.c) $(wildcard Backend/*.c) $(wildcard Encoders/*.c) $(wildcard Serialize/*.c) $(wildcard Interpreter/*.c)
 
+J_SOURCES := $(wildcard *.java)
+
 HEADERS := $(wildcard *.h) $(wildcard AST/*.h) $(wildcard ASTTransform/*.h) $(wildcard Translator/*.h) $(wildcard ASTAnalyses/*.h) $(wildcard ASTAnalyses/Order/*.h) $(wildcard ASTAnalyses/Encoding/*.h) $(wildcard ASTAnalyses/Polarity/*.h) $(wildcard Tuner/*.h) $(wildcard Collections/*.h) $(wildcard Backend/*.h) $(wildcard Encoders/*.h) $(wildcard Serialize/*.h) $(wildcard Interpreter/*.h)
 
 OBJECTS := $(CPP_SOURCES:%.cc=$(OBJ_DIR)/%.o) $(C_SOURCES:%.c=$(OBJ_DIR)/%.o)
 
+J_OBJECTS := $(J_SOURCES:%.java=$(OBJ_DIR)/%.class)
+
 CFLAGS := -Wall -O0 -g
 CXXFLAGS := -std=c++1y -pthread
-CFLAGS += -IAST -IASTTransform -IASTAnalyses -IASTAnalyses/Polarity -IASTAnalyses/Order -IASTAnalyses/Encoding -ITranslator -ICollections -IBackend -I. -IEncoders -ITuner -ISerialize -IInterpreter
+CFLAGS += -IAST -IASTTransform -IASTAnalyses -IASTAnalyses/Polarity -IASTAnalyses/Order -IASTAnalyses/Encoding -ITranslator -ICollections -IBackend -I. -IEncoders -ITuner -ISerialize -IInterpreter -I$(JAVA_INC) -I$(JAVA_INC)/linux
 LDFLAGS := -ldl -lrt -rdynamic -g
 SHARED := -shared
 
@@ -26,7 +30,7 @@ endif
 
 MARKDOWN := ../docs/Markdown/Markdown.pl
 
-all: directories ${OBJ_DIR}/$(LIB_SO)
+all: directories ${OBJ_DIR}/$(LIB_SO) javaapi
 
 directories: ${OBJ_DIR}
 
@@ -65,6 +69,11 @@ ${OBJ_DIR}/%.o: %.cc
 ${OBJ_DIR}/%.o: %.c
        $(CC) -fPIC -c $< -o $@ $(CFLAGS) -Wno-unused-variable
 
+javaapi: $(J_OBJECTS)
+       
+${OBJ_DIR}/%.class: %.java
+       $(JAVAC) -d ${OBJ_DIR} $<
+
 -include $(OBJECTS:%=$OBJ_DIR/.%.d)
 
 PHONY += clean
diff --git a/src/SatuneJavaAPI.java b/src/SatuneJavaAPI.java
new file mode 100644 (file)
index 0000000..a2c35f3
--- /dev/null
@@ -0,0 +1,60 @@
+
+public class SatuneJavaAPI{
+       static {
+               System.loadLibrary("_cons_comp");    // loads lib_cons_comp.so
+       }
+       public native long createCCSolver();
+       public native void deleteCCSolver(long solver);
+       public native long createSet(long solver, int type, long elements, int num);
+       public native long createRangeSet(long solver,int type, long lowrange, long highrange);
+       public native long createRangeVar(long solver,int type, long lowrange, long highrange);
+       public native long createMutableSet(long solver, int type);
+       public native void addItem(long solver,long set, long element);
+       public native void finalizeMutableSet(long solver,long set);
+       public native long getElementVar(long solver,long set);
+       public native long getElementConst(long solver, int type, long value);
+       public native long getElementRange (long solver,long element);
+       public native long getBooleanVar(long solver, int type);
+       public native long createFunctionOperator(long solver, int op, long range, int overflowbehavior);
+       public native long createPredicateOperator(long solver, int op);
+       public native long createPredicateTable(long solver,long table, int behavior);
+       public native long createTable(long solver, long range);
+       public native long createTableForPredicate(long solver);
+       public native void addTableEntry(long solver,long table, long inputs, int inputSize, long result);
+       public native long completeTable(long solver,long table, int behavior);
+       public native long applyFunction(long solver,long function, long array, int numArrays, long overflowstatus);
+       public native long applyPredicateTable(long solver,long predicate, long inputs, int numInputs, long undefinedStatus);
+       public native long applyPredicate(long solver,long predicate, long inputs, int numInputs);
+       public native long applyLogicalOperation(long solver, int op, long array, int asize);
+       public native long applyLogicalOperationTwo(long solver, int op, long arg1, long arg2);
+       public native long applyLogicalOperationOne(long solver, int op, long arg);
+       public native void addConstraint(long solver,long constraint);
+       public native long createOrder(long solver, int type, long set);
+       public native long orderConstraint(long solver,long order, long first, long second);
+       public native int solve(long solver);
+       public native long getElementValue(long solver,long element);
+       public native int getBooleanValue(long solver,long bool);
+       public native int getOrderConstraintValue(long solver,long order, long first, long second);
+       public native void printConstraints(long solver);
+       public native void serialize(long solver);
+       public native void mustHaveValue(long solver, long element);
+       public native void setInterpreter(long solver, int type);
+       public native long clone(long solver);
+
+       public static void main(String[] args)
+       {
+               SatuneJavaAPI satuneapi = new SatuneJavaAPI();
+               long solver = satuneapi.createCCSolver();
+               long constr = satuneapi.getBooleanVar(solver, 1);
+               satuneapi.addConstraint(solver, constr);
+               int value = satuneapi.solve(solver);
+               if (value == 1) {
+                       System.out.println("B1 = " + satuneapi.getBooleanValue(solver, constr));
+               } else {
+                       System.out.println("UNSAT");
+               }
+               satuneapi.deleteCCSolver(solver);
+       }
+}
+
+
index 8ffb36415bedd1a82654855695bdbf3b0be88dcd..b99e2db7c69a602ee44dd4d9581e2d80a3693db5 100644 (file)
@@ -2,9 +2,10 @@
 
 CC := gcc
 CXX := g++
+JAVAC := javac
 
 UNAME := $(shell uname)
-
+JAVA_INC := /usr/lib/jvm/java-1.8.0-openjdk-amd64/include/
 LIB_NAME := cons_comp
 LIB_SO := lib_$(LIB_NAME).so
 
diff --git a/src/satunejavaapi.cc b/src/satunejavaapi.cc
new file mode 100644 (file)
index 0000000..c51492b
--- /dev/null
@@ -0,0 +1,415 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include "satunejavaapi.h"
+#include "ccsolver.h"
+#define CCSOLVER(solver) (void*)solver
+/* Header for class SatuneJavaAPI */
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createCCSolver
+ * Signature: ()J
+ */
+
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createCCSolver
+       (JNIEnv *env, jobject obj)
+{
+       return (jlong)createCCSolver();
+       
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    deleteCCSolver
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_deleteCCSolver
+       (JNIEnv *env, jobject obj, jlong solver)
+{
+       deleteCCSolver(CCSOLVER(solver));
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createSet
+ * Signature: (JIJI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createSet
+       (JNIEnv *env, jobject obj, jlong solver, jint type, jlong elements, jint num)
+{
+       return (jlong)createSet((void *)solver,(unsigned int) type, (long *)elements, (unsigned int) num);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createRangeSet
+ * Signature: (JIJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createRangeSet
+       (JNIEnv *env, jobject obj, jlong solver, jint type, jlong lowrange, jlong highrange)
+{
+       return (jlong)createRangeSet((void *)solver,(unsigned int) type, (long) lowrange, (long) highrange);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createRangeVar
+ * Signature: (JIJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createRangeVar
+       (JNIEnv *env, jobject obj, jlong solver, jint type, jlong lowrange, jlong highrange)
+{
+       return (jlong)createRangeVar((void *)solver,(unsigned int) type, (long) lowrange, (long) highrange);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createMutableSet
+ * Signature: (JI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createMutableSet
+       (JNIEnv *env, jobject obj, jlong solver, jint type)
+{
+       return (jlong)createMutableSet((void *)solver,(unsigned int) type);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    addItem
+ * Signature: (JJJ)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_addItem
+       (JNIEnv *env, jobject obj, jlong solver, jlong set, jlong element)
+{
+       addItem((void *)solver,(void *)set, (long) element);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    finalizeMutableSet
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_finalizeMutableSet
+       (JNIEnv *ev, jobject obj, jlong solver, jlong set)
+{
+       finalizeMutableSet((void *)solver,(void *)set);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getElementVar
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_getElementVar
+       (JNIEnv *env, jobject obj, jlong solver, jlong set)
+{
+       return (jlong) getElementVar((void *)solver,(void *)set);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getElementConst
+ * Signature: (JIJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_getElementConst
+       (JNIEnv *env, jobject obj, jlong solver, jint type, jlong value)
+{
+       return (jlong)getElementConst((void *)solver,(unsigned int) type, (long) value);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getElementRange
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_getElementRange
+       (JNIEnv *env, jobject obj, jlong solver, jlong element)
+{
+       return (jlong)getElementRange ((void *)solver,(void *)element);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getBooleanVar
+ * Signature: (JI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_getBooleanVar
+       (JNIEnv *env, jobject obj, jlong solver, jint type)
+{
+       return (jlong)getBooleanVar((void *)solver,(unsigned int) type);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createFunctionOperator
+ * Signature: (JIJI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createFunctionOperator
+       (JNIEnv *env, jobject obj, jlong solver, jint op, jlong range, jint overflowbehavior)
+{
+       return (jlong)createFunctionOperator((void *)solver,(unsigned int) op, (void *)range,(unsigned int) overflowbehavior);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createPredicateOperator
+ * Signature: (JI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createPredicateOperator
+       (JNIEnv *env, jobject obj, jlong solver, jint op)
+{
+       return (jlong)createPredicateOperator((void *)solver,(unsigned int) op);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createPredicateTable
+ * Signature: (JJI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createPredicateTable
+       (JNIEnv *env, jobject obj, jlong solver, jlong table, jint behavior)
+{
+       return (jlong) createPredicateTable((void *)solver,(void *)table, (unsigned int) behavior);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createTable
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createTable
+       (JNIEnv *env, jobject obj, jlong solver, jlong range)
+{
+       return (jlong)createTable((void *)solver, (void *)range);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createTableForPredicate
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createTableForPredicate
+       (JNIEnv *env, jobject obj, jlong solver)
+{
+       return (jlong)createTableForPredicate((void *)solver);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    addTableEntry
+ * Signature: (JJJIJ)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_addTableEntry
+       (JNIEnv *env, jobject obj, jlong solver, jlong table, jlong inputs, jint inputSize, jlong result)
+{
+       addTableEntry((void *)solver,(void *)table, (void *)inputs, (unsigned int) inputSize, (long) result);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    completeTable
+ * Signature: (JJI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_completeTable
+       (JNIEnv *env, jobject obj, jlong solver, jlong table, jint behavior)
+{
+       return (jlong)completeTable((void *)solver,(void *)table, (unsigned int) behavior);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    applyFunction
+ * Signature: (JJJIJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_applyFunction
+       (JNIEnv *env, jobject obj, jlong solver, jlong function, jlong array, jint numArrays, jlong overflowstatus)
+{
+       return (jlong)applyFunction((void *)solver,(void *)function, (void **)array, (unsigned int) numArrays, (void *)overflowstatus);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    applyPredicateTable
+ * Signature: (JJJIJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_applyPredicateTable
+       (JNIEnv *env, jobject obj, jlong solver, jlong predicate, jlong inputs, jint numInputs, jlong undefinedStatus)
+{
+       return (jlong) applyPredicateTable((void *)solver,(void *)predicate, (void **)inputs, (unsigned int) numInputs, (void *)undefinedStatus);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    applyPredicate
+ * Signature: (JJJI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_applyPredicate
+       (JNIEnv *env, jobject obj, jlong solver, jlong predicate, jlong inputs, jint numInputs)
+{
+       return (jlong)applyPredicate((void *)solver,(void *)predicate, (void **)inputs, (unsigned int) numInputs);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    applyLogicalOperation
+ * Signature: (JIJI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_applyLogicalOperation
+       (JNIEnv *env, jobject obj, jlong solver, jint op, jlong array, jint asize)
+{
+       return (jlong)applyLogicalOperation((void *)solver,(unsigned int) op, (void *)array, (unsigned int) asize);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    applyLogicalOperationTwo
+ * Signature: (JIJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_applyLogicalOperationTwo
+       (JNIEnv *env, jobject obj, jlong solver, jint op, jlong arg1, jlong arg2)
+{
+       return (jlong) applyLogicalOperationTwo((void *)solver,(unsigned int) op, (void *)arg1, (void *)arg2);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    applyLogicalOperationOne
+ * Signature: (JIJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_applyLogicalOperationOne
+       (JNIEnv *env, jobject obj, jlong solver, jint op, jlong arg)
+{
+       return (jlong)applyLogicalOperationOne((void *)solver,(unsigned int) op, (void *)arg);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    addConstraint
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_addConstraint
+       (JNIEnv *env, jobject obj, jlong solver, jlong constraint)
+{
+       addConstraint((void *)solver,(void *)constraint);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createOrder
+ * Signature: (JIJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createOrder
+       (JNIEnv *env, jobject obj, jlong solver, jint type, jlong set)
+{
+       return (jlong)createOrder((void *)solver,(unsigned int) type, (void *)set);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    orderConstraint
+ * Signature: (JJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_orderConstraint
+       (JNIEnv *env, jobject obj, jlong solver, jlong order, jlong first, jlong second)
+{
+       return (jlong)orderConstraint((void *)solver,(void *)order, (long) first, (long) second);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    solve
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_SatuneJavaAPI_solve
+       (JNIEnv *env, jobject obj, jlong solver)
+{
+       return (jint) solve((void *)solver);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getElementValue
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_getElementValue
+       (JNIEnv *env, jobject obj, jlong solver, jlong element)
+{
+       return (jlong) getElementValue((void *)solver,(void *)element);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getBooleanValue
+ * Signature: (JJ)I
+ */
+JNIEXPORT jint JNICALL Java_SatuneJavaAPI_getBooleanValue
+       (JNIEnv *env, jobject obj, jlong solver, jlong boolean)
+{
+       return (jint) getBooleanValue((void *)solver, (void *)boolean);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getOrderConstraintValue
+ * Signature: (JJJJ)I
+ */
+JNIEXPORT jint JNICALL Java_SatuneJavaAPI_getOrderConstraintValue
+       (JNIEnv *env, jobject obj, jlong solver, jlong order, jlong first, jlong second)
+{
+       return (jint) getOrderConstraintValue((void *)solver,(void *)order, (long) first, (long) second);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    printConstraints
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_printConstraints
+       (JNIEnv *env, jobject obj, jlong solver)
+{
+       printConstraints((void *)solver);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    serialize
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_serialize
+       (JNIEnv *env, jobject obj, jlong solver)
+{
+       serialize((void *)solver);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    mustHaveValue
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_mustHaveValue
+       (JNIEnv *env, jobject obj, jlong solver, jlong element)
+{
+       mustHaveValue((void *)solver, (void *)element);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    setInterpreter
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_setInterpreter
+       (JNIEnv *env, jobject obj, jlong solver, jint type)
+{
+       setInterpreter((void *)solver, (unsigned int) type);
+}
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    clone
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_clone
+       (JNIEnv *env, jobject obj, jlong solver)
+{
+       return (jlong)clone((void *)solver);
+}
+
diff --git a/src/satunejavaapi.h b/src/satunejavaapi.h
new file mode 100644 (file)
index 0000000..fd5ed68
--- /dev/null
@@ -0,0 +1,309 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class SatuneJavaAPI */
+
+#ifndef _Included_SatuneJavaAPI
+#define _Included_SatuneJavaAPI
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createCCSolver
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createCCSolver
+  (JNIEnv *, jobject);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    deleteCCSolver
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_deleteCCSolver
+  (JNIEnv *, jobject, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createSet
+ * Signature: (JIJI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createSet
+  (JNIEnv *, jobject, jlong, jint, jlong, jint);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createRangeSet
+ * Signature: (JIJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createRangeSet
+  (JNIEnv *, jobject, jlong, jint, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createRangeVar
+ * Signature: (JIJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createRangeVar
+  (JNIEnv *, jobject, jlong, jint, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createMutableSet
+ * Signature: (JI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createMutableSet
+  (JNIEnv *, jobject, jlong, jint);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    addItem
+ * Signature: (JJJ)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_addItem
+  (JNIEnv *, jobject, jlong, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    finalizeMutableSet
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_finalizeMutableSet
+  (JNIEnv *, jobject, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getElementVar
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_getElementVar
+  (JNIEnv *, jobject, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getElementConst
+ * Signature: (JIJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_getElementConst
+  (JNIEnv *, jobject, jlong, jint, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getElementRange
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_getElementRange
+  (JNIEnv *, jobject, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getBooleanVar
+ * Signature: (JI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_getBooleanVar
+  (JNIEnv *, jobject, jlong, jint);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createFunctionOperator
+ * Signature: (JIJI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createFunctionOperator
+  (JNIEnv *, jobject, jlong, jint, jlong, jint);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createPredicateOperator
+ * Signature: (JI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createPredicateOperator
+  (JNIEnv *, jobject, jlong, jint);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createPredicateTable
+ * Signature: (JJI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createPredicateTable
+  (JNIEnv *, jobject, jlong, jlong, jint);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createTable
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createTable
+  (JNIEnv *, jobject, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createTableForPredicate
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createTableForPredicate
+  (JNIEnv *, jobject, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    addTableEntry
+ * Signature: (JJJIJ)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_addTableEntry
+  (JNIEnv *, jobject, jlong, jlong, jlong, jint, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    completeTable
+ * Signature: (JJI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_completeTable
+  (JNIEnv *, jobject, jlong, jlong, jint);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    applyFunction
+ * Signature: (JJJIJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_applyFunction
+  (JNIEnv *, jobject, jlong, jlong, jlong, jint, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    applyPredicateTable
+ * Signature: (JJJIJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_applyPredicateTable
+  (JNIEnv *, jobject, jlong, jlong, jlong, jint, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    applyPredicate
+ * Signature: (JJJI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_applyPredicate
+  (JNIEnv *, jobject, jlong, jlong, jlong, jint);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    applyLogicalOperation
+ * Signature: (JIJI)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_applyLogicalOperation
+  (JNIEnv *, jobject, jlong, jint, jlong, jint);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    applyLogicalOperationTwo
+ * Signature: (JIJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_applyLogicalOperationTwo
+  (JNIEnv *, jobject, jlong, jint, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    applyLogicalOperationOne
+ * Signature: (JIJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_applyLogicalOperationOne
+  (JNIEnv *, jobject, jlong, jint, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    addConstraint
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_addConstraint
+  (JNIEnv *, jobject, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    createOrder
+ * Signature: (JIJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_createOrder
+  (JNIEnv *, jobject, jlong, jint, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    orderConstraint
+ * Signature: (JJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_orderConstraint
+  (JNIEnv *, jobject, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    solve
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_SatuneJavaAPI_solve
+  (JNIEnv *, jobject, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getElementValue
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_getElementValue
+  (JNIEnv *, jobject, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getBooleanValue
+ * Signature: (JJ)I
+ */
+JNIEXPORT jint JNICALL Java_SatuneJavaAPI_getBooleanValue
+  (JNIEnv *, jobject, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    getOrderConstraintValue
+ * Signature: (JJJJ)I
+ */
+JNIEXPORT jint JNICALL Java_SatuneJavaAPI_getOrderConstraintValue
+  (JNIEnv *, jobject, jlong, jlong, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    printConstraints
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_printConstraints
+  (JNIEnv *, jobject, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    serialize
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_serialize
+  (JNIEnv *, jobject, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    mustHaveValue
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_mustHaveValue
+  (JNIEnv *, jobject, jlong, jlong);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    setInterpreter
+ * Signature: (JI)V
+ */
+JNIEXPORT void JNICALL Java_SatuneJavaAPI_setInterpreter
+  (JNIEnv *, jobject, jlong, jint);
+
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    clone
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_SatuneJavaAPI_clone
+  (JNIEnv *, jobject, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif