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
MARKDOWN := ../docs/Markdown/Markdown.pl
-all: directories ${OBJ_DIR}/$(LIB_SO)
+all: directories ${OBJ_DIR}/$(LIB_SO) javaapi
directories: ${OBJ_DIR}
${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
--- /dev/null
+
+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);
+ }
+}
+
+
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
--- /dev/null
+/* 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);
+}
+
--- /dev/null
+/* 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