#include "graphstructs.h"
class NodeValuePair {
- public:
- NodeValuePair(EncodingNode *n, uint64_t val) : node(n), value(val) {}
+public:
+ NodeValuePair(EncodingNode *n, uint64_t val) : node(n), value(val) {}
EncodingNode *node;
uint64_t value;
+ CMEMALLOC;
};
class EncodingValue;
typedef SetIterator<EncodingValue *, uintptr_t, PTRSHIFT> SetIteratorEncodingValue;
class EncodingValue {
- public:
- EncodingValue(uint64_t _val) : value(_val), encoding(0), inComparison(false), assigned(false) {}
+public:
+ EncodingValue(uint64_t _val) : value(_val), encoding(0), inComparison(false), assigned(false) {}
void merge(EncodingValue *value);
uint64_t value;
uint encoding;
HashsetEncodingNode nodes;
HashsetEncodingValue larger;
HashsetEncodingValue notequals;
+ CMEMALLOC;
};
uint hashNodeValuePair(NodeValuePair *nvp);
typedef Hashtable<NodeValuePair *, EncodingValue *, uintptr_t, 0, hashNodeValuePair, equalsNodeValuePair> NVPMap;
class EncodingSubGraph {
- public:
+public:
EncodingSubGraph();
+ ~EncodingSubGraph();
void addNode(EncodingNode *n);
- SetIteratorEncodingNode * nodeIterator();
+ SetIteratorEncodingNode *nodeIterator();
void encode();
-
+ uint getEncoding(EncodingNode *n, uint64_t val);
+ uint getEncodingMaxVal(EncodingNode *n) { return maxEncodingVal;}
+ double measureSimilarity(EncodingNode *n);
+ double measureSimilarity(EncodingSubGraph *sg);
+ uint numValues();
CMEMALLOC;
- private:
+private:
uint estimateNewSize(EncodingNode *n);
uint estimateNewSize(EncodingSubGraph *sg);
void traverseValue(EncodingNode *node, uint64_t value);
HashsetEncodingValue values;
HashsetEncodingNode nodes;
NVPMap map;
- uint encodingSize;
- uint numElements;
uint maxEncodingVal;
-
+ Hashset64Int allValues;
friend class EncodingGraph;
};