1 #ifndef ENCODINGGRAPH_H
2 #define ENCODINGGRAPH_H
6 uint hashEncodingEdge(EncodingEdge *edge);
7 bool equalsEncodingEdge(EncodingEdge *e1, EncodingEdge *e2);
9 typedef Hashtable<EncodingEdge *, EncodingEdge *, uintptr_t, PTRSHIFT, hashEncodingEdge, equalsEncodingEdge> HashtableEdge;
13 EncodingGraph(CSolver * solver);
19 HashtableEncoding encodingMap;
20 HashtableEdge edgeMap;
21 void processElement(Element *e);
22 void processFunction(ElementFunction *f);
23 void processPredicate(BooleanPredicate *b);
24 EncodingNode * createNode(Element *e);
30 EncodingNode(Set *_s);
31 void addElement(Element *e);
35 HashsetElement elements;
40 EncodingEdge(EncodingNode *_l, EncodingNode *_r);
41 EncodingEdge(EncodingNode *_l, EncodingNode *_r, EncodingNode *_d);
47 friend uint hashEncodingEdge(EncodingEdge *edge);
48 friend bool equalsEncodingEdge(EncodingEdge *e1, EncodingEdge *e2);