cleanup: const-ify DivePlotDataModel::*max() functions

These functions return the maximum partial pressures in the
given dive. Obviously, being pure accessors, they should be
const.

This commit also replaces the macro generating these functions
by a call to a function taking a pointer-to-member. Arguably,
C++'s pointer-to-member syntax is just as horrible as macros,
but at least it doesn't mess with syntax highlighting of
my editor and should be better to debug.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-12-29 22:39:12 +01:00 committed by Dirk Hohndel
parent f3ac9c96c6
commit f4103e4998
2 changed files with 25 additions and 15 deletions

View file

@ -199,20 +199,30 @@ unsigned int DivePlotDataModel::dcShown() const
return dcNr;
}
#define MAX_PPGAS_FUNC(GAS, GASFUNC) \
double DivePlotDataModel::GASFUNC() \
{ \
double ret = -1; \
for (int i = 0, count = rowCount(); i < count; i++) { \
if (pInfo.entry[i].pressures.GAS > ret) \
ret = pInfo.entry[i].pressures.GAS; \
} \
return ret; \
static double max_gas(const plot_info &pi, double gas_pressures::*gas)
{
double ret = -1;
for (int i = 0; i < pi.nr; ++i) {
if (pi.entry[i].pressures.*gas > ret)
ret = pi.entry[i].pressures.*gas;
}
return ret;
}
MAX_PPGAS_FUNC(he, pheMax);
MAX_PPGAS_FUNC(n2, pn2Max);
MAX_PPGAS_FUNC(o2, po2Max);
double DivePlotDataModel::pheMax() const
{
return max_gas(pInfo, &gas_pressures::he);
}
double DivePlotDataModel::pn2Max() const
{
return max_gas(pInfo, &gas_pressures::n2);
}
double DivePlotDataModel::po2Max() const
{
return max_gas(pInfo, &gas_pressures::o2);
}
void DivePlotDataModel::emitDataChanged()
{

View file

@ -82,9 +82,9 @@ public:
void setDive(struct dive *d, const plot_info &pInfo);
const plot_info &data() const;
unsigned int dcShown() const;
double pheMax();
double pn2Max();
double po2Max();
double pheMax() const;
double pn2Max() const;
double po2Max() const;
void emitDataChanged();
private: