From f0dba6a31f70f7249dad6919ef51cd58c992e3e5 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Sat, 1 Jul 2017 15:23:25 -0700 Subject: [PATCH] more code --- src/Backend/nodeedge.c | 66 ++++++++++++++++++++++++++++++++++++------ src/Backend/nodeedge.h | 45 ++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 9 deletions(-) diff --git a/src/Backend/nodeedge.c b/src/Backend/nodeedge.c index 533a9f1..a1fd4c5 100644 --- a/src/Backend/nodeedge.c +++ b/src/Backend/nodeedge.c @@ -1,5 +1,6 @@ #include "nodeedge.h" #include +#include CNF * createCNF() { CNF * cnf=ourmalloc(sizeof(CNF)); @@ -117,20 +118,67 @@ Edge constraintOR2(CNF * cnf, Edge left, Edge right) { return constraintNegate(eand); } +int comparefunction(const Edge * e1, const Edge * e2) { + return ((uintptr_t)e1->node_ptr)-((uintptr_t)e2->node_ptr); +} + Edge constraintAND(CNF * cnf, uint numEdges, Edge * edges) { + qsort(edges, numEdges, sizeof(Edge), (int (*)(const void *, const void *)) comparefunction); + int initindex=0; + while(initindexflags.type; +} + +static inline uint getNodeSize(Edge e) { + Node * n=getNodePtrFromEdge(e); + return n->numEdges; +} + +static inline Edge * getEdgeArray(Edge e) { + Node * n=getNodePtrFromEdge(e); + return n->edges; +} + uint hashNode(NodeType type, uint numEdges, Edge * edges); Node * allocNode(NodeType type, uint numEdges, Edge * edges, uint hashCode); bool compareNodes(Node * node, NodeType type, uint numEdges, Edge *edges); -- 2.34.1