Fix Tuner framework to be OO
authorbdemsky <bdemsky@uci.edu>
Sat, 26 Aug 2017 20:36:58 +0000 (13:36 -0700)
committerbdemsky <bdemsky@uci.edu>
Sat, 26 Aug 2017 20:36:58 +0000 (13:36 -0700)
src/Tuner/tunable.cc
src/Tuner/tunable.h
src/classlist.h
src/csolver.cc

index e0a3201..f994242 100644 (file)
@@ -1,16 +1,11 @@
 #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;
 }
index 24390ca..5816d7e 100644 (file)
@@ -3,26 +3,30 @@
 #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
index 33c1398..cef1e1f 100644 (file)
@@ -42,31 +42,29 @@ class Table;
 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;
index 64f0851..4f26bde 100644 (file)
@@ -14,7 +14,7 @@
 #include "orderdecompose.h"
 
 CSolver::CSolver() : unsat(false) {
-       tuner = allocTuner();
+       tuner = new Tuner();
        satEncoder = allocSATEncoder(this);
 }
 
@@ -57,7 +57,7 @@ CSolver::~CSolver() {
        }
 
        deleteSATEncoder(satEncoder);
-       deleteTuner(tuner);
+       delete tuner;
 }
 
 Set *CSolver::createSet(VarType type, uint64_t *elements, uint numelements) {