@@ -12,6 +12,8 | |||
|
12 | 12 | #include <Common/MetaTypes.h> |
|
13 | 13 | #include <Common/spimpl.h> |
|
14 | 14 | |
|
15 | #include <Variable/VariableStates.h> | |
|
16 | ||
|
15 | 17 | Q_DECLARE_LOGGING_CATEGORY(LOG_Variable) |
|
16 | 18 | |
|
17 | 19 | class IDataSeries; |
@@ -39,6 +41,10 public: | |||
|
39 | 41 | SqpRange cacheRange() const noexcept; |
|
40 | 42 | void setCacheRange(const SqpRange &cacheRange) noexcept; |
|
41 | 43 | |
|
44 | /// @return the properties associated to the current state of the variable | |
|
45 | StateData stateData() const noexcept; | |
|
46 | void setState(std::unique_ptr<IVariableState> state) noexcept; | |
|
47 | ||
|
42 | 48 | /// @return the number of points hold by the variable. The number of points is updated each time |
|
43 | 49 | /// the data series changes |
|
44 | 50 | int nbPoints() const noexcept; |
@@ -17,7 +17,9 struct Variable::VariablePrivate { | |||
|
17 | 17 | m_Metadata{metadata}, |
|
18 | 18 | m_DataSeries{nullptr}, |
|
19 | 19 | m_RealRange{INVALID_RANGE}, |
|
20 | m_NbPoints{0} | |
|
20 | m_NbPoints{0}, | |
|
21 | m_State{std::make_unique<LoadedState>()} | |
|
22 | ||
|
21 | 23 | { |
|
22 | 24 | } |
|
23 | 25 | |
@@ -28,7 +30,9 struct Variable::VariablePrivate { | |||
|
28 | 30 | m_Metadata{other.m_Metadata}, |
|
29 | 31 | m_DataSeries{other.m_DataSeries != nullptr ? other.m_DataSeries->clone() : nullptr}, |
|
30 | 32 | m_RealRange{other.m_RealRange}, |
|
31 | m_NbPoints{other.m_NbPoints} | |
|
33 | m_NbPoints{other.m_NbPoints}, | |
|
34 | m_State{other.m_State->clone()} | |
|
35 | ||
|
32 | 36 | { |
|
33 | 37 | } |
|
34 | 38 | |
@@ -75,6 +79,7 struct Variable::VariablePrivate { | |||
|
75 | 79 | std::shared_ptr<IDataSeries> m_DataSeries; |
|
76 | 80 | SqpRange m_RealRange; |
|
77 | 81 | int m_NbPoints; |
|
82 | std::unique_ptr<IVariableState> m_State; | |
|
78 | 83 | |
|
79 | 84 | QReadWriteLock m_Lock; |
|
80 | 85 | }; |
@@ -143,6 +148,24 void Variable::setCacheRange(const SqpRange &cacheRange) noexcept | |||
|
143 | 148 | impl->unlock(); |
|
144 | 149 | } |
|
145 | 150 | |
|
151 | StateData Variable::stateData() const noexcept | |
|
152 | { | |
|
153 | impl->lockRead(); | |
|
154 | Q_ASSERT(impl->m_State != nullptr); | |
|
155 | auto stateData = impl->m_State->data(); | |
|
156 | impl->unlock(); | |
|
157 | ||
|
158 | return stateData; | |
|
159 | } | |
|
160 | ||
|
161 | void Variable::setState(std::unique_ptr<IVariableState> state) noexcept | |
|
162 | { | |
|
163 | Q_ASSERT(state != nullptr); | |
|
164 | impl->lockWrite(); | |
|
165 | impl->m_State = std::move(state); | |
|
166 | impl->unlock(); | |
|
167 | } | |
|
168 | ||
|
146 | 169 | int Variable::nbPoints() const noexcept |
|
147 | 170 | { |
|
148 | 171 | return impl->m_NbPoints; |
General Comments 0
You need to be logged in to leave comments.
Login now