##// END OF EJS Templates
Adds method to get all variables from model...
Adds method to get all variables from model This method will be used to generate forbidden names when renaming a variable (i.e. names of existing variables)

File last commit:

r674:07d26320a984
r684:c7028b4894dd
Show More
ArrayDataIterator.h
68 lines | 2.1 KiB | text/x-c | CLexer
/ core / include / Data / ArrayDataIterator.h
Alexandre Leroux
Creates general iterator for ArrayData
r640 #ifndef SCIQLOP_ARRAYDATAITERATOR_H
#define SCIQLOP_ARRAYDATAITERATOR_H
#include "CoreGlobal.h"
#include "Data/SqpIterator.h"
Alexandre Leroux
Adds method into ArrayData and DataSeries iterator to get all values
r667 #include <QVector>
Alexandre Leroux
Creates general iterator for ArrayData
r640 #include <memory>
/**
* @brief The ArrayDataIteratorValue class represents the current value of an array data iterator.
* It offers standard access methods for the data in the series (at(), first()), but it is up to
* each array data to define its own implementation of how to retrieve this data (one-dim or two-dim
* array), by implementing the ArrayDataIteratorValue::Impl interface
* @sa ArrayDataIterator
*/
class SCIQLOP_CORE_EXPORT ArrayDataIteratorValue {
public:
struct Impl {
virtual ~Impl() noexcept = default;
virtual std::unique_ptr<Impl> clone() const = 0;
virtual bool equals(const Impl &other) const = 0;
virtual void next() = 0;
virtual void prev() = 0;
virtual double at(int componentIndex) const = 0;
virtual double first() const = 0;
virtual double min() const = 0;
virtual double max() const = 0;
Alexandre Leroux
Adds method into ArrayData and DataSeries iterator to get all values
r667 virtual QVector<double> values() const = 0;
Alexandre Leroux
Adapts iterator to be MoveAssignable...
r674
virtual void swap(Impl &other) = 0;
Alexandre Leroux
Creates general iterator for ArrayData
r640 };
explicit ArrayDataIteratorValue(std::unique_ptr<Impl> impl);
ArrayDataIteratorValue(const ArrayDataIteratorValue &other);
ArrayDataIteratorValue &operator=(ArrayDataIteratorValue other);
bool equals(const ArrayDataIteratorValue &other) const;
/// Advances to the next value
void next();
/// Moves back to the previous value
void prev();
/// Gets value of a specified component
double at(int componentIndex) const;
/// Gets value of first component
double first() const;
/// Gets min value among all components
double min() const;
/// Gets max value among all components
double max() const;
Alexandre Leroux
Adds method into ArrayData and DataSeries iterator to get all values
r667 /// Gets all values
QVector<double> values() const;
Alexandre Leroux
Creates general iterator for ArrayData
r640
Alexandre Leroux
Adapts iterator to be MoveAssignable...
r674 Impl *impl();
friend void swap(ArrayDataIteratorValue &lhs, ArrayDataIteratorValue &rhs)
{
std::swap(lhs.m_Impl, rhs.m_Impl);
}
Alexandre Leroux
Creates general iterator for ArrayData
r640 private:
std::unique_ptr<Impl> m_Impl;
};
using ArrayDataIterator = SqpIterator<ArrayDataIteratorValue>;
#endif // SCIQLOP_ARRAYDATAITERATOR_H