Loading...
Searching...
No Matches
MessageItemModelAlgorithms.hpp
1#pragma once
2#include <State/Message.hpp>
3
4#include <Process/State/MessageNode.hpp>
5
6namespace Process
7{
8class ProcessModel;
9}
10#include <score/model/Identifier.hpp>
11
12#include <score_plugin_scenario_export.h>
13
14namespace Scenario
15{
16// An enum that says if a process is before or after the state.
17enum class ProcessPosition
18{
19 Previous,
20 Following
21};
22
23// User messages
24SCORE_PLUGIN_SCENARIO_EXPORT
25void updateTreeWithMessageList(Process::MessageNode& rootNode, State::MessageList lst);
26SCORE_PLUGIN_SCENARIO_EXPORT
27void renameAddress(
28 Process::MessageNode& rootNode, const State::AddressAccessor& oldAddr,
29 const State::AddressAccessor& newAddr);
30void findAndReplaceAddresses(
31 Process::MessageNode& rootNode, const State::Address& oldAddr,
32 const State::Address& newAddr);
33
34// Messages from a process
35void updateTreeWithMessageList(
36 Process::MessageNode& rootNode, State::MessageList lst,
37 const Id<Process::ProcessModel>& proc, ProcessPosition pos);
38
39void updateTreeWithRemovedProcess(
41 ProcessPosition pos);
42
43void updateTreeWithRemovedInterval(Process::MessageNode& rootNode, ProcessPosition pos);
44
45SCORE_PLUGIN_SCENARIO_EXPORT
46void updateTreeWithRemovedUserMessage(
48
49void updateTreeWithRemovedNode(
50 Process::MessageNode& rootNode, const State::AddressAccessor& addr);
51
52void removeAllUserMessages(Process::MessageNode& rootNode);
53
54int countNodes(Process::MessageNode& rootNode);
55Process::MessageNode* getNthChild(Process::MessageNode& rootNode, int n);
56int getChildIndex(Process::MessageNode& rootNode, Process::MessageNode* n);
57}
58
59#include <Scenario/Document/State/ItemModel/MessageItemModel.hpp>
60namespace Scenario
61{
62// User messages
63inline void updateModelWithMessageList(MessageItemModel& model, State::MessageList lst)
64{
65 model.beginResetModel();
66 updateTreeWithMessageList(model.rootNode(), std::move(lst));
67 model.endResetModel();
68}
69
70inline void renameAddress(
71 MessageItemModel& model, const State::AddressAccessor& oldAddr,
72 const State::AddressAccessor& newAddr)
73{
74 model.beginResetModel();
75 renameAddress(model.rootNode(), oldAddr, newAddr);
76 model.endResetModel();
77}
78
79// Messages from a process
80inline void updateModelWithMessageList(
81 MessageItemModel& model, State::MessageList lst,
82 const Id<Process::ProcessModel>& proc, ProcessPosition pos)
83{
84 model.beginResetModel();
85 updateTreeWithMessageList(model.rootNode(), std::move(lst), proc, pos);
86 model.endResetModel();
87}
88
89inline void updateModelWithRemovedProcess(
90 MessageItemModel& model, const Id<Process::ProcessModel>& proc, ProcessPosition pos)
91{
92 model.beginResetModel();
93 updateTreeWithRemovedProcess(model.rootNode(), proc, pos);
94 model.endResetModel();
95}
96
97inline void updateModelWithRemovedInterval(MessageItemModel& model, ProcessPosition pos)
98{
99 model.beginResetModel();
100 updateTreeWithRemovedInterval(model.rootNode(), pos);
101 model.endResetModel();
102}
103
104inline void updateModelWithRemovedUserMessage(
105 MessageItemModel& model, const State::AddressAccessor& addr)
106{
107 model.beginResetModel();
108 updateTreeWithRemovedUserMessage(model.rootNode(), addr);
109 model.endResetModel();
110}
111
112inline void
113updateModelWithRemovedNode(MessageItemModel& model, const State::AddressAccessor& addr)
114{
115 model.beginResetModel();
116 updateTreeWithRemovedNode(model.rootNode(), addr);
117 model.endResetModel();
118}
119
120inline void removeAllUserMessages(MessageItemModel& model)
121{
122 model.beginResetModel();
123 removeAllUserMessages(model.rootNode());
124 model.endResetModel();
125}
126}
The id_base_t class.
Definition Identifier.hpp:59
Base classes and tools to implement processes and layers.
Definition JSONVisitor.hpp:1115
Main plug-in of score.
Definition score-plugin-dataflow/Dataflow/PortItem.hpp:13
Definition Address.hpp:136
The Address struct.
Definition Address.hpp:81