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 
7 namespace Scenario
8 {
9 
10 template <typename Component_T>
11 class IntervalComponent : public Component_T
12 {
13 public:
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 
40 protected:
41  QPointer<Scenario::IntervalModel> m_interval;
42 };
43 
44 template <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:14