Ref T171, wrapper (which can be used for QMap/QHash) for CInterpolatorMulti

This commit is contained in:
Klaus Basan
2017-10-16 01:00:48 +02:00
parent 584fe51161
commit b8000f1779
2 changed files with 60 additions and 4 deletions

View File

@@ -11,6 +11,8 @@
#include "blackmisc/simulation/interpolatormulti.h"
using namespace BlackMisc::Aviation;
namespace BlackMisc
{
namespace Simulation
@@ -137,5 +139,19 @@ namespace BlackMisc
default: return u;
}
}
}
}
CInterpolatorMultiWrapper::CInterpolatorMultiWrapper()
{ }
CInterpolatorMultiWrapper::CInterpolatorMultiWrapper(const CCallsign &callsign, QObject *parent)
{
m_interpolator.reset(new CInterpolatorMulti(callsign, parent));
}
CInterpolatorMultiWrapper::CInterpolatorMultiWrapper(const CCallsign &callsign, CInterpolationLogger *logger, QObject *parent)
{
m_interpolator.reset(new CInterpolatorMulti(callsign, parent));
m_interpolator->attachLogger(logger);
}
} // ns
} // ns

View File

@@ -91,7 +91,47 @@ namespace BlackMisc
CInterpolatorDummy m_linear;
#endif
};
}
}
/**
* CInterpolatorMulti which can be used with QMap/QHash
*/
class BLACKMISC_EXPORT CInterpolatorMultiWrapper
{
public:
//! Default ctor, needed for QMap/QHash
CInterpolatorMultiWrapper();
//! Constructor
CInterpolatorMultiWrapper(const Aviation::CCallsign &callsign, QObject *parent = nullptr);
//! Constructor
CInterpolatorMultiWrapper(const Aviation::CCallsign &callsign, CInterpolationLogger *logger, QObject *parent = nullptr);
//! Has interpolator initialized?
bool hasInterpolator() const { return m_interpolator; }
//! Interpolator
CInterpolatorMulti *interpolator() const { return m_interpolator.data(); }
//! Allows implicit conversion
operator CInterpolatorMulti *() const { return this->interpolator(); }
//! Bool conversion
operator bool() const { return this->hasInterpolator(); }
//! Bool conversion
bool operator !() const { return !this->hasInterpolator(); }
//! * operator
CInterpolatorMulti &operator *() const { return *this->interpolator(); }
//! -> operator
CInterpolatorMulti *operator ->() const { return this->interpolator(); }
private:
QSharedPointer<CInterpolatorMulti> m_interpolator; //!< shared pointer because CInterpolatorMultiWrapper can be copied
};
} // ns
} // ns
#endif