Create a constructor with default parameters for some structs

Structs and classes in C++ are basically the same thing and we want to
create a few zero-initialized values for some of them; Sadly, C++ doesn't
have the nice static struct initialization that C has.

One way to deal with that is to create a constructor and pass default
values to it, another is lambda-initialization, but we don't use C++11,
yet.

Since we initializate stuff on the constructor, we don't need to
re-initializate things again on the initialization list (which is also why
I removed the QStrings from the initialization lists, they are
automatically initialized to empty)

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2016-03-06 19:40:57 -03:00 committed by Dirk Hohndel
parent 2745beca5f
commit f25dce8511
3 changed files with 16 additions and 37 deletions

View file

@ -1131,37 +1131,27 @@ static dc_status_t read_ostc_settings(dc_device_t *device, DeviceDetails *m_devi
// Diluent 1 Default (%O2,%He)
// Byte98-99:
// Diluent 1 Current (%O2,%He)
gas dil1 = {};
dil1.oxygen = data[97];
dil1.helium = data[98];
gas dil1(data[97], data[98]);
// Byte100-101:
// Gasuent 2 Default (%O2,%He)
// Byte102-103:
// Gasuent 2 Current (%O2,%He)
gas dil2 = {};
dil2.oxygen = data[101];
dil2.helium = data[102];
gas dil2(data[101], data[102]);
// Byte104-105:
// Gasuent 3 Default (%O2,%He)
// Byte106-107:
// Gasuent 3 Current (%O2,%He)
gas dil3 = {};
dil3.oxygen = data[105];
dil3.helium = data[106];
gas dil3(data[105], data[106]);
// Byte108-109:
// Gasuent 4 Default (%O2,%He)
// Byte110-111:
// Gasuent 4 Current (%O2,%He)
gas dil4 = {};
dil4.oxygen = data[109];
dil4.helium = data[110];
gas dil4(data[109], data[110]);
// Byte112-113:
// Gasuent 5 Default (%O2,%He)
// Byte114-115:
// Gasuent 5 Current (%O2,%He)
gas dil5 = {};
dil5.oxygen = data[113];
dil5.helium = data[114];
gas dil5(data[113], data[114]);
// Byte116:
// First Diluent (1-5)
switch (data[115]) {

View file

@ -1,32 +1,19 @@
#include "devicedetails.h"
// This can probably be done better by someone with better c++-FU
const struct gas zero_gas = {0};
const struct setpoint zero_setpoint = {0};
gas::gas(unsigned char oxygen, unsigned char helium, unsigned char type, unsigned char depth) :
oxygen(oxygen), helium(helium), type(type), depth(depth)
{
}
setpoint::setpoint(unsigned char sp, unsigned char depth) :
sp(sp), depth(depth)
{
}
DeviceDetails::DeviceDetails(QObject *parent) :
QObject(parent),
data(0),
serialNo(""),
firmwareVersion(""),
customText(""),
model(""),
syncTime(false),
gas1(zero_gas),
gas2(zero_gas),
gas3(zero_gas),
gas4(zero_gas),
gas5(zero_gas),
dil1(zero_gas),
dil2(zero_gas),
dil3(zero_gas),
dil4(zero_gas),
dil5(zero_gas),
sp1(zero_setpoint),
sp2(zero_setpoint),
sp3(zero_setpoint),
sp4(zero_setpoint),
sp5(zero_setpoint),
setPointFallback(0),
ccrMode(0),
calibrationGas(0),

View file

@ -10,11 +10,13 @@ struct gas {
unsigned char helium;
unsigned char type;
unsigned char depth;
gas(unsigned char oxygen = 0, unsigned char helium = 0, unsigned char type = 0, unsigned char depth = 0);
};
struct setpoint {
unsigned char sp;
unsigned char depth;
setpoint(unsigned char sp = 0, unsigned char depth = 0);
};
class DeviceDetails : public QObject