Add file to generate tuner files and fix tunable usage
[satune.git] / src / Tuner / searchtuner.cc
index bfe66bb4dd77cdcb21e15230a09cb9e5a6da5882..e594abef11a07062625b8adf9925338600749690 100644 (file)
@@ -72,8 +72,11 @@ ostream &operator<<(ostream &os, const TunableSetting &ts)
 
 
 SearchTuner::SearchTuner() {
+}
+
+SearchTuner::SearchTuner(const char *filename) {
        ifstream myfile;
-       myfile.open (TUNEFILE, ios::in);
+       myfile.open (filename, ios::in);
        if (myfile.is_open()) {
                bool hasVar;
                VarType type1;
@@ -119,6 +122,24 @@ SearchTuner::~SearchTuner() {
        delete iterator;
 }
 
+void SearchTuner::setTunable(TunableParam param, TunableDesc *descriptor, uint value) {
+       TunableSetting *result = new TunableSetting(param);
+       result->setDecision(descriptor->lowValue, descriptor->highValue, descriptor->defaultValue, value);
+       settings.add(result);
+       usedSettings.add(result);
+}
+
+void SearchTuner::setVarTunable(VarType vartype, TunableParam param, TunableDesc *descriptor, uint value) {
+       setVarTunable(vartype, 0, param, descriptor, value);
+}
+
+void SearchTuner::setVarTunable(VarType vartype1, VarType vartype2, TunableParam param, TunableDesc *descriptor, uint value) {
+       TunableSetting *result = new TunableSetting(vartype1, vartype2, param);
+       result->setDecision(descriptor->lowValue, descriptor->highValue, descriptor->defaultValue, value);
+       settings.add(result);
+       usedSettings.add(result);
+}
+
 int SearchTuner::getTunable(TunableParam param, TunableDesc *descriptor) {
        TunableSetting setting(param);
        TunableSetting *result = usedSettings.get(&setting);
@@ -179,9 +200,9 @@ void SearchTuner::print() {
 
 }
 
-void SearchTuner::serialize() {
+void SearchTuner::serialize(const char *filename) {
        ofstream myfile;
-       myfile.open (TUNEFILE, ios::out | ios::trunc);
+       myfile.open (filename, ios::out | ios::trunc);
        SetIteratorTunableSetting *iterator = settings.iterator();
        while (iterator->hasNext()) {
                TunableSetting *setting = iterator->next();