More of Tuning Framework
[satune.git] / src / Tuner / searchtuner.h
1 #ifndef SEARCHTUNER_H
2 #define SEARCHTUNER_H
3 #include "classlist.h"
4 #include "tunable.h"
5 #include "structs.h"
6
7 class TunableSetting {
8  public:
9         TunableSetting(VarType type, TunableParam param);       
10         TunableSetting(TunableParam param);
11         void setDecision(int _low, int _high, int _default, int _selection);
12         MEMALLOC;
13  private:
14         bool hasVar;
15         VarType type;
16         TunableParam param;
17         int lowValue;
18         int highValue;
19         int defaultValue;
20         int selectedValue;
21         friend unsigned int tunableSettingHash(TunableSetting *setting);
22         friend bool tunableSettingEquals(TunableSetting *setting1, TunableSetting *setting2);
23         friend class SearchTuner;
24 };
25
26 unsigned int tunableSettingHash(TunableSetting *setting);
27 bool tunableSettingEquals(TunableSetting *setting1, TunableSetting *setting2);
28
29 typedef HashSet<TunableSetting *, uintptr_t, 4, tunableSettingHash, tunableSettingEquals> HashSetTunableSetting;
30 typedef HSIterator<TunableSetting *, uintptr_t, 4, tunableSettingHash, tunableSettingEquals> HSIteratorTunableSetting;
31
32 class SearchTuner : public Tuner {
33  public:
34         SearchTuner();
35         ~SearchTuner();
36         int getTunable(TunableParam param, TunableDesc *descriptor);
37         int getVarTunable(VarType vartype, TunableParam param, TunableDesc *descriptor);
38         MEMALLOC;
39  private:
40         HashSetTunableSetting usedSettings;
41         HashSetTunableSetting settings;
42 };
43
44 #endif