Adding incremental to Java, C, and python APIs
authorHamed Gorjiara <hgorjiar@uci.edu>
Fri, 14 Jun 2019 22:17:24 +0000 (15:17 -0700)
committerHamed Gorjiara <hgorjiar@uci.edu>
Fri, 14 Jun 2019 22:17:24 +0000 (15:17 -0700)
src/ccsolver.cc
src/ccsolver.h
src/pycsolver.py
src/satune_SatuneJavaAPI.cc
src/satune_SatuneJavaAPI.h

index fa2e342..ca20617 100644 (file)
@@ -146,10 +146,18 @@ int solve(void *solver) {
        return CCSOLVER(solver)->solve();
 }
 
+int solveIncremental(void *solver) {
+       return CCSOLVER(solver)->solveIncremental();
+}
+
 long getElementValue(void *solver,void *element) {
        return (long) CCSOLVER(solver)->getElementValue((Element *)element);
 }
 
+void freezeElement(void *solver,void *element) {
+       CCSOLVER(solver)->freezeElement((Element *)element);
+}
+
 int getBooleanValue(void *solver, void *boolean) {
        return CCSOLVER(solver)->getBooleanValue(BooleanEdge((Boolean *) boolean));
 }
index 86d5a46..091303f 100644 (file)
@@ -40,7 +40,9 @@ void printConstraint(void *solver,void *constraint);
 void *createOrder(void *solver,unsigned int type, void *set);
 void *orderConstraint(void *solver,void *order, long first, long second);
 int solve(void *solver);
+int solveIncremental(void *solver);
 long getElementValue(void *solver,void *element);
+void freezeElement(void *solver,void *element);
 int getBooleanValue(void *solver,void *boolean);
 int getOrderConstraintValue(void *solver,void *order, long first, long second);
 void printConstraints(void *solver);
index 461a859..905d1d7 100644 (file)
@@ -101,10 +101,14 @@ def loadCSolver():
        csolverlb.orderConstraint.restype = c_void_p
        csolverlb.solve.argtypes = [c_void_p]
        csolverlb.solve.restype = c_int
+       csolverlb.solveIncremental.argtypes = [c_void_p]
+       csolverlb.solveIncremental.restype = c_int
         csolverlb.mustHaveValue.argtypes = [c_void_p, c_void_p]
        csolverlb.mustHaveValue.restype = c_void_p
        csolverlb.getElementValue.argtypes = [c_void_p, c_void_p]
-       csolverlb.getElementValue.restype = c_long
+       csolverlb.getElementValue.restype = c_void_p
+       csolverlb.freezeElement.argtypes = [c_void_p, c_void_p]
+       csolverlb.freezeElement.restype = c_long
        csolverlb.getBooleanValue.argtypes = [c_void_p, c_void_p]
        csolverlb.getBooleanValue.restype = c_int
        csolverlb.getOrderConstraintValue.argtypes = [c_void_p, c_void_p, c_long, c_long]
index 21cd504..d1397ee 100644 (file)
@@ -391,6 +391,17 @@ JNIEXPORT jint JNICALL Java_satune_SatuneJavaAPI_solve
        return (jint) solve((void *)solver);
 }
 
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    solveIncremental
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_satune_SatuneJavaAPI_solveIncremental
+       (JNIEnv *env, jobject obj, jlong solver)
+{
+       return (jint) solveIncremental((void *)solver);
+}
+
 /*
  * Class:     SatuneJavaAPI
  * Method:    getElementValue
@@ -402,6 +413,17 @@ JNIEXPORT jlong JNICALL Java_satune_SatuneJavaAPI_getElementValue
        return (jlong) getElementValue((void *)solver,(void *)element);
 }
 
+/*
+ * Class:     SatuneJavaAPI
+ * Method:    freezeElement
+ * Signature: (JJ)J
+ */
+JNIEXPORT void JNICALL Java_satune_SatuneJavaAPI_freezeElement
+       (JNIEnv *env, jobject obj, jlong solver, jlong element)
+{
+       freezeElement((void *)solver,(void *)element);
+}
+
 /*
  * Class:     SatuneJavaAPI
  * Method:    getBooleanValue
index 68703bc..7b301f9 100644 (file)
@@ -280,6 +280,14 @@ JNIEXPORT jlong JNICALL Java_satune_SatuneJavaAPI_orderConstraint
 JNIEXPORT jint JNICALL Java_satune_SatuneJavaAPI_solve
        (JNIEnv *, jobject, jlong);
 
+/*
+ * Class:     satune_SatuneJavaAPI
+ * Method:    solveIncremental
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_satune_SatuneJavaAPI_solveIncremental
+       (JNIEnv *, jobject, jlong);
+
 /*
  * Class:     satune_SatuneJavaAPI
  * Method:    getElementValue
@@ -288,6 +296,15 @@ JNIEXPORT jint JNICALL Java_satune_SatuneJavaAPI_solve
 JNIEXPORT jlong JNICALL Java_satune_SatuneJavaAPI_getElementValue
        (JNIEnv *, jobject, jlong, jlong);
 
+
+/*
+ * Class:     satune_SatuneJavaAPI
+ * Method:    getElementValue
+ * Signature: (JJ)J
+ */
+JNIEXPORT void JNICALL Java_satune_SatuneJavaAPI_freezeElement
+       (JNIEnv *, jobject, jlong, jlong);
+
 /*
  * Class:     satune_SatuneJavaAPI
  * Method:    getBooleanValue