Loading...
Searching...
No Matches
Scenario/Document/Components/IntervalComponent.hpp
1#pragma once
2#include <Scenario/Document/Interval/IntervalModel.hpp>
3
4#include <score/document/DocumentContext.hpp>
5#include <score/tools/IdentifierGeneration.hpp>
6
7namespace Scenario
8{
9
10template <typename Component_T>
11class IntervalComponent : public Component_T
12{
13public:
14 template <typename... Args>
15 IntervalComponent(Scenario::IntervalModel& cst, Args&&... args)
16 : Component_T{std::forward<Args>(args)...}
17 , m_interval{&cst}
18 {
19 }
20
21 Scenario::IntervalModel& interval() const
22 {
23 SCORE_ASSERT(m_interval);
24 return *m_interval;
25 }
26
27 auto& context() const { return this->system().context(); }
28
29 template <typename Models>
30 auto& models() const
31 {
32 static_assert(
33 std::is_same<Models, Process::ProcessModel>::value,
34 "Interval component must be passed Process::ProcessModel as child.");
35
36 SCORE_ASSERT(m_interval);
37 return m_interval->processes;
38 }
39
40protected:
41 QPointer<Scenario::IntervalModel> m_interval;
42};
43
44template <typename System_T>
47}
Definition Scenario/Document/Components/IntervalComponent.hpp:12
Definition IntervalModel.hpp:50
Main plug-in of score.
Definition score-plugin-dataflow/Dataflow/PortItem.hpp:13