Fix retrieval of CommandLengths in TraceAnalyzer and fix some warnings

This commit is contained in:
2022-02-11 11:47:38 +01:00
parent 0f307257fe
commit 14dbd07d4e
3 changed files with 96 additions and 113 deletions

View File

@@ -116,7 +116,7 @@ protected:
friend class PhaseDependency;
};
class REQ : public Phase
class REQ final : public Phase
{
public:
using Phase::Phase;
@@ -136,8 +136,7 @@ protected:
}
};
class RESP : public Phase
class RESP final : public Phase
{
public:
using Phase::Phase;
@@ -158,7 +157,7 @@ protected:
};
/*
class PREB: public Phase
class PREB final : public Phase
{
public:
using Phase::Phase;
@@ -173,7 +172,7 @@ protected:
}
};
*/
class PREPB : public Phase
class PREPB final : public Phase
{
public:
using Phase::Phase;
@@ -188,7 +187,7 @@ protected:
}
};
class PRESB : public Phase
class PRESB final : public Phase
{
public:
using Phase::Phase;
@@ -216,7 +215,7 @@ protected:
}
};
class PREAB : public Phase
class PREAB final : public Phase
{
public:
using Phase::Phase;
@@ -244,7 +243,7 @@ protected:
}
};
/*
class ACTB : public Phase
class ACTB final : public Phase
{
public:
using Phase::Phase;
@@ -259,7 +258,7 @@ protected:
}
};
*/
class ACT : public Phase
class ACT final : public Phase
{
public:
using Phase::Phase;
@@ -274,7 +273,7 @@ protected:
}
};
class RD : public Phase
class RD final : public Phase
{
public:
using Phase::Phase;
@@ -289,7 +288,7 @@ protected:
}
};
class RDA : public Phase
class RDA final : public Phase
{
public:
using Phase::Phase;
@@ -304,7 +303,7 @@ protected:
}
};
class WR : public Phase
class WR final : public Phase
{
public:
using Phase::Phase;
@@ -319,7 +318,7 @@ protected:
}
};
class WRA : public Phase
class WRA final : public Phase
{
public:
using Phase::Phase;
@@ -360,7 +359,7 @@ protected:
}
};
class REFAB : public AUTO_REFRESH
class REFAB final : public AUTO_REFRESH
{
public:
using AUTO_REFRESH::AUTO_REFRESH;
@@ -375,7 +374,7 @@ protected:
}
};
class RFMAB : public AUTO_REFRESH
class RFMAB final : public AUTO_REFRESH
{
public:
using AUTO_REFRESH::AUTO_REFRESH;
@@ -396,8 +395,7 @@ protected:
}
};
class REFPB : public AUTO_REFRESH
class REFPB final : public AUTO_REFRESH
{
public:
using AUTO_REFRESH::AUTO_REFRESH;
@@ -408,7 +406,7 @@ protected:
}
};
class REFP2B : public AUTO_REFRESH
class REFP2B final : public AUTO_REFRESH
{
public:
using AUTO_REFRESH::AUTO_REFRESH;
@@ -423,7 +421,7 @@ protected:
}
};
class RFMP2B : public AUTO_REFRESH
class RFMP2B final : public AUTO_REFRESH
{
public:
using AUTO_REFRESH::AUTO_REFRESH;
@@ -444,7 +442,7 @@ protected:
}
};
class REFSB : public AUTO_REFRESH
class REFSB final : public AUTO_REFRESH
{
public:
using AUTO_REFRESH::AUTO_REFRESH;
@@ -459,7 +457,7 @@ protected:
}
};
class RFMSB : public AUTO_REFRESH
class RFMSB final : public AUTO_REFRESH
{
public:
using AUTO_REFRESH::AUTO_REFRESH;
@@ -484,6 +482,8 @@ class PDNAB : public Phase
{
public:
using Phase::Phase;
virtual ~PDNAB() = default;
protected:
QString Name() const override
{
@@ -508,7 +508,7 @@ protected:
}
};
class PDNA : public PDNAB
class PDNA final : public PDNAB
{
public:
using PDNAB::PDNAB;
@@ -527,6 +527,8 @@ class PDNPB : public Phase
{
public:
using Phase::Phase;
virtual ~PDNPB() = default;
protected:
QString Name() const override
{
@@ -551,7 +553,7 @@ protected:
}
};
class PDNP : public PDNPB
class PDNP final : public PDNPB
{
public:
using PDNPB::PDNPB;
@@ -570,6 +572,8 @@ class SREFB : public Phase
{
public:
using Phase::Phase;
virtual ~SREFB() = default;
protected:
QString Name() const override
{

View File

@@ -334,101 +334,80 @@ GeneralInfo TraceDB::getGeneralInfoFromDB()
CommandLengths TraceDB::getCommandLengthsFromDB()
{
QVariant parameter;
parameter = getParameterFromTable("NOP", "CommandLengths");
unsigned NOP = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("RD", "CommandLengths");
unsigned RD = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("WR", "CommandLengths");
unsigned WR = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("RDA", "CommandLengths");
unsigned RDA = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("WRA", "CommandLengths");
unsigned WRA = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("ACT", "CommandLengths");
unsigned ACT = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("PREPB", "CommandLengths");
unsigned PREPB;
if (parameter.isValid())
const std::string table = "CommandLengths";
auto getLengthFromDb = [=, &table](const std::string &command) -> QVariant
{
PREPB = parameter.toUInt();
}
else
{
parameter = getParameterFromTable("PRE", "CommandLengths");
if (parameter.isValid())
PREPB = parameter.toUInt();
QSqlQuery query(("SELECT Length FROM " + table + " WHERE Command = \"" + command + "\"").c_str(), database);
if (query.first())
return query.value(0);
else
PREPB = 1;
}
parameter = getParameterFromTable("REFPB", "CommandLengths");
unsigned REFPB;
if (parameter.isValid())
return {};
};
auto getCommandLength = [=, &table](const std::string &command) -> unsigned
{
REFPB = parameter.toUInt();
}
else
{
parameter = getParameterFromTable("REFB", "CommandLengths");
if (parameter.isValid())
REFPB = parameter.toUInt();
QVariant length = getLengthFromDb(command);
if (length.isValid())
return length.toUInt();
else
REFPB = 1;
}
parameter = getParameterFromTable("RFMPB", "CommandLengths");
unsigned RFMPB = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("REFP2B", "CommandLengths");
unsigned REFP2B = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("RFMP2B", "CommandLengths");
unsigned RFMP2B = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("PRESB", "CommandLengths");
unsigned PRESB = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("REFSB", "CommandLengths");
unsigned REFSB = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("RFMSB", "CommandLengths");
unsigned RFMSB = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("PREAB", "CommandLengths");
unsigned PREAB;
if (parameter.isValid())
{
qDebug() << "CommandLength for" << command.c_str() << "not present in table" << table.c_str()
<< ". Defaulting to 1.";
return 1;
}
};
auto getCommandLengthOrElse = [=, &table](const std::string &command, const std::string &elseCommand) -> unsigned
{
PREAB = parameter.toUInt();
}
else
{
parameter = getParameterFromTable("PREA", "CommandLengths");
if (parameter.isValid())
PREAB = parameter.toUInt();
QVariant length = getLengthFromDb(command);
if (length.isValid())
return length.toUInt();
else
PREAB = 1;
}
parameter = getParameterFromTable("REFAB", "CommandLengths");
unsigned REFAB;
if (parameter.isValid())
{
REFAB = parameter.toUInt();
}
else
{
parameter = getParameterFromTable("REFA", "CommandLengths");
if (parameter.isValid())
REFAB = parameter.toUInt();
else
REFAB = 1;
}
parameter = getParameterFromTable("RFMAB", "CommandLengths");
unsigned RFMAB = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("PDEA", "CommandLengths");
unsigned PDEA = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("PDXA", "CommandLengths");
unsigned PDXA = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("PDEP", "CommandLengths");
unsigned PDEP = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("PDXP", "CommandLengths");
unsigned PDXP = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("SREFEN", "CommandLengths");
unsigned SREFEN = parameter.isValid() ? parameter.toUInt() : 1;
parameter = getParameterFromTable("SREFEX", "CommandLengths");
unsigned SREFEX = parameter.isValid() ? parameter.toUInt() : 1;
{
length = getLengthFromDb(command);
if (length.isValid())
return length.toUInt();
else
{
qDebug() << "CommandLength for" << command.c_str() << "and" << elseCommand.c_str()
<< "not present in table" << table.c_str() << ". Defaulting to 1.";
return 1;
}
}
};
unsigned NOP = getCommandLength("NOP");
unsigned RD = getCommandLength("RD");
unsigned WR = getCommandLength("RD");
unsigned RDA = getCommandLength("RDA");
unsigned WRA = getCommandLength("WRA");
unsigned ACT = getCommandLength("ACT");
unsigned PREPB = getCommandLengthOrElse("PREPB", "PRE");
unsigned REFPB = getCommandLengthOrElse("REFPB", "REFB");
unsigned RFMPB = getCommandLength("RFMPB");
unsigned REFP2B = getCommandLength("REFP2B");
unsigned RFMP2B = getCommandLength("RFMP2B");
unsigned PRESB = getCommandLength("PRESB");
unsigned REFSB = getCommandLength("REFSB");
unsigned RFMSB = getCommandLength("RFMSB");
unsigned PREAB = getCommandLengthOrElse("PREAB", "PREA");
unsigned REFAB = getCommandLengthOrElse("REFAB", "REFA");
unsigned RFMAB = getCommandLength("RFMAB");
unsigned PDEA = getCommandLength("PDEA");
unsigned PDXA = getCommandLength("PDXA");
unsigned PDEP = getCommandLength("PDEP");
unsigned PDXP = getCommandLength("PDXP");
unsigned SREFEN = getCommandLength("SREFEN");
unsigned SREFEX = getCommandLength("SREFEX");
return {NOP, RD, WR, RDA, WRA, ACT, PREPB, REFPB, RFMPB, REFP2B, RFMP2B, PRESB, REFSB, RFMSB,
PREAB, REFAB, RFMAB, PDEA, PDXA, PDEP, PDXP, SREFEN, SREFEX};

View File

@@ -115,7 +115,7 @@ private:
QString pathToDB;
QSqlDatabase database;
GeneralInfo generalInfo;
CommandLengths commandLengths{};
CommandLengths commandLengths;
QSqlQuery insertPhaseQuery;
QSqlQuery insertTransactionQuery;