fix up serialization a bit more
[satune.git] / src / Tuner / searchtuner.h
index 1464849e520f2b905a1627071af6760f3f7ea23c..2cd3118bda41514bf9939d94a86fbd85f8175c38 100644 (file)
@@ -3,6 +3,8 @@
 #include "classlist.h"
 #include "tunable.h"
 #include "structs.h"
+#include <ostream>
+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,6 +28,7 @@ private:
        friend unsigned int tunableSettingHash(TunableSetting *setting);
        friend bool tunableSettingEquals(TunableSetting *setting1, TunableSetting *setting2);
        friend class SearchTuner;
+       friend class StaticSearchTuner;
 };
 
 unsigned int tunableSettingHash(TunableSetting *setting);
@@ -36,18 +40,25 @@ typedef SetIterator<TunableSetting *, uintptr_t, 4, tunableSettingHash, tunableS
 class SearchTuner : public Tuner {
 public:
        SearchTuner();
+       SearchTuner(const char *filename);
        ~SearchTuner();
        int getTunable(TunableParam param, TunableDesc *descriptor);
        int getVarTunable(VarType vartype, TunableParam param, TunableDesc *descriptor);
        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();
        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);
 
        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 +66,5 @@ private:
        /** Settings contains all settings. */
        HashsetTunableSetting settings;
 };
+
 #endif