DataSeries.h
70 lines
| 2.0 KiB
| text/x-c
|
CLexer
Alexandre Leroux
|
r125 | #ifndef SCIQLOP_DATASERIES_H | ||
#define SCIQLOP_DATASERIES_H | ||||
#include <Data/ArrayData.h> | ||||
#include <Data/IDataSeries.h> | ||||
r243 | #include <QLoggingCategory> | |||
Alexandre Leroux
|
r125 | #include <memory> | ||
r243 | ||||
Q_DECLARE_LOGGING_CATEGORY(LOG_DataSeries) | ||||
Q_LOGGING_CATEGORY(LOG_DataSeries, "DataSeries") | ||||
Alexandre Leroux
|
r125 | /** | ||
* @brief The DataSeries class is the base (abstract) implementation of IDataSeries. | ||||
* | ||||
* It proposes to set a dimension for the values data | ||||
* | ||||
* @tparam Dim The dimension of the values data | ||||
* | ||||
*/ | ||||
template <int Dim> | ||||
class DataSeries : public IDataSeries { | ||||
public: | ||||
/// @sa IDataSeries::xAxisData() | ||||
std::shared_ptr<ArrayData<1> > xAxisData() override { return m_XAxisData; } | ||||
/// @sa IDataSeries::xAxisUnit() | ||||
Alexandre Leroux
|
r177 | Unit xAxisUnit() const override { return m_XAxisUnit; } | ||
Alexandre Leroux
|
r125 | |||
/// @return the values dataset | ||||
std::shared_ptr<ArrayData<Dim> > valuesData() const { return m_ValuesData; } | ||||
/// @sa IDataSeries::valuesUnit() | ||||
Alexandre Leroux
|
r177 | Unit valuesUnit() const override { return m_ValuesUnit; } | ||
Alexandre Leroux
|
r125 | |||
r233 | /// @sa IDataSeries::merge() | |||
void merge(IDataSeries *dataSeries) override | ||||
{ | ||||
if (auto dimDataSeries = dynamic_cast<DataSeries<Dim> *>(dataSeries)) { | ||||
m_XAxisData->merge(dimDataSeries->xAxisData().get()); | ||||
m_ValuesData->merge(dimDataSeries->valuesData().get()); | ||||
} | ||||
r243 | else { | |||
qCWarning(LOG_DataSeries()) | ||||
<< QObject::tr("Dection of a type of IDataSeries we cannot merge with !"); | ||||
} | ||||
r233 | } | |||
Alexandre Leroux
|
r125 | protected: | ||
/// Protected ctor (DataSeries is abstract) | ||||
Alexandre Leroux
|
r188 | explicit DataSeries(std::shared_ptr<ArrayData<1> > xAxisData, const Unit &xAxisUnit, | ||
std::shared_ptr<ArrayData<Dim> > valuesData, const Unit &valuesUnit) | ||||
Alexandre Leroux
|
r125 | : m_XAxisData{xAxisData}, | ||
Alexandre Leroux
|
r188 | m_XAxisUnit{xAxisUnit}, | ||
Alexandre Leroux
|
r125 | m_ValuesData{valuesData}, | ||
Alexandre Leroux
|
r188 | m_ValuesUnit{valuesUnit} | ||
Alexandre Leroux
|
r125 | { | ||
} | ||||
private: | ||||
std::shared_ptr<ArrayData<1> > m_XAxisData; | ||||
Alexandre Leroux
|
r177 | Unit m_XAxisUnit; | ||
Alexandre Leroux
|
r125 | std::shared_ptr<ArrayData<Dim> > m_ValuesData; | ||
Alexandre Leroux
|
r177 | Unit m_ValuesUnit; | ||
Alexandre Leroux
|
r125 | }; | ||
#endif // SCIQLOP_DATASERIES_H | ||||