##// END OF EJS Templates
Implements purge() method for DataSeries
Implements purge() method for DataSeries

File last commit:

r629:34ec67ab5cd8
r629:34ec67ab5cd8
Show More
IDataSeries.h
109 lines | 3.6 KiB | text/x-c | CLexer
Alexandre Leroux
Creates IDataSeries interface and its default implementation
r117 #ifndef SCIQLOP_IDATASERIES_H
#define SCIQLOP_IDATASERIES_H
Alexandre Leroux
Centralization of qregistermetatype management
r285 #include <Common/MetaTypes.h>
Alexandre Leroux
Moves cbegin() and cend() declarations in IDataSeries...
r559 #include <Data/DataSeriesIterator.h>
Implementation of V5 acquisition
r510 #include <Data/SqpRange.h>
Alexandre Leroux
Creates IDataSeries interface and its default implementation
r117
#include <memory>
Add merge API and implement it for the DataSeries
r217 #include <QString>
Alexandre Leroux
Creates IDataSeries interface and its default implementation
r117 template <int Dim>
class ArrayData;
Alexandre Leroux
Replaces QString unit by a new struct...
r164 struct Unit {
explicit Unit(const QString &name = {}, bool timeUnit = false)
: m_Name{name}, m_TimeUnit{timeUnit}
{
}
Alexandre Leroux
Units tests structure
r365 inline bool operator==(const Unit &other) const
{
return std::tie(m_Name, m_TimeUnit) == std::tie(other.m_Name, other.m_TimeUnit);
}
inline bool operator!=(const Unit &other) const { return !(*this == other); }
Alexandre Leroux
Replaces QString unit by a new struct...
r164 QString m_Name; ///< Unit name
Alexandre Leroux
Some fixes...
r453 bool m_TimeUnit; ///< The unit is a unit of time (UTC)
Alexandre Leroux
Replaces QString unit by a new struct...
r164 };
Alexandre Leroux
Creates IDataSeries interface and its default implementation
r117 /**
* @brief The IDataSeries aims to declare a data series.
*
* A data series is an entity that contains at least :
* - one dataset representing the x-axis
* - one dataset representing the values
*
* Each dataset is represented by an ArrayData, and is associated with a unit.
*
* An ArrayData can be unidimensional or two-dimensional, depending on the implementation of the
* IDataSeries. The x-axis dataset is always unidimensional.
*
* @sa ArrayData
*/
class IDataSeries {
public:
virtual ~IDataSeries() noexcept = default;
/// Returns the x-axis dataset
virtual std::shared_ptr<ArrayData<1> > xAxisData() = 0;
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r287 /// Returns the x-axis dataset (as const)
virtual const std::shared_ptr<ArrayData<1> > xAxisData() const = 0;
Alexandre Leroux
Replaces QString unit by a new struct...
r164 virtual Unit xAxisUnit() const = 0;
Alexandre Leroux
Creates IDataSeries interface and its default implementation
r117
Alexandre Leroux
Replaces QString unit by a new struct...
r164 virtual Unit valuesUnit() const = 0;
Add merge API and implement it for the DataSeries
r217
virtual void merge(IDataSeries *dataSeries) = 0;
Alexandre Leroux
Implements purge() method for DataSeries
r629 /// Removes from data series all entries whose value on the x-axis is not between min and max
virtual void purge(double min, double max) = 0;
Alexandre Leroux
Renames subData() to subDataSeries()...
r522 /// @todo Review the name and signature of this method
virtual std::shared_ptr<IDataSeries> subDataSeries(const SqpRange &range) = 0;
Alexandre Leroux
Use std::shared_ptr in CosinusProvider
r287
virtual std::unique_ptr<IDataSeries> clone() const = 0;
Implementation of V5 acquisition
r510 virtual SqpRange range() const = 0;
Add current progression for thread fix
r336
Alexandre Leroux
Moves cbegin() and cend() declarations in IDataSeries...
r559 // ///////// //
// Iterators //
// ///////// //
virtual DataSeriesIterator cbegin() const = 0;
virtual DataSeriesIterator cend() const = 0;
Alexandre Leroux
Adapts SqpIterator to make non-const iterators
r626 virtual DataSeriesIterator begin() = 0;
virtual DataSeriesIterator end() = 0;
Alexandre Leroux
Moves cbegin() and cend() declarations in IDataSeries...
r559
Alexandre Leroux
Shows min x-axis data in Variable widget (1)...
r561 /// @return the iterator to the first entry of the data series whose x-axis data is greater than
/// or equal to the value passed in parameter, or the end iterator if there is no matching value
Alexandre Leroux
(Refactoring) Renames IDataSeries::minData() and IDataSeries::maxData()
r565 virtual DataSeriesIterator minXAxisData(double minXAxisData) const = 0;
Alexandre Leroux
Shows min x-axis data in Variable widget (1)...
r561
Alexandre Leroux
Shows min/max x-axis data in Variable widget (2)...
r562 /// @return the iterator to the last entry of the data series whose x-axis data is less than or
/// equal to the value passed in parameter, or the end iterator if there is no matching value
Alexandre Leroux
(Refactoring) Renames IDataSeries::minData() and IDataSeries::maxData()
r565 virtual DataSeriesIterator maxXAxisData(double maxXAxisData) const = 0;
Alexandre Leroux
Shows min/max x-axis data in Variable widget (2)...
r562
Alexandre Leroux
(Refactoring) Renames IDataSeries::subData()
r566 /// @return the iterators pointing to the range of data whose x-axis values are between min and
/// max passed in parameters
virtual std::pair<DataSeriesIterator, DataSeriesIterator>
xAxisRange(double minXAxisData, double maxXAxisData) const = 0;
Alexandre Leroux
Moves cbegin() and cend() declarations in IDataSeries...
r559
Alexandre Leroux
Implements method to get min/max values of a dataseries giving a range (1)
r569 /// @return two iterators pointing to the data that have respectively the min and the max value
/// data of a data series' range. The search is performed for a given x-axis range.
/// @sa xAxisRange()
virtual std::pair<DataSeriesIterator, DataSeriesIterator>
valuesBounds(double minXAxisData, double maxXAxisData) const = 0;
Alexandre Leroux
Moves cbegin() and cend() declarations in IDataSeries...
r559 // /////// //
// Mutexes //
// /////// //
Add current progression for thread fix
r336 virtual void lockRead() = 0;
virtual void lockWrite() = 0;
virtual void unlock() = 0;
Alexandre Leroux
Creates IDataSeries interface and its default implementation
r117 };
Add merge API and implement it for the DataSeries
r217 // Required for using shared_ptr in signals/slots
Alexandre Leroux
Centralization of qregistermetatype management
r285 SCIQLOP_REGISTER_META_TYPE(IDATASERIES_PTR_REGISTRY, std::shared_ptr<IDataSeries>)
Add merge API and implement it for the DataSeries
r217
Alexandre Leroux
Creates IDataSeries interface and its default implementation
r117 #endif // SCIQLOP_IDATASERIES_H