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"