0213f0330193c26d872d2b9938e0718ec8f6c82d
[satune.git] / src / Tuner / tunable.h
1 #ifndef TUNABLE_H
2 #define TUNABLE_H
3 #include "classlist.h"
4 #include "common.h"
5
6 class Tuner {
7 public:
8         virtual int getTunable(TunableParam param, TunableDesc *descriptor) {ASSERT(0); return 0;}
9         virtual int getVarTunable(VarType vartype, TunableParam param, TunableDesc *descriptor) {ASSERT(0); return 0;}
10         virtual int getVarTunable(VarType vartype1, VarType vartype2, TunableParam param, TunableDesc *descriptor) {ASSERT(0); return 0;}
11         virtual ~Tuner() {}
12         CMEMALLOC;
13 };
14
15 class DefaultTuner : public Tuner {
16 public:
17         DefaultTuner();
18         int getTunable(TunableParam param, TunableDesc *descriptor);
19         int getVarTunable(VarType vartype, TunableParam param, TunableDesc *descriptor);
20         int getVarTunable(VarType vartype1, VarType vartype2, TunableParam param, TunableDesc *descriptor);
21         CMEMALLOC;
22 };
23
24
25
26 class TunableDesc {
27 public:
28         TunableDesc(int _lowValue, int _highValue, int _defaultValue) : lowValue(_lowValue), highValue(_highValue), defaultValue(_defaultValue) {}
29         int lowValue;
30         int highValue;
31         int defaultValue;
32         CMEMALLOC;
33 };
34
35
36 #define GETTUNABLE(This, param, descriptor) This->getTunable(param, descriptor)
37 #define GETVARTUNABLE(This, vartype, param, descriptor) This->getTunable(param, descriptor)
38
39 static TunableDesc onoff(0, 1, 1);
40 static TunableDesc offon(0, 1, 0);
41 static TunableDesc proxyparameter(1, 5, 2);
42 static TunableDesc mustValueBinaryIndex(1, 9, 5);
43 static TunableDesc NodeEncodingDesc(ELEM_UNASSIGNED, BINARYINDEX, ELEM_UNASSIGNED);
44 static TunableDesc NaiveEncodingDesc(ONEHOT, BINARYINDEX, ONEHOT);
45
46 enum Tunables {DECOMPOSEORDER, MUSTREACHGLOBAL, MUSTREACHLOCAL, MUSTREACHPRUNE, OPTIMIZEORDERSTRUCTURE, ORDERINTEGERENCODING, PREPROCESS, NODEENCODING, EDGEENCODING, MUSTEDGEPRUNE, ELEMENTOPT, 
47         ENCODINGGRAPHOPT, ELEMENTOPTSETS, PROXYVARIABLE, MUSTVALUE, NAIVEENCODER};
48 typedef enum Tunables Tunables;
49
50 const char *tunableParameterToString(Tunables tunable);
51 #endif