12#ifndef WSFCOMMMEDIUMCONTAINER_HPP
13#define WSFCOMMMEDIUMCONTAINER_HPP
15#include "wsf_export.h"
54 : mScenario(aScenario)
61 void SetMedium(std::shared_ptr<Medium> aMedium) { mMedium = aMedium; }
68 virtual bool ProcessInput(UtInput& aInput);
70 virtual bool Initialize(
double aSimTime);
80 virtual bool ProcessContainerInput(UtInput& aInput, InputAction aAction =
cNONE);
111 virtual bool AddDefaultMedium();
118 std::shared_ptr<Medium> mMedium{
nullptr};
119 std::set<TypeIdentifier> mValidMediums{};
120 std::set<TypeIdentifier> mForbiddenMediums{};
125template<
typename PARENT>
129template<
typename PARENT>
149 return containerPtr->ProcessContainerInput(aInput, action);
162 return containerPtr->ProcessContainerInput(aInput, action);
174 if (containerPtr && !containerPtr->GetMedium())
176 return containerPtr->AddDefaultMedium();
202template<
typename PARENT>
227 const auto& components = aParent.GetComponents();
228 auto containerPtr = components.template GetComponent<ContainerComponent<PARENT>>();
235 auto containerPtr =
Find(aParent);
238 auto clonedContainer = ut::make_unique<ContainerComponent<PARENT>>(aScenario);
239 auto& components = aParent.GetComponents();
240 if (components.AddComponent(clonedContainer.get()))
242 containerPtr = clonedContainer.release();
@ cWSF_COMPONENT_NULL
A special entry to indicate the end of the list of roles assumed by a component.
Definition WsfComponentRoles.hpp:92
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
WsfComponentFactory()
Definition WsfComponentFactory.hpp:56
WsfComponentT()
Definition WsfComponent.hpp:124
Definition WsfComponent.hpp:39
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfCommMediumContainer.hpp:204
static ContainerComponent< PARENT > * Find(const PARENT &aParent)
Definition WsfCommMediumContainer.hpp:225
const int * GetComponentRoles() const override
Definition WsfCommMediumContainer.hpp:253
bool Initialize(double aSimTime) override
Definition WsfCommMediumContainer.hpp:213
ContainerComponent(const WsfScenario &aScenario)
Definition WsfCommMediumContainer.hpp:206
WsfComponent * CloneComponent() const override
Required method implementations for components.
Definition WsfCommMediumContainer.hpp:251
void * QueryInterface(int aRole) override
Definition WsfCommMediumContainer.hpp:260
~ContainerComponent() override=default
bool ProcessInput(UtInput &aInput) override
Definition WsfCommMediumContainer.hpp:217
WsfStringId GetComponentName() const override
Definition WsfCommMediumContainer.hpp:252
static ContainerComponent< PARENT > * FindOrCreate(PARENT &aParent, const WsfScenario &aScenario)
Definition WsfCommMediumContainer.hpp:233
A template class for common medium component factory registration.
Definition WsfCommMediumContainer.hpp:131
bool ProcessDeleteCommand(UtInput &aInput, PARENT &aParent) override
Definition WsfCommMediumContainer.hpp:155
bool ProcessAddOrEditCommand(UtInput &aInput, PARENT &aParent, bool aIsAdding) override
Definition WsfCommMediumContainer.hpp:133
bool PreInitialize(double aSimTime, PARENT &aParent) override
Definition WsfCommMediumContainer.hpp:168
Definition WsfCommMediumContainer.hpp:43
InputAction
Definition WsfCommMediumContainer.hpp:46
@ cDELETE
Definition WsfCommMediumContainer.hpp:50
@ cEDIT
Definition WsfCommMediumContainer.hpp:49
@ cADD
Definition WsfCommMediumContainer.hpp:48
@ cNONE
Definition WsfCommMediumContainer.hpp:47
virtual bool Initialize(double aSimTime)
Definition WsfCommMediumContainer.cpp:147
TypeIdentifier GetDefaultMedium() const
Definition WsfCommMediumContainer.hpp:105
const std::set< TypeIdentifier > & GetValidMediums() const
Definition WsfCommMediumContainer.hpp:82
Medium * GetMedium() const
Definition WsfCommMediumContainer.hpp:60
virtual ~Container()=default
void SetMedium(std::shared_ptr< Medium > aMedium)
Definition WsfCommMediumContainer.hpp:61
void SetSimulation(WsfSimulation *aSimPtr)
Definition WsfCommMediumContainer.hpp:74
virtual bool ProcessInput(UtInput &aInput)
Definition WsfCommMediumContainer.cpp:83
const WsfScenario & GetScenario() const
Definition WsfCommMediumContainer.hpp:113
Container(const WsfScenario &aScenario)
Definition WsfCommMediumContainer.hpp:53
Definition WsfCommMedium.hpp:113
Definition WsfCommMedium.cpp:31
TypeIdentifier
Definition WsfCommMediumTypeIdentifier.hpp:50
@ cNONE
Definition WsfCommMediumTypeIdentifier.hpp:51
WSF_EXPORT WsfStringId GetContainerComponentName()
Definition WsfCommMediumContainer.cpp:211
Definition WsfComm.cpp:34
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Definition WsfComponentRoles.hpp:60