##// END OF EJS Templates
Merge branch 'feature/GraphCleaning' into develop
Merge branch 'feature/GraphCleaning' into develop

File last commit:

r647:710e631137a0 feature/ImprovePe...
r672:1cb481e11c97 merge
Show More
DataSeriesIterator.h
78 lines | 2.6 KiB | text/x-c | CLexer
/ core / include / Data / DataSeriesIterator.h
Alexandre Leroux
Defines an iterator for a data series...
r557 #ifndef SCIQLOP_DATASERIESITERATOR_H
#define SCIQLOP_DATASERIESITERATOR_H
#include "CoreGlobal.h"
Alexandre Leroux
Updates DataSeriesIterator to make an iterator general to SciQlop
r596 #include "Data/SqpIterator.h"
Alexandre Leroux
Defines an iterator for a data series...
r557
Alexandre Leroux
Adds method into ArrayData and DataSeries iterator to get all values
r621 #include <QVector>
Alexandre Leroux
Defines an iterator for a data series...
r557 #include <memory>
/**
* @brief The DataSeriesIteratorValue class represents the current value of a data series iterator.
* It offers standard access methods for the data in the series (x-axis, values), but it is up to
* each series to define its own implementation of how to retrieve this data, by implementing the
* DataSeriesIteratorValue::Impl interface
*
* @sa DataSeriesIterator
*/
class SCIQLOP_CORE_EXPORT DataSeriesIteratorValue {
public:
struct Impl {
virtual ~Impl() noexcept = default;
virtual std::unique_ptr<Impl> clone() const = 0;
Alexandre Leroux
Makes random access iterators...
r640 virtual int distance(const Impl &other) const = 0;
Alexandre Leroux
Defines an iterator for a data series...
r557 virtual bool equals(const Impl &other) const = 0;
Alexandre Leroux
Makes random access iterators...
r640 virtual bool lowerThan(const Impl &other) const = 0;
virtual std::unique_ptr<Impl> advance(int offset) const = 0;
Alexandre Leroux
Improves random access iterator performance
r647 virtual void next(int offset) = 0;
Alexandre Leroux
Defines an iterator for a data series...
r557 virtual void prev() = 0;
virtual double x() const = 0;
virtual double value() const = 0;
virtual double value(int componentIndex) const = 0;
Alexandre Leroux
Implements method to get min/max values of a dataseries giving a range (2)
r570 virtual double minValue() const = 0;
virtual double maxValue() const = 0;
Alexandre Leroux
Adds method into ArrayData and DataSeries iterator to get all values
r621 virtual QVector<double> values() const = 0;
Alexandre Leroux
Adapts iterator to be MoveAssignable...
r627
virtual void swap(Impl &other) = 0;
Alexandre Leroux
Defines an iterator for a data series...
r557 };
explicit DataSeriesIteratorValue(std::unique_ptr<Impl> impl);
DataSeriesIteratorValue(const DataSeriesIteratorValue &other);
DataSeriesIteratorValue &operator=(DataSeriesIteratorValue other);
Alexandre Leroux
Makes random access iterators...
r640 int distance(const DataSeriesIteratorValue &other) const;
Alexandre Leroux
Defines an iterator for a data series...
r557 bool equals(const DataSeriesIteratorValue &other) const;
Alexandre Leroux
Makes random access iterators...
r640 bool lowerThan(const DataSeriesIteratorValue &other) const;
Alexandre Leroux
Defines an iterator for a data series...
r557
Alexandre Leroux
Makes random access iterators...
r640 DataSeriesIteratorValue advance(int offset) const;
Alexandre Leroux
Defines an iterator for a data series...
r557 /// Advances to the next value
Alexandre Leroux
Improves random access iterator performance
r647 void next(int offset = 1);
Alexandre Leroux
Defines an iterator for a data series...
r557 /// Moves back to the previous value
void prev();
/// Gets x-axis data
double x() const;
/// Gets value data
double value() const;
/// Gets value data depending on an index
double value(int componentIndex) const;
Alexandre Leroux
Implements method to get min/max values of a dataseries giving a range (2)
r570 /// Gets min of all values data
double minValue() const;
/// Gets max of all values data
double maxValue() const;
Alexandre Leroux
Adds method into ArrayData and DataSeries iterator to get all values
r621 /// Gets all values data
QVector<double> values() const;
Alexandre Leroux
Defines an iterator for a data series...
r557
Alexandre Leroux
Adapts iterator to be MoveAssignable...
r627 Impl *impl();
friend void swap(DataSeriesIteratorValue &lhs, DataSeriesIteratorValue &rhs)
{
std::swap(lhs.m_Impl, rhs.m_Impl);
}
Alexandre Leroux
Defines an iterator for a data series...
r557 private:
std::unique_ptr<Impl> m_Impl;
};
Alexandre Leroux
Updates DataSeriesIterator to make an iterator general to SciQlop
r596 using DataSeriesIterator = SqpIterator<DataSeriesIteratorValue>;
Alexandre Leroux
Defines an iterator for a data series...
r557
#endif // SCIQLOP_DATASERIESITERATOR_H