From 7aaafc3e4f97dc498784d96324af1d55f4d0e604 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Sat, 1 Jul 2017 21:40:08 -0700 Subject: [PATCH] finish normalization --- src/Backend/nodeedge.c | 67 ++++++++++++++++++++++++++++++++++-------- src/Backend/nodeedge.h | 17 +++++++++++ 2 files changed, 72 insertions(+), 12 deletions(-) diff --git a/src/Backend/nodeedge.c b/src/Backend/nodeedge.c index a1fd4c5..deb63d3 100644 --- a/src/Backend/nodeedge.c +++ b/src/Backend/nodeedge.c @@ -95,7 +95,7 @@ bool compareNodes(Node * node, NodeType type, uint numEdges, Edge *edges) { return false; Edge *nodeedges=node->edges; for(uint i=0;iflags.type; } +static inline bool equalsEdge(Edge e1, Edge e2) { + return e1.node_ptr == e2.node_ptr; +} + +static inline bool ltEdge(Edge e1, Edge e2) { + return (uintptr_t) e1.node_ptr < (uintptr_t) e2.node_ptr; +} + static inline uint getNodeSize(Edge e) { Node * n=getNodePtrFromEdge(e); return n->numEdges; @@ -101,6 +109,15 @@ static inline Edge * getEdgeArray(Edge e) { return n->edges; } +static inline Edge getNonNeg(Edge e) { + Edge enew={(Node *)(((uintptr_t)e.node_ptr)&(~((uintptr_t)NEGATE_EDGE)))}; + return enew; +} + +static inline bool edgeIsConst(Edge e) { + return (((uintptr_t) e.node_ptr) & ~((uintptr_t)NEGATE_EDGE)) == EDGE_IS_VAR_CONSTANT; +} + 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