File indexing completed on 2024-04-28 05:49:11

0001 /* This file is part of the KDE project
0002    SPDX-FileCopyrightText: 2014 Martin Sandsmark <martin.sandsmark@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "replicodesettings.h"
0008 #include <QSettings>
0009 #include <QString>
0010 
0011 ReplicodeSettings::ReplicodeSettings(QObject *parent)
0012     : QObject(parent)
0013 {
0014     load();
0015 }
0016 
0017 void ReplicodeSettings::load()
0018 {
0019     QSettings settings(QStringLiteral("replicode"), QStringLiteral("replicode"));
0020 
0021     settings.beginGroup(QStringLiteral("Load"));
0022     userOperatorPath = settings.value(QStringLiteral("User Operator Module Path"), QString()).toString();
0023     userClassPath = settings.value(QStringLiteral("User Class File Path"), QString()).toString();
0024     sourcePath = settings.value(QStringLiteral("Source File Path"), QString()).toString();
0025     settings.endGroup();
0026 
0027     settings.beginGroup(QStringLiteral("Init"));
0028     basePeriod = settings.value(QStringLiteral("Base Period"), 50000).toInt();
0029     reductionCoreCount = settings.value(QStringLiteral("Reduction Core Count"), 6).toInt();
0030     timeCoreCount = settings.value(QStringLiteral("Time Core Count"), 2).toInt();
0031 
0032     settings.beginGroup(QStringLiteral("System"));
0033     mdlInertiaSuccessRateThreshold = settings.value(QStringLiteral("Model Inertia Success Rate Threshold"), 0.9).toFloat();
0034     mdlInertiaCountThreshold = settings.value(QStringLiteral("Model Inertia Count Threshold"), 6).toInt();
0035     tpxDeltaSuccessRateThreshold = settings.value(QStringLiteral("Targeted Pattern Extractor Delta Success Rate Threshold"), 0.1).toFloat();
0036     minimumSimulationTimeHorizon = settings.value(QStringLiteral("Minimum Simulation Time Horizon"), 0).toInt();
0037     maximumSimulationTimeHorizon = settings.value(QStringLiteral("Maximum Simulation Time Horizon"), 0).toInt();
0038     simulationTimeHorizon = settings.value(QStringLiteral("Simulation Time Horizon"), 0.3).toFloat();
0039     tpxTimehorizon = settings.value(QStringLiteral("Targeted Pattern Extractor Time Horizon"), 500000).toInt();
0040     perfSamplingPeriod = settings.value(QStringLiteral("Perf Sampling Period"), 250000).toInt();
0041     floatTolerance = settings.value(QStringLiteral("Float Tolerance"), 0.00001).toFloat();
0042     timeTolerance = settings.value(QStringLiteral("Timer Tolerance"), 10000).toInt();
0043     primaryTimeHorizon = settings.value(QStringLiteral("Primary Time Horizon"), 3600000).toInt();
0044     secondaryTimeHorizon = settings.value(QStringLiteral("Secondary Time Horizon"), 7200000).toInt();
0045     settings.endGroup();
0046 
0047     settings.beginGroup(QStringLiteral("Debug"));
0048     debug = settings.value(QStringLiteral("Debug"), true).toBool();
0049     debugWindows = settings.value(QStringLiteral("Debug Windows"), 1).toInt();
0050     traceLevels = settings.value(QStringLiteral("Trace Levels"), QStringLiteral("CC")).toString().toInt(nullptr, 16);
0051     settings.endGroup();
0052 
0053     settings.beginGroup(QStringLiteral("Resilience"));
0054     notificationMarkerResilience = settings.value(QStringLiteral("Notification Marker Resilience"), 1).toInt();
0055     goalPredictionSuccessResilience = settings.value(QStringLiteral("Goal Prediction Success Resilience"), 1000).toInt();
0056     settings.endGroup();
0057 
0058     settings.beginGroup(QStringLiteral("Objects"));
0059     getObjects = settings.value(QStringLiteral("Get Objects"), true).toBool();
0060     decompileObjects = settings.value(QStringLiteral("Decompile Objects"), true).toBool();
0061     decompilationFilePath = settings.value(QStringLiteral("Decompilation Files Paths"), QString()).toString();
0062     ignoreNamedObjects = settings.value(QStringLiteral("Ignore Named Objects"), false).toBool();
0063     objectsPath = settings.value(QStringLiteral("Objects Path"), QString()).toString();
0064     testObjects = settings.value(QStringLiteral("Test Objects"), false).toBool();
0065     settings.endGroup();
0066 
0067     settings.beginGroup(QStringLiteral("Run"));
0068     runTime = settings.value(QStringLiteral("Run Time"), 1080).toInt();
0069     probeLevel = settings.value(QStringLiteral("Probe Level"), 2).toInt();
0070     settings.endGroup();
0071 
0072     settings.beginGroup(QStringLiteral("Models"));
0073     getModels = settings.value(QStringLiteral("Get Models"), false).toBool();
0074     decompileModels = settings.value(QStringLiteral("Decompile Models"), false).toBool();
0075     ignoreNamedModels = settings.value(QStringLiteral("Ignore Named Models"), true).toBool();
0076     modelsPath = settings.value(QStringLiteral("Models Path"), QString()).toString();
0077     testModels = settings.value(QStringLiteral("Test Models"), false).toBool();
0078     settings.endGroup();
0079 }
0080 
0081 void ReplicodeSettings::save()
0082 {
0083     QSettings settings(QStringLiteral("replicode"), QStringLiteral("replicode"));
0084 
0085     settings.beginGroup(QStringLiteral("Load"));
0086     settings.setValue(QStringLiteral("User Operator Module Path"), userOperatorPath);
0087     settings.setValue(QStringLiteral("User Class File Path"), userClassPath);
0088     settings.setValue(QStringLiteral("Source File Path"), sourcePath);
0089     settings.endGroup();
0090 
0091     settings.beginGroup(QStringLiteral("Init"));
0092     settings.setValue(QStringLiteral("Base Period"), basePeriod);
0093     settings.setValue(QStringLiteral("Reduction Core Count"), reductionCoreCount);
0094     settings.setValue(QStringLiteral("Time Core Count"), timeCoreCount);
0095     settings.endGroup();
0096 
0097     settings.beginGroup(QStringLiteral("System"));
0098     settings.setValue(QStringLiteral("Model Inertia Success Rate Threshold"), mdlInertiaSuccessRateThreshold);
0099     settings.setValue(QStringLiteral("Model Inertia Count Threshold"), mdlInertiaCountThreshold);
0100     settings.setValue(QStringLiteral("Targeted Pattern Extractor Delta Success Rate Threshold"), tpxDeltaSuccessRateThreshold);
0101     settings.setValue(QStringLiteral("Minimum Simulation Time Horizon"), minimumSimulationTimeHorizon);
0102     settings.setValue(QStringLiteral("Maximum Simulation Time Horizon"), maximumSimulationTimeHorizon);
0103     settings.setValue(QStringLiteral("Simulation Time Horizon"), simulationTimeHorizon);
0104     settings.setValue(QStringLiteral("Targeted Pattern Extractor Time Horizon"), tpxTimehorizon);
0105     settings.setValue(QStringLiteral("Perf Sampling Period"), perfSamplingPeriod);
0106     settings.setValue(QStringLiteral("Float Tolerance"), floatTolerance);
0107     settings.setValue(QStringLiteral("Timer Tolerance"), timeTolerance);
0108     settings.setValue(QStringLiteral("Primary Time Horizon"), primaryTimeHorizon);
0109     settings.setValue(QStringLiteral("Secondary Time Horizon"), secondaryTimeHorizon);
0110     settings.endGroup();
0111 
0112     settings.beginGroup(QStringLiteral("Debug"));
0113     settings.setValue(QStringLiteral("Debug"), debug);
0114     settings.setValue(QStringLiteral("Debug Windows"), debugWindows);
0115     settings.setValue(QStringLiteral("Trace Levels"), QString::number(traceLevels, 16));
0116     settings.endGroup();
0117 
0118     settings.beginGroup(QStringLiteral("Resilience"));
0119     settings.setValue(QStringLiteral("Notification Marker Resilience"), notificationMarkerResilience);
0120     settings.setValue(QStringLiteral("Goal Prediction Success Resilience"), goalPredictionSuccessResilience);
0121     settings.endGroup();
0122 
0123     settings.beginGroup(QStringLiteral("Objects"));
0124     settings.setValue(QStringLiteral("Get Objects"), getObjects);
0125     settings.setValue(QStringLiteral("Decompile Objects"), decompileObjects);
0126     settings.setValue(QStringLiteral("Decompilation Files Paths"), decompilationFilePath);
0127     settings.setValue(QStringLiteral("Ignore Named Objects"), ignoreNamedObjects);
0128     settings.setValue(QStringLiteral("Objects Path"), objectsPath);
0129     settings.setValue(QStringLiteral("Test Objects"), testObjects);
0130     settings.endGroup();
0131 
0132     settings.beginGroup(QStringLiteral("Run"));
0133     settings.setValue(QStringLiteral("Run Time"), runTime);
0134     settings.setValue(QStringLiteral("Probe Level"), probeLevel);
0135     settings.endGroup();
0136 
0137     settings.beginGroup(QStringLiteral("Models"));
0138     settings.setValue(QStringLiteral("Get Models"), getModels);
0139     settings.setValue(QStringLiteral("Decompile Models"), decompileModels);
0140     settings.setValue(QStringLiteral("Ignore Named Models"), ignoreNamedModels);
0141     settings.setValue(QStringLiteral("Models Path"), modelsPath);
0142     settings.setValue(QStringLiteral("Test Models"), testModels);
0143 }
0144 
0145 void ReplicodeSettings::setDefaults()
0146 {
0147     // Load
0148     userOperatorPath = QString();
0149     userClassPath = QString();
0150     sourcePath = QString();
0151 
0152     // Init
0153     basePeriod = 50000;
0154     reductionCoreCount = 6;
0155     timeCoreCount = 2;
0156 
0157     // System
0158     mdlInertiaSuccessRateThreshold = 0.9f;
0159     mdlInertiaCountThreshold = 6;
0160     tpxDeltaSuccessRateThreshold = 0.1f;
0161     minimumSimulationTimeHorizon = 0;
0162     maximumSimulationTimeHorizon = 0;
0163     simulationTimeHorizon = 0.3f;
0164     tpxTimehorizon = 500000;
0165     perfSamplingPeriod = 250000;
0166     floatTolerance = 0.00001f;
0167     timeTolerance = 10000;
0168     primaryTimeHorizon = 3600000;
0169     secondaryTimeHorizon = 7200000;
0170 
0171     // Debug
0172     debug = true;
0173     debugWindows = 1;
0174     traceLevels = 0xCC;
0175 
0176     // Debug Resilience
0177     notificationMarkerResilience = 1;
0178     goalPredictionSuccessResilience = 1000;
0179 
0180     // Debug Objects
0181     getObjects = true;
0182     decompileObjects = true;
0183     decompilationFilePath = QString();
0184     ignoreNamedObjects = false;
0185     objectsPath = QString();
0186     testObjects = false;
0187 
0188     // Run
0189     runTime = 1080;
0190     probeLevel = 2;
0191     getModels = false;
0192     decompileModels = false;
0193     ignoreNamedModels = true;
0194     modelsPath = QString();
0195     testModels = false;
0196 }
0197 
0198 #include "moc_replicodesettings.cpp"