WSF
WsfApplicationExtension.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFAPPLICATIONEXTENSION_HPP
13#define WSFAPPLICATIONEXTENSION_HPP
14
15#include "wsf_export.h"
16
17#include <iosfwd>
18#include <string>
19
20#include "UtMemory.hpp"
21class WsfApplication;
22#include "WsfExtension.hpp"
23class WsfScenario;
25class WsfSimulation;
27
86{
87public:
88 friend class WsfApplication;
90 ~WsfApplicationExtension() override;
91
94 WsfApplication& GetApplication() const { return *mApplicationPtr; }
95
97
98 virtual void AddedToApplication(WsfApplication& aApplication);
99 virtual void ScenarioCreated(WsfScenario& aScenario);
100 virtual void SimulationCreated(WsfSimulation& aSimulation);
102
104
105 virtual int ProcessCommandLine(WsfStandardApplication::Options& aOptions, int aArgc, char* aArgv[]);
106 virtual void PrintCommandLineArguments() const;
107 virtual void PrintGrammar(std::ostream& aOut);
108 virtual void ProcessCommandLineCommands();
110private:
111 void AddedToApplicationP(const std::string& aName, WsfApplication& aApplication);
112
116 WsfApplicationExtension operator=(const WsfApplicationExtension& aRhs) = delete;
117
118 WsfApplication* mApplicationPtr;
119};
120
121// Eliminate include of WsfScenario.hpp
122namespace WsfPrivate
123{
124WSF_EXPORT void RegisterScenarioExtension(WsfScenario& aScenario,
125 const std::string& aName,
126 std::unique_ptr<WsfScenarioExtension> aExtensionPtr);
127}
128
130template<typename SCENARIO_EXTENSION>
132{
133public:
134 void ScenarioCreated(WsfScenario& aScenario) override
135 {
136 ::WsfPrivate::RegisterScenarioExtension(aScenario, GetExtensionName(), ut::make_unique<SCENARIO_EXTENSION>());
137 }
138};
139
140#endif
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfApplicationExtension.hpp:86
WsfApplication & GetApplication() const
Definition WsfApplicationExtension.hpp:94
friend class WsfApplication
Definition WsfApplicationExtension.hpp:88
WsfApplicationExtension()
Constructor.
Definition WsfApplicationExtension.cpp:22
Definition WsfApplication.hpp:45
An application extension which simply creates a scenario extension for each scenario.
Definition WsfApplicationExtension.hpp:132
void ScenarioCreated(WsfScenario &aScenario) override
Definition WsfApplicationExtension.hpp:134
The base class for application, scenario and simulation extensions.
Definition WsfExtension.hpp:25
const std::string & GetExtensionName() const
Definition WsfExtension.hpp:31
Definition WsfScenarioExtension.hpp:37
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 WsfApplicationExtension.cpp:133
WSF_EXPORT void RegisterScenarioExtension(WsfScenario &aScenario, const std::string &aName, std::unique_ptr< WsfScenarioExtension > aExtensionPtr)
Definition WsfApplicationExtension.cpp:134
Application options; Command line or otherwise.
Definition WsfStandardApplication.hpp:72
Copyrights Multiple, All Rights Reserved