edits
authorbdemsky <bdemsky@uci.edu>
Fri, 16 Jun 2017 20:19:59 +0000 (13:19 -0700)
committerbdemsky <bdemsky@uci.edu>
Fri, 16 Jun 2017 20:21:57 +0000 (13:21 -0700)
src/AST/ops.h
src/classlist.h
src/csolver.c
src/csolver.h

index 3990aec..40febd4 100644 (file)
@@ -11,8 +11,9 @@ enum OrderType {PARTIAL, TOTAL};
  *  FLAGIFFOVERFLOW -- flag is set iff the operation overflows
  *  IGNORE -- doesn't constrain output if the result cannot be represented
  *  WRAPAROUND -- wraps around like stand integer arithmetic
+ *  NOOVERFLOW -- client has ensured that overflow is impossible
  */
-enum OverFlowBehavior {IGNORE, WRAPAROUND, FLAGFORCESOVERFLOW, OVERFLOWSETSFLAG, FLAGIFFOVERFLOW};
+enum OverFlowBehavior {IGNORE, WRAPAROUND, FLAGFORCESOVERFLOW, OVERFLOWSETSFLAG, FLAGIFFOVERFLOW, NOOVERFLOW};
 
 enum BooleanType {_ORDER, _BOOLEAN};
 
index 361dcb6..b53e031 100644 (file)
@@ -54,6 +54,12 @@ typedef struct ElementEncoding ElementEncoding;
 struct FunctionEncoding;
 typedef struct FunctionEncoding FunctionEncoding;
 
+typedef enum ArithOp ArithOp;
+typedef enum LogicOp LogicOp;
+typedef enum CompOp CompOp;
+typedef enum OrderType OrderType;
+typedef enum OverFlowBehavior OverFlowBehavior;
+
 typedef unsigned int uint;
 typedef uint64_t VarType;
 #endif
index 1d1413a..9ddfe3d 100644 (file)
@@ -83,12 +83,12 @@ Boolean * getBooleanVar(CSolver *solver, VarType type) {
        return boolean;
 }
 
-Function * createFunctionOperator(CSolver *solver, enum ArithOp op, Set ** domain, uint numDomain, Set * range,
-                                                                                                                                       enum OverFlowBehavior overflowbehavior, Boolean * overflowstatus) {
+Function * createFunctionOperator(CSolver *solver, ArithOp op, Set ** domain, uint numDomain, Set * range,
+                                                                                                                                       OverFlowBehavior overflowbehavior) {
        return NULL;
 }
 
-Predicate * createPredicateOperator(CSolver *solver, enum CompOp op, Set ** domain, uint numDomain) {
+Predicate * createPredicateOperator(CSolver *solver, CompOp op, Set ** domain, uint numDomain) {
        return allocPredicate(op, domain,numDomain);
 }
 
@@ -103,7 +103,7 @@ Function * completeTable(CSolver *solver, Table * table) {
        return NULL;
 }
 
-Element * applyFunction(CSolver *solver, Function * function, Element ** array) {
+Element * applyFunction(CSolver *solver, Function * function, Element ** array, Boolean * overflowstatus) {
        return NULL;
 }
 
@@ -111,7 +111,7 @@ Boolean * applyPredicate(CSolver *solver, Predicate * predicate, Element ** inpu
        return NULL;
 }
 
-Boolean * applyLogicalOperation(CSolver *solver, enum LogicOp op, Boolean ** array) {
+Boolean * applyLogicalOperation(CSolver *solver, LogicOp op, Boolean ** array) {
        return NULL;
 }
 
@@ -119,7 +119,7 @@ void addBoolean(CSolver *this, Boolean * constraint) {
        pushVectorBoolean(this->constraints, constraint);
 }
 
-Order * createOrder(CSolver *solver, enum OrderType type, Set * set) {
+Order * createOrder(CSolver *solver, OrderType type, Set * set) {
        return allocOrder(type, set);
 }
 
index d11523b..d3bce42 100644 (file)
@@ -54,8 +54,8 @@ Boolean * getBooleanVar(CSolver *, VarType type);
 
 /** This function creates a function operator. */
 
-Function * createFunctionOperator(CSolver *solver, enum ArithOp op, Set ** domain, uint numDomain, Set * range,
-                                                                                                                                       enum OverFlowBehavior overflowbehavior, Boolean * overflowstatus);
+Function * createFunctionOperator(CSolver *solver, ArithOp op, Set ** domain, uint numDomain, Set * range,
+                                                                                                                                       OverFlowBehavior overflowbehavior);
 
 /** This function creates a predicate operator. */
 
@@ -75,7 +75,7 @@ Function * completeTable(CSolver *, Table *);
 
 /** This function applies a function to the Elements in its input. */
 
-Element * applyFunction(CSolver *, Function * function, Element ** array);
+Element * applyFunction(CSolver *, Function * function, Element ** array, Boolean * overflowstatus);
 
 /** This function applies a predicate to the Elements in its input. */