#include "tunable.h"
-Tuner * allocTuner() {
- return (Tuner *) ourmalloc(sizeof(Tuner));
+Tuner::Tuner() {
}
-void deleteTuner(Tuner *This) {
- ourfree(This);
-}
-
-int getTunable(Tuner *This, TunableParam param, TunableDesc * descriptor) {
+int Tuner::getTunable(TunableParam param, TunableDesc * descriptor) {
return descriptor->defaultValue;
}
-int getVarTunable(Tuner *This, VarType vartype, TunableParam param, TunableDesc * descriptor) {
+int Tuner::getVarTunable(VarType vartype, TunableParam param, TunableDesc * descriptor) {
return descriptor->defaultValue;
}
#include "classlist.h"
-struct Tuner {
+class Tuner {
+ public:
+ Tuner();
+ int getTunable(TunableParam param, TunableDesc * descriptor);
+ int getVarTunable(VarType vartype, TunableParam param, TunableDesc * descriptor);
+ MEMALLOC;
};
-struct TunableDesc {
+class TunableDesc {
+ public:
+ TunableDesc(int _lowValue, int _highValue, int _defaultValue) : lowValue(_lowValue), highValue(_highValue), defaultValue(_defaultValue) {}
int lowValue;
int highValue;
int defaultValue;
+ MEMALLOC;
};
-Tuner * allocTuner();
-void deleteTuner(Tuner *This);
-int getTunable(Tuner *This, TunableParam param, TunableDesc * descriptor);
-int getVarTunable(Tuner *This, VarType vartype, TunableParam param, TunableDesc * descriptor);
+#define GETTUNABLE(This, param, descriptor) This->getTunable(param, descriptor)
+#define GETVARTUNABLE(This, vartype, param, descriptor) This->getTunable(param, descriptor)
-#define GETTUNABLE(This, param, descriptor) getTunable(This, param, descriptor)
-#define GETVARTUNABLE(This, vartype, param, descriptor) getTunable(This, param, descriptor)
+static TunableDesc onoff(0, 1, 1);
+static TunableDesc offon(0, 1, 0);
-static TunableDesc onoff={0, 1, 1};
-static TunableDesc offon={0, 1, 0};
enum Tunables {DECOMPOSEORDER, MUSTREACHGLOBAL, MUSTREACHLOCAL, MUSTREACHPRUNE, OPTIMIZEORDERSTRUCTURE, ORDERINTEGERENCODING};
typedef enum Tunables Tunables;
#endif
class Order;
class OrderPair;
-struct IncrementalSolver;
-typedef struct IncrementalSolver IncrementalSolver;
-
-
-
class OrderElement;
class ElementEncoding;
class FunctionEncoding;
class OrderEncoding;
-struct TableEntry;
-typedef struct TableEntry TableEntry;
-
class OrderGraph;
class OrderNode;
class OrderEdge;
+
+struct IncrementalSolver;
+typedef struct IncrementalSolver IncrementalSolver;
+
+struct TableEntry;
+typedef struct TableEntry TableEntry;
+
struct OrderEncoder;
typedef struct OrderEncoder OrderEncoder;
-struct Tuner;
-typedef struct Tuner Tuner;
-struct TunableDesc;
-typedef struct TunableDesc TunableDesc;
+class Tuner;
+class TunableDesc;
+
typedef int TunableParam;
typedef unsigned int uint;
#include "orderdecompose.h"
CSolver::CSolver() : unsat(false) {
- tuner = allocTuner();
+ tuner = new Tuner();
satEncoder = allocSATEncoder(this);
}
}
deleteSATEncoder(satEncoder);
- deleteTuner(tuner);
+ delete tuner;
}
Set *CSolver::createSet(VarType type, uint64_t *elements, uint numelements) {