##// END OF EJS Templates
Made Variable data update atomic ease thread safety and avoid mixing...
Made Variable data update atomic ease thread safety and avoid mixing abstraction levels Also added few missing override Signed-off-by: Alexis Jeandet <alexis.jeandet@member.fsf.org>

File last commit:

r16:5da3a19e8770
r16:5da3a19e8770
Show More
Variable.h
112 lines | 3.7 KiB | text/x-c | CLexer
First init from SciQLop Core module...
r0 #ifndef SCIQLOP_VARIABLE_H
#define SCIQLOP_VARIABLE_H
Made Variable data update atomic ease thread safety and avoid mixing...
r16 #include <QLoggingCategory>
#include <QObject>
#include <QUuid>
#include <QReadWriteLock>
First init from SciQLop Core module...
r0
Made Variable data update atomic ease thread safety and avoid mixing...
r16 #include "CoreGlobal.h"
First init from SciQLop Core module...
r0 #include <Data/DataSeriesIterator.h>
#include <Data/DataSeriesType.h>
#include <Data/DateTimeRange.h>
Basic serial variable creation and update...
r2 #include <Common/deprecate.h>
First init from SciQLop Core module...
r0 #include <Common/MetaTypes.h>
#include <Common/spimpl.h>
Q_DECLARE_LOGGING_CATEGORY(LOG_Variable)
class IDataSeries;
class QString;
/**
* @brief The Variable class represents a variable in SciQlop.
*/
class SCIQLOP_CORE_EXPORT Variable : public QObject {
Q_OBJECT
public:
explicit Variable(const QString &name, const QVariantHash &metadata = {});
/// Copy ctor
explicit Variable(const Variable &other);
std::shared_ptr<Variable> clone() const;
QString name() const noexcept;
void setName(const QString &name) noexcept;
DateTimeRange range() const noexcept;
Many fixes plus implemented var synchronization...
r9 void setRange(const DateTimeRange &range, bool notify=false) noexcept;
First init from SciQLop Core module...
r0 DateTimeRange cacheRange() const noexcept;
void setCacheRange(const DateTimeRange &cacheRange) noexcept;
/// @return the number of points hold by the variable. The number of points is updated each time
/// the data series changes
VariableController2 tests refactoring...
r3 unsigned int nbPoints() const noexcept;
First init from SciQLop Core module...
r0
/// Returns the real range of the variable, i.e. the min and max x-axis values of the data
/// series between the range of the variable. The real range is updated each time the variable
/// range or the data series changed
/// @return the real range, invalid range if the data series is null or empty
/// @sa setDataSeries()
/// @sa setRange()
Some refactoring on Variable class...
r15 std::optional<DateTimeRange> realRange() const noexcept;
First init from SciQLop Core module...
r0
/// @return the data of the variable, nullptr if there is no data
std::shared_ptr<IDataSeries> dataSeries() const noexcept;
/// @return the type of data that the variable holds
DataSeriesType type() const noexcept;
QVariantHash metadata() const noexcept;
Many fixes plus implemented var synchronization...
r9 DEPRECATE(
First init from SciQLop Core module...
r0 bool contains(const DateTimeRange &range) const noexcept;
bool intersect(const DateTimeRange &range) const noexcept;
bool isInside(const DateTimeRange &range) const noexcept;
bool cacheContains(const DateTimeRange &range) const noexcept;
bool cacheIntersect(const DateTimeRange &range) const noexcept;
bool cacheIsInside(const DateTimeRange &range) const noexcept;
Many fixes plus implemented var synchronization...
r9 )
DEPRECATE(
First init from SciQLop Core module...
r0 QVector<DateTimeRange> provideNotInCacheRangeList(const DateTimeRange &range) const noexcept;
QVector<DateTimeRange> provideInCacheRangeList(const DateTimeRange &range) const noexcept;
Many fixes plus implemented var synchronization...
r9 )
Basic serial variable creation and update...
r2 DEPRECATE(
First init from SciQLop Core module...
r0 void mergeDataSeries(std::shared_ptr<IDataSeries> dataSeries) noexcept;
Basic serial variable creation and update...
r2 )
Made Variable data update atomic ease thread safety and avoid mixing...
r16
void updateData(const std::vector<IDataSeries*>& dataSeries,
const DateTimeRange& newRange, const DateTimeRange& newCacheRange,
bool notify=true);
First init from SciQLop Core module...
r0
Many fixes plus implemented var synchronization...
r9 DEPRECATE(
First init from SciQLop Core module...
r0 static QVector<DateTimeRange> provideNotInCacheRangeList(const DateTimeRange &oldRange,
const DateTimeRange &nextRange);
static QVector<DateTimeRange> provideInCacheRangeList(const DateTimeRange &oldRange,
const DateTimeRange &nextRange);
Many fixes plus implemented var synchronization...
r9 )
First init from SciQLop Core module...
r0
Basic serial variable creation and update...
r2 QUuid ID(){return _uuid;}
First init from SciQLop Core module...
r0 signals:
void updated();
Many fixes plus implemented var synchronization...
r9 DEPRECATE(
First init from SciQLop Core module...
r0 /// Signal emitted when when the data series of the variable is loaded for the first time
void dataInitialized();
Many fixes plus implemented var synchronization...
r9 )
First init from SciQLop Core module...
r0 private:
class VariablePrivate;
spimpl::unique_impl_ptr<VariablePrivate> impl;
Basic serial variable creation and update...
r2 QUuid _uuid;
Made Variable data update atomic ease thread safety and avoid mixing...
r16 QReadWriteLock m_lock;
First init from SciQLop Core module...
r0 };
// Required for using shared_ptr in signals/slots
SCIQLOP_REGISTER_META_TYPE(VARIABLE_PTR_REGISTRY, std::shared_ptr<Variable>)
SCIQLOP_REGISTER_META_TYPE(VARIABLE_PTR_VECTOR_REGISTRY, QVector<std::shared_ptr<Variable> >)
#endif // SCIQLOP_VARIABLE_H