fixed repeatedly increasing memory usage in units unmarshalling code

This commit is contained in:
Mathew Sutcliffe
2013-08-13 22:44:01 +01:00
parent 117021aadf
commit 5257560265
2 changed files with 78 additions and 48 deletions

View File

@@ -249,6 +249,8 @@ public:
static const QList<CMeasurementPrefix> &prefixes()
{
static QList<CMeasurementPrefix> prefixes;
if (prefixes.isEmpty())
{
prefixes.append(CMeasurementPrefix::c());
prefixes.append(CMeasurementPrefix::G());
prefixes.append(CMeasurementPrefix::h());
@@ -257,6 +259,7 @@ public:
prefixes.append(CMeasurementPrefix::m());
prefixes.append(CMeasurementPrefix::None());
prefixes.append(CMeasurementPrefix::One());
}
return prefixes;
}

View File

@@ -140,6 +140,8 @@ public:
static const QList<CLengthUnit> &units()
{
static QList<CLengthUnit> u;
if (u.isEmpty())
{
u.append(CLengthUnit::cm());
u.append(CLengthUnit::ft());
u.append(CLengthUnit::km());
@@ -147,6 +149,7 @@ public:
u.append(CLengthUnit::mi());
u.append(CLengthUnit::miStatute());
u.append(CLengthUnit::NM());
}
return u;
}
@@ -277,9 +280,12 @@ public:
static const QList<CAngleUnit> &units()
{
static QList<CAngleUnit> u;
if (u.isEmpty())
{
u.append(CAngleUnit::deg());
u.append(CAngleUnit::rad());
u.append(CAngleUnit::sexagesimalDeg());
}
return u;
}
@@ -391,10 +397,13 @@ public:
static const QList<CFrequencyUnit> &units()
{
static QList<CFrequencyUnit> u;
if (u.isEmpty())
{
u.append(CFrequencyUnit::GHz());
u.append(CFrequencyUnit::Hz());
u.append(CFrequencyUnit::kHz());
u.append(CFrequencyUnit::MHz());
}
return u;
}
@@ -510,10 +519,13 @@ public:
static const QList<CMassUnit> &units()
{
static QList<CMassUnit> u;
if (u.isEmpty())
{
u.append(CMassUnit::g());
u.append(CMassUnit::kg());
u.append(CMassUnit::lb());
u.append(CMassUnit::t());
}
return u;
}
@@ -662,12 +674,15 @@ public:
static const QList<CPressureUnit> &units()
{
static QList<CPressureUnit> u;
if (u.isEmpty())
{
u.append(CPressureUnit::bar());
u.append(CPressureUnit::hPa());
u.append(CPressureUnit::inHg());
u.append(CPressureUnit::inHgFL());
u.append(CPressureUnit::mbar());
u.append(CPressureUnit::psi());
}
return u;
}
@@ -804,9 +819,12 @@ public:
static const QList<CTemperatureUnit> &units()
{
static QList<CTemperatureUnit> u;
if (u.isEmpty())
{
u.append(CTemperatureUnit::C());
u.append(CTemperatureUnit::F());
u.append(CTemperatureUnit::K());
}
return u;
}
@@ -945,12 +963,15 @@ public:
static const QList<CSpeedUnit> &units()
{
static QList<CSpeedUnit> u;
if (u.isEmpty())
{
u.append(CSpeedUnit::ft_min());
u.append(CSpeedUnit::ft_s());
u.append(CSpeedUnit::km_h());
u.append(CSpeedUnit::kts());
u.append(CSpeedUnit::m_s());
u.append(CSpeedUnit::NM_h());
}
return u;
}
@@ -1078,11 +1099,14 @@ public:
static const QList<CTimeUnit> &units()
{
static QList<CTimeUnit> u;
if (u.isEmpty())
{
u.append(CTimeUnit::d());
u.append(CTimeUnit::h());
u.append(CTimeUnit::min());
u.append(CTimeUnit::ms());
u.append(CTimeUnit::s());
}
return u;
}
@@ -1179,8 +1203,11 @@ public:
static const QList<CAccelerationUnit> &units()
{
static QList<CAccelerationUnit> u;
if (u.isEmpty())
{
u.append(CAccelerationUnit::ft_s2());
u.append(CAccelerationUnit::m_s2());
}
return u;
}