Loading...
Searching...
No Matches
AddMessagesToState.hpp
1#pragma once
2#include <State/Message.hpp>
3
4#include <Process/State/MessageNode.hpp>
5
6#include <Scenario/Commands/ScenarioCommandFactory.hpp>
7
8#include <score/command/Command.hpp>
9#include <score/model/Identifier.hpp>
10#include <score/model/path/Path.hpp>
11
12#include <ossia/detail/flat_map.hpp>
13
14#include <score_plugin_scenario_export.h>
15namespace Process
16{
17class ProcessModel;
18}
19
20namespace Scenario
21{
22class StateModel;
23namespace Command
24{
25class SCORE_PLUGIN_SCENARIO_EXPORT ReplaceStateBase : public score::Command
26{
27public:
28 void undo(const score::DocumentContext& ctx) const override;
29 void redo(const score::DocumentContext& ctx) const override;
30
31 void serializeImpl(DataStreamInput&) const override;
32 void deserializeImpl(DataStreamOutput&) override;
33
34protected:
35 void updateProcessMessages(
36 const Scenario::StateModel& state, const State::MessageList& messages);
37 Path<StateModel> m_path;
38
39 Process::MessageNode m_oldState, m_newState;
40
41 ossia::flat_map<Id<Process::ProcessModel>, State::MessageList> m_previousBackup;
42 ossia::flat_map<Id<Process::ProcessModel>, State::MessageList> m_followingBackup;
43};
44
45class SCORE_PLUGIN_SCENARIO_EXPORT ReplaceState : public ReplaceStateBase
46{
47 SCORE_COMMAND_DECL(CommandFactoryName(), ReplaceState, "Replace state")
48public:
50 const Scenario::StateModel& state, const Process::MessageNode& oldnode,
51 const Process::MessageNode& newnode, const State::MessageList& messages);
52 ReplaceState(const Scenario::StateModel& state, const State::MessageList& messages);
53};
54
55class SCORE_PLUGIN_SCENARIO_EXPORT AddMessagesToState final : public ReplaceState
56{
57 SCORE_COMMAND_DECL(CommandFactoryName(), AddMessagesToState, "Add messages to state")
58public:
60 const Scenario::StateModel& state, const State::MessageList& messages);
61};
62
63class SCORE_PLUGIN_SCENARIO_TEST_EXPORT RenameAddressInState final : public score::Command
64{
65 SCORE_COMMAND_DECL(
66 CommandFactoryName(), RenameAddressInState, "Rename address in a state")
67
68public:
70 const Scenario::StateModel& state, const State::AddressAccessor& old,
71 const State::AddressAccessorHead& name);
73 const Scenario::StateModel& state, const State::AddressAccessor& old,
74 const State::AddressAccessor& replacement);
75
76 void undo(const score::DocumentContext& ctx) const override;
77 void redo(const score::DocumentContext& ctx) const override;
78
79private:
80 void serializeImpl(DataStreamInput& s) const override;
81 void deserializeImpl(DataStreamOutput& s) override;
82
83 void makeAnchors(const Scenario::StateModel& state);
84 void apply(
85 const score::DocumentContext& ctx, const State::AddressAccessor& from,
86 const State::AddressAccessor& to, const std::vector<State::AddressAccessor>& anchors)
87 const;
88
89 Path<StateModel> m_state;
90 State::AddressAccessor m_oldName, m_newName;
92 std::vector<State::AddressAccessor> m_oldAnchors, m_newAnchors;
93};
94
95class SCORE_PLUGIN_SCENARIO_TEST_EXPORT RenameAddressesInState final : public ReplaceStateBase
96{
97 SCORE_COMMAND_DECL(
98 CommandFactoryName(), RenameAddressesInState, "Rename address in a state")
99
100public:
102 const Scenario::StateModel& state, const State::Address& find,
103 const State::Address& replace);
104};
105}
106}
The Path class is a typesafe wrapper around ObjectPath.
Definition Path.hpp:52
Definition AddMessagesToState.hpp:56
Definition AddMessagesToState.hpp:64
Definition AddMessagesToState.hpp:96
Definition AddMessagesToState.hpp:26
Definition AddMessagesToState.hpp:46
Definition StateModel.hpp:62
The Command class.
Definition Command.hpp:34
Base classes and tools to implement processes and layers.
Definition JSONVisitor.hpp:1115
Main plug-in of score.
Definition ConnectionsList.hpp:22
Definition DataStreamHelpers.hpp:99
Definition DataStreamHelpers.hpp:103
The AddressAccessorHead struct.
Definition Address.hpp:175
Definition Address.hpp:136
The Address struct.
Definition Address.hpp:81
Definition DocumentContext.hpp:18