From 3c17d1f92ba70983fdd020de0a3875f11cce7647 Mon Sep 17 00:00:00 2001 From: Hamed Date: Thu, 6 Jul 2017 18:12:21 -0700 Subject: [PATCH] Fixing some bugs + improving the testcase ... --- src/Collections/structs.c | 4 ++-- src/Collections/structs.h | 2 -- src/Test/buildconstraints.c | 18 ++++++++++++++++++ src/csolver.c | 2 +- src/csolver.h | 2 +- 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/Collections/structs.c b/src/Collections/structs.c index 458ec79..f5f8f68 100644 --- a/src/Collections/structs.c +++ b/src/Collections/structs.c @@ -22,11 +22,11 @@ inline bool Ptr_equals(void * key1, void * key2) { return key1 == key2; } -inline unsigned int order_pair_hash_Function(OrderPair* This){ +static inline unsigned int order_pair_hash_Function(OrderPair* This){ return (uint) (This->first << 2) ^ This->second; } -inline unsigned int order_pair_equals(OrderPair* key1, OrderPair* key2){ +static inline unsigned int order_pair_equals(OrderPair* key1, OrderPair* key2){ return key1->first== key2->first && key1->second == key2->second; } diff --git a/src/Collections/structs.h b/src/Collections/structs.h index a45eb13..5936bbd 100644 --- a/src/Collections/structs.h +++ b/src/Collections/structs.h @@ -23,8 +23,6 @@ VectorDef(TableEntry, TableEntry *, 4); VectorDef(ASTNode, ASTNode *, 4); VectorDef(Int, uint64_t, 4); - - HashTableDef(Void, void *, void *); HashTableDef(BoolConst, OrderPair *, Constraint *); diff --git a/src/Test/buildconstraints.c b/src/Test/buildconstraints.c index caa8a92..440d1aa 100644 --- a/src/Test/buildconstraints.c +++ b/src/Test/buildconstraints.c @@ -14,5 +14,23 @@ int main(int numargs, char ** argv) { Order * o=createOrder(solver, TOTAL, s); Boolean * oc=orderConstraint(solver, o, 1, 2); addBoolean(solver, oc); + + uint64_t set2[] = {2, 3}; + Set* range = createSet(solver, 1, set2, 2); + Function * f1 = createFunctionOperator(solver, ADD, domain, 2, range, IGNORE); + /*Table* table = createTable(solver, domain, 2, range); + uint64_t row1[] = {0, 1}; + uint64_t row2[] = {1, 1}; + addTableEntry(solver, table, row1, 2, 2); + addTableEntry(solver, table, row2, 2, 3); + Function * f2 = completeTable(solver, table); */ + Boolean* overflow = getBooleanVar(solver , 2); + Element * e3 = applyFunction(solver, f1, inputs, 2, overflow); + Set* domain2[] = {s,range}; + Predicate* equal2 = createPredicateOperator(solver, EQUALS, domain2, 2); + Element* inputs2 [] = {e1, e3}; + Boolean* pred = applyPredicate(solver, equal2, inputs2, 2); + addBoolean(solver, pred); + startEncoding(solver); deleteSolver(solver); } diff --git a/src/csolver.c b/src/csolver.c index 68fb39f..d63c266 100644 --- a/src/csolver.c +++ b/src/csolver.c @@ -171,7 +171,7 @@ Boolean * orderConstraint(CSolver *solver, Order * order, uint64_t first, uint64 return constraint; } -void encode(CSolver* solver){ +void startEncoding(CSolver* solver){ naiveEncodingDecision(solver); SATEncoder* satEncoder = allocSATEncoder(); // initializeConstraintVars(solver, satEncoder); diff --git a/src/csolver.h b/src/csolver.h index fd807ae..bd90bf3 100644 --- a/src/csolver.h +++ b/src/csolver.h @@ -113,5 +113,5 @@ Order * createOrder(CSolver *, OrderType type, Set * set); Boolean * orderConstraint(CSolver *, Order * order, uint64_t first, uint64_t second); /** When everything is done, the client calls this function and then csolver starts to encode*/ -void encode(CSolver*); +void startEncoding(CSolver*); #endif -- 2.34.1