diff --git a/core/include/Variable/VariableStates.h b/core/include/Variable/VariableStates.h index 53c4d48..6a8b5e5 100644 --- a/core/include/Variable/VariableStates.h +++ b/core/include/Variable/VariableStates.h @@ -40,4 +40,32 @@ private: StateData m_Data; }; +/** + * State when a variable is fully loaded (i.e. the last request on the variable has been + * successfully completed) + */ +class LoadedState : public AbstractVariableState { +public: + explicit LoadedState(); + std::unique_ptr clone() const override; +}; + +/** + * State when a variable is loading (i.e. there's pending requests for the variable) + */ +class LoadingState : public AbstractVariableState { +public: + explicit LoadingState(); + std::unique_ptr clone() const override; +}; + +/** + * State when a variable is canceled (i.e. the last request on the variable has been canceled) + */ +class CanceledState : public AbstractVariableState { +public: + explicit CanceledState(); + std::unique_ptr clone() const override; +}; + #endif // SCIQLOP_VARIABLESTATES_H diff --git a/core/src/Variable/VariableStates.cpp b/core/src/Variable/VariableStates.cpp index bf967c1..e94b1a2 100644 --- a/core/src/Variable/VariableStates.cpp +++ b/core/src/Variable/VariableStates.cpp @@ -8,3 +8,42 @@ StateData AbstractVariableState::data() const { return m_Data; } + +// /////////// // +// LoadedState // +// /////////// // + +LoadedState::LoadedState() : AbstractVariableState{{{"color", "green"}}} +{ +} + +std::unique_ptr LoadedState::clone() const +{ + return std::make_unique(*this); +} + +// //////////// // +// LoadingState // +// //////////// // + +LoadingState::LoadingState() : AbstractVariableState{{{"color", "blue"}}} +{ +} + +std::unique_ptr LoadingState::clone() const +{ + return std::make_unique(*this); +} + +// ///////////// // +// CanceledState // +// ///////////// // + +CanceledState::CanceledState() : AbstractVariableState{{{"color", "red"}}} +{ +} + +std::unique_ptr CanceledState::clone() const +{ + return std::make_unique(*this); +}