Adding API for AtMostOneConstraint + bugfix for turning off the optimizations
[satune.git] / src / pycsolver.py
index 3dd296b7c6c6ba0cb77a221c2026af2c8ef65fcf..f08d164e5d5edbbf094793c20270ea4b2fb77c06 100644 (file)
@@ -35,7 +35,7 @@ def loadCSolver():
         csolverlb.createSet.restype = c_void_p
         csolverlb.getElementVar.argtypes = [c_void_p, c_void_p]
         csolverlb.getElementVar.restype = c_void_p
-        csolverlb.createPredicateOperator.argtypes = [c_void_p, c_uint, POINTER(c_void_p), c_uint]
+        csolverlb.createPredicateOperator.argtypes = [c_void_p, c_uint]
         csolverlb.createPredicateOperator.restype = c_void_p
         csolverlb.applyPredicate.argtypes = [c_void_p, c_void_p, POINTER(c_void_p), c_uint]
         csolverlb.applyPredicate.restype = c_void_p
@@ -65,15 +65,19 @@ def loadCSolver():
        csolverlb.getElementRange.restype = c_void_p
        csolverlb.getBooleanVar.argtypes = [c_void_p, c_uint]
        csolverlb.getBooleanVar.restype = c_void_p
-       csolverlb.createFunctionOperator.argtypes = [c_void_p, c_uint, POINTER(c_void_p), c_uint, c_void_p, c_uint]
+       csolverlb.getBooleanTrue.argtypes = [c_void_p]
+       csolverlb.getBooleanTrue.restype = c_void_p
+       csolverlb.getBooleanFalse.argtypes = [c_void_p]
+       csolverlb.getBooleanFalse.restype = c_void_p
+       csolverlb.createFunctionOperator.argtypes = [c_void_p, c_uint, c_void_p, c_uint]
        csolverlb.createFunctionOperator.restype = c_void_p
-       csolverlb.createPredicateOperator.argtypes = [c_void_p, c_uint, POINTER(c_void_p), c_uint]
+       csolverlb.createPredicateOperator.argtypes = [c_void_p, c_uint]
        csolverlb.createPredicateOperator.restype = c_void_p
        csolverlb.createPredicateTable.argtypes = [c_void_p, c_void_p, c_uint]
        csolverlb.createPredicateTable.restype = c_void_p
-       csolverlb.createTable.argtypes = [c_void_p, POINTER(c_void_p), c_uint, c_void_p]
+       csolverlb.createTable.argtypes = [c_void_p, c_void_p]
        csolverlb.createTable.restype = c_void_p
-       csolverlb.createTableForPredicate.argtypes = [c_void_p, POINTER(c_void_p), c_uint]
+       csolverlb.createTableForPredicate.argtypes = [c_void_p]
        csolverlb.createTableForPredicate.restype = c_void_p
        csolverlb.addTableEntry.argtypes = [c_void_p, c_void_p, c_void_p, c_uint, c_long]
        csolverlb.addTableEntry.restype = None
@@ -87,6 +91,10 @@ def loadCSolver():
        csolverlb.applyPredicate.restype = c_void_p
        csolverlb.applyLogicalOperation.argtypes = [c_void_p, c_uint, c_void_p, c_uint]
        csolverlb.applyLogicalOperation.restype = c_void_p
+       csolverlb.applyExactlyOneConstraint.argtypes = [c_void_p, c_void_p, c_uint]
+       csolverlb.applyExactlyOneConstraint.restype = c_void_p
+       csolverlb.applyAtMostOneConstraint.argtypes = [c_void_p, c_void_p, c_uint]
+       csolverlb.applyAtMostOneConstraint.restype = c_void_p
        csolverlb.applyLogicalOperationTwo.argtypes = [c_void_p, c_uint, c_void_p, c_void_p]
        csolverlb.applyLogicalOperationTwo.restype = c_void_p
        csolverlb.applyLogicalOperationOne.argtypes = [c_void_p, c_uint, c_void_p]
@@ -99,15 +107,27 @@ 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]
        csolverlb.getOrderConstraintValue.restype = c_int
        csolverlb.printConstraints.argtypes = [c_void_p]
        csolverlb.printConstraints.restype = None
+       csolverlb.turnoffOptimizations.argtypes = [c_void_p]
+       csolverlb.turnoffOptimizations.restype = None
+        csolverlb.clone.argtypes = [c_void_p]
+       csolverlb.clone.restype = c_void_p
        csolverlb.serialize.argtypes = [c_void_p]
        csolverlb.serialize.restype = None
+        csolverlb.setInterpreter.argtypes = [c_void_p, c_uint]
+       csolverlb.setInterpreter.restype = None
        return csolverlb