public:
EncodingGraph(CSolver * solver);
void buildGraph();
+ void encode();
CMEMALLOC;
private:
Vector<EncodingEdge *> edgeVector;
HashsetElement discovered;
HashtableNodeToSubGraph graphMap;
-
+ HashsetEncodingSubGraph subgraphs;
+
void decideEdges();
void mergeNodes(EncodingNode *first, EncodingNode *second);
void processElement(Element *e);
void processFunction(ElementFunction *f);
void processPredicate(BooleanPredicate *b);
EncodingNode * createNode(Element *e);
+ EncodingNode * getNode(Element *e);
EncodingEdge * getEdge(EncodingNode *left, EncodingNode *right, EncodingNode *dst);
};
uint getSize() const;
VarType getType() const;
void setEncoding(ElementEncodingType e) {encoding=e;}
-
+ ElementEncodingType getEncoding() {return encoding;}
CMEMALLOC;
private:
Set *s;