diff --git a/GUI/coregui/Models/DataItem.cpp b/GUI/coregui/Models/DataItem.cpp index 1aa35a68fa9ad41b5ecbe8c51c0a052d018303de..82da59fd5d3f59a14b552c3ff3398db4f3bdcc82 100644 --- a/GUI/coregui/Models/DataItem.cpp +++ b/GUI/coregui/Models/DataItem.cpp @@ -27,14 +27,13 @@ void DataItem::setOutputData(OutputData<double>* data) m_data.reset(data); } -void DataItem::setRawDataVector(const OutputData<double>* data) +void DataItem::setRawDataVector(std::vector<double> data) { - if (!m_data->hasSameDimensions(*data)) { + if (m_data->getAllocatedSize() != data.size()) throw GUIHelpers::Error("DataItem::setRawDataVector() -> Error. " - "Different dimensions of data."); - } + "Different data size."); std::unique_lock<std::mutex> lock(m_update_data_mutex); - m_data->setRawDataVector(data->getRawDataVector()); + m_data->setRawDataVector(std::move(data)); emitDataChanged(); } diff --git a/GUI/coregui/Models/DataItem.h b/GUI/coregui/Models/DataItem.h index abf85f1559e1c37191144305c345dd51bbd1b226..d8ea6b9c4f7592dddcaf05a57d2b740e829db16e 100644 --- a/GUI/coregui/Models/DataItem.h +++ b/GUI/coregui/Models/DataItem.h @@ -33,7 +33,11 @@ public: OutputData<double>* getOutputData() { return m_data.get(); } const OutputData<double>* getOutputData() const { return m_data.get(); } virtual void setOutputData(OutputData<double>* data) = 0; - void setRawDataVector(const OutputData<double>* data); + + //! Sets the raw data vector from external source + //! Checks only the equality of data size, + //! no dimension checks are applied. + void setRawDataVector(std::vector<double> data); QString fileName(const QString& projectDir = QString()) const;