X-Git-Url: http://plrg.eecs.uci.edu/git/?p=satune.git;a=blobdiff_plain;f=src%2FTuner%2Fsearchtuner.h;h=935f5277db5f6c3b56fa532410ca4b92af611b6d;hp=1464849e520f2b905a1627071af6760f3f7ea23c;hb=277157ed17fd19fe51ae9ed82921c8f371d6ccf3;hpb=bc760a347a6fdeb0e43c25b24ce7ecb88afb0421 diff --git a/src/Tuner/searchtuner.h b/src/Tuner/searchtuner.h index 1464849..935f527 100644 --- a/src/Tuner/searchtuner.h +++ b/src/Tuner/searchtuner.h @@ -3,6 +3,8 @@ #include "classlist.h" #include "tunable.h" #include "structs.h" +#include +using namespace std; class TunableSetting { public: @@ -12,6 +14,7 @@ public: TunableSetting(TunableSetting *ts); void setDecision(int _low, int _high, int _default, int _selection); void print(); + friend std ::ostream &operator<< (std::ostream &stream, const TunableSetting &matrix); CMEMALLOC; private: bool hasVar; @@ -25,29 +28,32 @@ private: friend unsigned int tunableSettingHash(TunableSetting *setting); friend bool tunableSettingEquals(TunableSetting *setting1, TunableSetting *setting2); friend class SearchTuner; + friend class SerializeTuner; }; -unsigned int tunableSettingHash(TunableSetting *setting); -bool tunableSettingEquals(TunableSetting *setting1, TunableSetting *setting2); - -typedef Hashset HashsetTunableSetting; -typedef SetIterator SetIteratorTunableSetting; - class SearchTuner : public Tuner { public: SearchTuner(); + SearchTuner(const char *filename, bool addused = false); ~SearchTuner(); - int getTunable(TunableParam param, TunableDesc *descriptor); + virtual int getTunable(TunableParam param, TunableDesc *descriptor); int getVarTunable(VarType vartype, TunableParam param, TunableDesc *descriptor); - int getVarTunable(VarType vartype1, VarType vartype2, TunableParam param, TunableDesc *descriptor); + virtual int getVarTunable(VarType vartype1, VarType vartype2, TunableParam param, TunableDesc *descriptor); + void setTunable(TunableParam param, TunableDesc *descriptor, uint value); + void setVarTunable(VarType vartype, TunableParam param, TunableDesc *descriptor, uint value); + void setVarTunable(VarType vartype1, VarType vartype2, TunableParam param, TunableDesc *descriptor, uint value); SearchTuner *copyUsed(); + bool isSubTunerof(SearchTuner *newTuner); void randomMutate(); uint getSize() { return usedSettings.getSize();} void print(); void printUsed(); - + void serialize(const char *file); + void serializeUsed(const char *file); + void addUsed(const char *file); + bool equalUsed(SearchTuner *tuner); CMEMALLOC; -private: +protected: /** Used Settings keeps track of settings that were actually used by the example. Mutating settings may cause the Constraint Compiler not to query other settings.*/ @@ -55,4 +61,5 @@ private: /** Settings contains all settings. */ HashsetTunableSetting settings; }; + #endif