diff --git a/core/include/Data/ArrayData.h b/core/include/Data/ArrayData.h index 5cd885b..f33f0a5 100644 --- a/core/include/Data/ArrayData.h +++ b/core/include/Data/ArrayData.h @@ -77,6 +77,13 @@ public: } } + void prev() + { + for (auto &it : m_Its) { + --it; + } + } + bool operator==(const IteratorValue &other) const { return m_Its == other.m_Its; } private: @@ -105,6 +112,12 @@ public: return *this; } + Iterator &operator--() + { + m_CurrentValue.prev(); + return *this; + } + pointer operator->() const { return &m_CurrentValue; } reference operator*() const { return m_CurrentValue; } diff --git a/core/include/Data/DataSeries.h b/core/include/Data/DataSeries.h index 036a6b1..b2ddacb 100644 --- a/core/include/Data/DataSeries.h +++ b/core/include/Data/DataSeries.h @@ -191,7 +191,7 @@ public: std::make_unique >(*this, false)}}; } - std::pair subData(double min, double max) const + std::pair subData(double min, double max) const override { if (min > max) { std::swap(min, max); diff --git a/core/include/Data/IDataSeries.h b/core/include/Data/IDataSeries.h index 7435fa3..7574cab 100644 --- a/core/include/Data/IDataSeries.h +++ b/core/include/Data/IDataSeries.h @@ -2,6 +2,7 @@ #define SCIQLOP_IDATASERIES_H #include +#include #include #include @@ -62,6 +63,20 @@ public: virtual std::unique_ptr clone() const = 0; virtual SqpRange range() const = 0; + // ///////// // + // Iterators // + // ///////// // + + virtual DataSeriesIterator cbegin() const = 0; + virtual DataSeriesIterator cend() const = 0; + + virtual std::pair subData(double min, + double max) const = 0; + + // /////// // + // Mutexes // + // /////// // + virtual void lockRead() = 0; virtual void lockWrite() = 0; virtual void unlock() = 0;