From 1c230147d56620693852796e1f23ad4c31a55fd5 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Sat, 26 Aug 2017 13:36:58 -0700 Subject: [PATCH] Fix Tuner framework to be OO --- src/Tuner/tunable.cc | 11 +++-------- src/Tuner/tunable.h | 24 ++++++++++++++---------- src/classlist.h | 22 ++++++++++------------ src/csolver.cc | 4 ++-- 4 files changed, 29 insertions(+), 32 deletions(-) diff --git a/src/Tuner/tunable.cc b/src/Tuner/tunable.cc index e0a3201..f994242 100644 --- a/src/Tuner/tunable.cc +++ b/src/Tuner/tunable.cc @@ -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; } diff --git a/src/Tuner/tunable.h b/src/Tuner/tunable.h index 24390ca..5816d7e 100644 --- a/src/Tuner/tunable.h +++ b/src/Tuner/tunable.h @@ -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 diff --git a/src/classlist.h b/src/classlist.h index 33c1398..cef1e1f 100644 --- a/src/classlist.h +++ b/src/classlist.h @@ -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; diff --git a/src/csolver.cc b/src/csolver.cc index 64f0851..4f26bde 100644 --- a/src/csolver.cc +++ b/src/csolver.cc @@ -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) { -- 2.34.1