12#ifndef WSFSCENARIO_HPP
13#define WSFSCENARIO_HPP
21#include "UtAtmosphere.hpp"
22#include "UtCallback.hpp"
26#include "UtScriptEnvironment.hpp"
33class WsfGrammarInterface;
129 void LoadFromFile(
const std::string& aFileName);
130 void LoadFromStream(UtInput& aInput);
131 bool ProcessInput(UtInput& aInput);
135 void ConfigureInput(UtInput& aInput);
140 void ScenarioChange();
142 bool LoadPlatformInstance(UtInput& aInput);
179 void AddInputProcessor(
const InputFunction& aFunction);
192 void RegisterExtension(
const std::string& aName, std::unique_ptr<WsfScenarioExtension> aExtensionPtr);
193 void ExtensionDepends(
const std::string& aExtensionName,
const std::string& aDependsOnExtensionName,
bool aRequired);
200 void RegisterComponentFactory(std::unique_ptr<WsfComponentFactoryBase> aFactoryPtr);
214 return dynamic_cast<T*
>(objectPtr);
225 return dynamic_cast<T*
>(objectPtr);
229 void AddTypeList(std::unique_ptr<WsfObjectTypeListBaseI> aTypeListPtr);
234 std::vector<WsfObjectTypeListBaseI*> result;
237 result.push_back(typeListPtr.get());
312 void SetInitialRunNumber(
unsigned int aInitialRunNumber);
313 void SetFinalRunNumber(
unsigned int aFinalRunNumber);
314 void SetRunNumberIncrement(
unsigned int aRunNumberIncrement);
317 long int GetRandomSeed(
unsigned int aRunNumber)
const;
327 bool AddInputPlatform(std::unique_ptr<WsfPlatform> aPlatformPtr);
332 unsigned int GetInputPlatformCount()
const;
337 WsfPlatform* GetInputPlatformEntry(
unsigned int aEntry)
const;
373 bool ProcessEnumerateCommand(UtInput& aInput);
376 virtual bool ProcessInputP(UtInput& aInput);
377 bool TypesProcessInput(UtInput& aInput);
380 void ExpectError(
bool aExpectError);
381 void CheckErrorFailure();
383 void LoadFromStreamP(UtInput& aInput);
384 void FileOpenCallback(
const std::string& aFileName);
385 bool ProcessExtensionInput(UtInput& aInput);
386 void SortExtensions();
388 void BuildClassificationString();
389 size_t FindClassificationLevel(
const std::string& aLevel)
const;
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfAdvancedBehaviorTreeNode.hpp:521
Definition WsfAeroTypes.hpp:24
The list of defined antenna_pattern types.
Definition WsfAntennaPatternTypes.hpp:22
Definition WsfApplication.hpp:45
Definition WsfBehaviorTreeNode.hpp:166
Definition WsfCallbackTypes.hpp:19
Definition WsfCorrelationStrategyTypes.hpp:19
Definition WsfEM_AttenuationTypes.hpp:22
Definition WsfEM_ClutterTypes.hpp:21
Definition WsfEM_PropagationTypes.hpp:21
Definition WsfEnvironment.hpp:37
Definition WsfExtensionList.hpp:46
Definition WsfFilterTypes.hpp:21
Definition WsfFuelTypes.hpp:22
Definition WsfFusionStrategyTypes.hpp:20
Definition WsfGroupTypes.hpp:21
IFF manager (Singleton).
Definition WsfIFF_Manager.hpp:27
Definition WsfIntersectMeshTypes.hpp:21
Definition WsfMaskingPatternTypes.hpp:21
Definition WsfMessageTable.hpp:48
Definition WsfMoverTypes.hpp:22
Definition WsfNoiseCloud.hpp:76
The interface an object type list must support.
Definition WsfObjectTypeListBase.hpp:38
Base class for WsfObjectTypeList. Provides most of the implementation.
Definition WsfObjectTypeListBase.hpp:89
Definition WsfObject.hpp:40
Definition WsfPathFinder.hpp:253
Definition WsfPathFinder.hpp:233
Definition WsfProcessorTypes.hpp:19
Definition WsfRadarSignatureTypes.hpp:19
Definition WsfRouteNetworkTypes.hpp:22
Definition WsfRouteTypes.hpp:22
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
void SetSimulationInput(WsfSimulationInput *aSimulationInput)
Definition WsfScenario.cpp:911
std::unique_ptr< UtInput > mInputPtr
Definition WsfScenario.hpp:402
const ComponentFactoryList & GetComponentFactoryList() const
Definition WsfScenario.hpp:201
wsf::comm::router::Types * mRouterTypesPtr
Definition WsfScenario.hpp:486
std::unique_ptr< WsfIFF_Manager > mIFF_ManagerPtr
Definition WsfScenario.hpp:415
WsfApplication & GetApplication() const
Return a reference to the application to which this scenario is associated.
Definition WsfScenario.hpp:127
bool mGotError
Definition WsfScenario.hpp:396
UtScriptTypes * mScriptTypesPtr
Definition WsfScenario.hpp:407
wsf::comm::router::ProtocolTypes & GetRouterProtocolTypes() const
Definition WsfScenario.hpp:275
wsf::comm::medium::Types & GetMediumTypes() const
Definition WsfScenario.hpp:263
long int mInitialRandomSeed
The seed used to generate sRandomSeeds.
Definition WsfScenario.hpp:445
WsfEM_AttenuationTypes * mEM_AttenuationTypesPtr
Definition WsfScenario.hpp:469
WsfPathFinderList & GetPathFinderList() const
Definition WsfScenario.hpp:164
std::set< std::string > mCaveatsSet
Definition WsfScenario.hpp:428
WsfProcessorTypes & GetProcessorTypes() const
Definition WsfScenario.hpp:269
wsf::comm::NetworkTypes & GetNetworkTypes() const
Definition WsfScenario.hpp:265
wsf::comm::medium::Types * mMediumTypesPtr
Definition WsfScenario.hpp:477
WsfSignatureList & GetSignatureListPrototype()
Definition WsfScenario.hpp:349
WsfGroupTypes * mGroupTypesPtr
Definition WsfScenario.hpp:474
WsfEM_ClutterTypes * mEM_ClutterTypesPtr
Definition WsfScenario.hpp:468
std::vector< ClassificationLevel > mClassificationsList
Definition WsfScenario.hpp:425
WsfCorrelationStrategyTypes & GetCorrelationTypes() const
Definition WsfScenario.hpp:253
std::vector< InputFunction > mInputFunctions
Definition WsfScenario.hpp:419
WsfFusionStrategyTypes * mFusionTypesPtr
Definition WsfScenario.hpp:473
WsfSensorErrorModelTypes & GetSensorErrorModelTypes() const
Definition WsfScenario.hpp:276
std::vector< std::unique_ptr< WsfComponentFactoryBase > > ComponentFactoryList
Definition WsfScenario.hpp:114
const WsfExtensionList & GetExtensions() const
Definition WsfScenario.hpp:195
virtual ~WsfScenario()=default
unsigned int GetFinalRunNumber() const
Get the run number of the final iteration.
Definition WsfScenario.hpp:307
WsfBehaviorTreeNodeTypes * mBehaviorTreeNodeTypesPtr
Definition WsfScenario.hpp:464
WsfSensorTypes * mSensorTypesPtr
Definition WsfScenario.hpp:489
WsfVisualPartTypes * mVisualPartTypesPtr
Definition WsfScenario.hpp:496
WsfRadarSignatureTypes * mRadarSignatureTypesPtr
Definition WsfScenario.hpp:490
bool UseQuantitativeTrackQuality() const
Return whether the simulation is using quantitative track quality.
Definition WsfScenario.hpp:344
WsfScenario(WsfApplication &aApplication)
Definition WsfScenario.cpp:113
WsfCorrelationStrategyTypes * mCorrelationTypesPtr
Definition WsfScenario.hpp:467
long int GetInitialSeed() const
Definition WsfScenario.hpp:318
WsfObject * CloneType(const std::string &aTypeKind, WsfStringId aTypeName) const
Definition WsfScenario.cpp:793
WsfEM_ClutterTypes & GetEM_ClutterTypes() const
Definition WsfScenario.hpp:255
WsfNoiseCloudTypes * mNoiseCloudTypesPtr
Definition WsfScenario.hpp:480
const WsfStringTable & Strings() const
Definition WsfScenario.hpp:174
const std::string & GetSimulationName() const
Definition WsfScenario.hpp:366
wsf::TrackExtrapolationStrategyTypes & GetTrackExtrapolationStrategyTypes() const
Definition WsfScenario.hpp:280
WsfGroupTypes & GetGroupTypes() const
Definition WsfScenario.hpp:260
WsfScenario(const WsfScenario &aSrc)=delete
std::pair< std::string, UtColor > ClassificationLevel
Definition WsfScenario.hpp:423
WsfPlatformTypes & GetPlatformTypes() const
Definition WsfScenario.hpp:268
std::vector< long int > mRandomSeeds
A list of random number seeds indexed by run number.
Definition WsfScenario.hpp:450
std::vector< std::string > mInputFiles
Definition WsfScenario.hpp:417
bool LoadIsComplete() const
Definition WsfScenario.hpp:136
WsfFuelTypes & GetFuelTypes() const
Definition WsfScenario.hpp:258
std::unique_ptr< WsfDeferredInput > mDeferredInputPtr
Definition WsfScenario.hpp:403
std::unique_ptr< WsfPlatformAvailability > mPlatformAvailabilityPtr
The 'platform_availability' of input platforms.
Definition WsfScenario.hpp:457
WsfThermalSystemTypes * mThermalSystemTypesPtr
Definition WsfScenario.hpp:494
WsfAntennaPatternTypes & GetAntennaPatternTypes() const
Definition WsfScenario.hpp:249
const std::string & GetClassificationString() const
Definition WsfScenario.hpp:322
long int mInitialSeed
Definition WsfScenario.hpp:447
WsfMoverTypes & GetMoverTypes() const
Definition WsfScenario.hpp:264
WsfFilterTypes & GetFilterTypes() const
Definition WsfScenario.hpp:257
WsfRouteTypes * mRouteTypesPtr
Definition WsfScenario.hpp:485
WsfTrackReportingStrategyTypes * mTrackReportingStrategyTypesPtr
Definition WsfScenario.hpp:493
T * FindTypeT(const std::string &aTypeName)
Definition WsfScenario.hpp:211
UtScriptEnvironment & GetScriptEnvironment() const
Definition WsfScenario.hpp:181
bool mLoadIsComplete
Definition WsfScenario.hpp:401
std::string mSimulationName
Definition WsfScenario.hpp:431
WsfAntennaPatternTypes * mAntennaPatternTypesPtr
Definition WsfScenario.hpp:463
unsigned int GetRunNumberIncrement() const
Get the increment between run numbers.
Definition WsfScenario.hpp:310
WsfSensorErrorModelTypes * mSensorErrorModelTypesPtr
Definition WsfScenario.hpp:488
ComponentFactoryList mComponentFactoryList
This list of component factories attached to the scenario.
Definition WsfScenario.hpp:512
static WsfScenario & FromInput(UtInput &aInput)
Definition WsfScenario.cpp:1294
WsfRadarSignatureTypes & GetRadarSignatureTypes() const
Definition WsfScenario.hpp:271
wsf::comm::Types & GetCommTypes() const
Definition WsfScenario.hpp:252
WsfStringTable mStringTable
Definition WsfScenario.hpp:405
UtScriptTypes * GetScriptTypes() const
Definition WsfScenario.hpp:151
wsf::TerrainInterface * GetTerrainInterface() const
Valid only after WsfScenario::CompleteLoad().
Definition WsfScenario.hpp:169
WsfNoiseCloudTypes & GetNoiseCloudTypes() const
Definition WsfScenario.hpp:266
std::unique_ptr< WsfMessageTable > mMessageTablePtr
Definition WsfScenario.hpp:412
WsfSensorTypes & GetSensorTypes() const
Definition WsfScenario.hpp:277
wsf::comm::router::Types & GetRouterTypes() const
Definition WsfScenario.hpp:274
bool mTestingForInputError
Definition WsfScenario.hpp:395
std::unique_ptr< WsfEnvironment > mEnvironmentPtr
Definition WsfScenario.hpp:410
std::map< std::string, WsfScenarioExtension * > ScenarioExtensionMap
Definition WsfScenario.hpp:113
std::map< std::string, WsfObjectTypeListBaseI * > mTypesListByKind
All of the type lists by type.
Definition WsfScenario.hpp:503
WsfMaskingPatternTypes * mMaskingPatternTypesPtr
Definition WsfScenario.hpp:476
bool mUseQuantitativeTrackQuality
Definition WsfScenario.hpp:421
WsfEM_AttenuationTypes & GetEM_AttenuationTypes() const
Definition WsfScenario.hpp:254
WsfThermalSystemComponentTypes & GetThermalSystemComponentTypes() const
Definition WsfScenario.hpp:279
WsfScriptManager * GetScriptManager() const
Definition WsfScenario.hpp:153
WsfPlatformTypes * mPlatformTypesPtr
Definition WsfScenario.hpp:482
WsfBehaviorTreeNodeTypes & GetBehaviorTreeNodeTypes() const
Definition WsfScenario.hpp:250
WsfCallbackTypes & GetCallbackTypes() const
Definition WsfScenario.hpp:251
std::unique_ptr< wsf::TerrainInterface > mTerrainInterfacePtr
Definition WsfScenario.hpp:414
WsfFilterTypes * mFilterTypesPtr
Definition WsfScenario.hpp:471
bool mExpectInputError
Definition WsfScenario.hpp:397
std::unique_ptr< WsfSimulationInput > mSimulationInputPtr
Definition WsfScenario.hpp:406
unsigned int mFinalRunNumber
The final run number to be executed.
Definition WsfScenario.hpp:439
WsfSimulationInput & GetSimulationInput() const
Definition WsfScenario.hpp:166
wsf::comm::ProtocolTypes & GetProtocolTypes() const
Definition WsfScenario.hpp:270
wsf::TrackExtrapolationStrategyTypes * mTrackExtrapolationStrategyTypesPtr
Definition WsfScenario.hpp:492
WsfIntersectMeshTypes * mIntersectMeshTypesPtr
Definition WsfScenario.hpp:475
WsfMaskingPatternTypes & GetMaskingPatternTypes() const
Definition WsfScenario.hpp:262
WsfAdvancedBehaviorTreeNodeTypes * mAdvancedBehaviorTreeNodeTypesPtr
Definition WsfScenario.hpp:461
WsfFusionStrategyTypes & GetFusionTypes() const
Definition WsfScenario.hpp:259
bool mExtensionsInOrder
Definition WsfScenario.hpp:398
WsfAeroTypes & GetAeroTypes() const
Definition WsfScenario.hpp:248
std::unique_ptr< WsfExtensionList > mExtensionListPtr
The list of scenario extensions attached to the scenario.
Definition WsfScenario.hpp:509
UtAtmosphere & GetAtmosphere() const
Definition WsfScenario.hpp:162
WsfProcessorTypes * mProcessorTypesPtr
Definition WsfScenario.hpp:483
WsfAdvancedBehaviorTreeNodeTypes & GetAdvancedBehaviorTreeNodeTypes() const
Definition WsfScenario.hpp:244
int mOpenConditionalBlocks
Definition WsfScenario.hpp:404
unsigned int GetInitalRunNumber() const
Get the run number of the initial iteration.
Definition WsfScenario.hpp:304
wsf::comm::router::ProtocolTypes * mRouterProtocolTypesPtr
Definition WsfScenario.hpp:487
std::vector< std::unique_ptr< WsfPlatform > > mInputPlatforms
The list of input platforms.
Definition WsfScenario.hpp:454
WsfPathFinderTypes * mPathFinderTypesPtr
Definition WsfScenario.hpp:481
WsfThermalSystemComponentTypes * mThermalSystemComponentTypesPtr
Definition WsfScenario.hpp:495
wsf::comm::ProtocolTypes * mCommProtocolTypesPtr
Definition WsfScenario.hpp:484
WsfZoneTypes * mZoneTypesPtr
Definition WsfScenario.hpp:497
bool mHadUnexpectedError
Definition WsfScenario.hpp:394
ClassificationLevel mClassification
Definition WsfScenario.hpp:426
void SetInitialSeed(long int aInitialSeed)
Definition WsfScenario.hpp:319
const WsfMessageTable * GetMessageTable() const
Definition WsfScenario.hpp:160
friend class ErrorTracker
Definition WsfScenario.hpp:391
std::set< std::string > mTrigraphsSet
Definition WsfScenario.hpp:427
WsfMoverTypes * mMoverTypesPtr
Definition WsfScenario.hpp:478
unsigned int mRunNumberIncrement
The increment between the run numbers.
Definition WsfScenario.hpp:442
T * CloneTypeT(WsfStringId aTypeName) const
Definition WsfScenario.hpp:222
wsf::comm::NetworkTypes * mNetworkTypesPtr
Definition WsfScenario.hpp:479
const WsfSignatureList & GetSignatureListPrototype() const
Definition WsfScenario.hpp:348
WsfObject * FindType(const std::string &aTypeKind, WsfStringId aTypeName) const
Definition WsfScenario.cpp:776
WsfEnvironment & GetEnvironment() const
Definition WsfScenario.hpp:157
WsfFuelTypes * mFuelTypesPtr
Definition WsfScenario.hpp:472
unsigned int mInitialRunNumber
Monte Carlo.
Definition WsfScenario.hpp:436
WsfIntersectMeshTypes & GetIntersectMeshTypes() const
Definition WsfScenario.hpp:261
const std::vector< std::string > & GetInputFiles() const
Returns the input files given to LoadFromFile().
Definition WsfScenario.hpp:177
WsfRouteNetworkTypes & GetRouteNetworkTypes() const
Definition WsfScenario.hpp:273
bool ExpectInputError() const
Returns true in an error is expected.
Definition WsfScenario.hpp:361
std::unique_ptr< UtScriptEnvironment > mScriptEnvironmentPtr
Definition WsfScenario.hpp:408
bool ExpectError() const
Definition WsfScenario.hpp:379
WsfCallbackTypes * mCallbackTypesPtr
Definition WsfScenario.hpp:465
WsfRouteNetworkTypes * mRouteNetworkTypesPtr
Definition WsfScenario.hpp:491
std::vector< std::unique_ptr< WsfObjectTypeListBaseI > > mAllTypeLists
All of the type lists in order of creation.
Definition WsfScenario.hpp:501
WsfScenario & operator=(const WsfScenario &)=delete
wsf::comm::Types * mCommTypesPtr
Definition WsfScenario.hpp:466
size_t mLevelIndex
Definition WsfScenario.hpp:429
WsfIFF_Manager * GetIFF_Manager() const
Returns the IFF manager. The IFF manager is shared by multiple simulations, and must be const after C...
Definition WsfScenario.hpp:172
std::unique_ptr< UtAtmosphere > mAtmospherePtr
Definition WsfScenario.hpp:411
std::function< bool(UtInput &)> InputFunction
Definition WsfScenario.hpp:115
std::unique_ptr< WsfScriptManager > mScriptManagerPtr
Definition WsfScenario.hpp:409
WsfAeroTypes * mAeroTypesPtr
Definition WsfScenario.hpp:462
std::unique_ptr< WsfSignatureList > mSignatureListPrototypePtr
Pointer to the prototype signature list.
Definition WsfScenario.hpp:506
WsfRouteTypes & GetRouteTypes() const
Definition WsfScenario.hpp:272
WsfVisualPartTypes & GetVisualPartTypes() const
Definition WsfScenario.hpp:285
std::unique_ptr< WsfPathFinderList > mPathFinderListPtr
Definition WsfScenario.hpp:413
WsfPathFinderTypes & GetPathFinderTypes() const
Definition WsfScenario.hpp:267
bool HadUnexpectedError() const
Definition WsfScenario.hpp:359
const UtColor & GetClassificationColor() const
Definition WsfScenario.hpp:323
WsfEM_PropagationTypes * mEM_PropagationTypesPtr
Definition WsfScenario.hpp:470
UtInput & GetInput() const
Return the input object used to read scenario inputs.
Definition WsfScenario.hpp:184
WsfThermalSystemTypes & GetThermalSystemTypes() const
Definition WsfScenario.hpp:278
std::vector< WsfObjectTypeListBaseI * > GetTypeLists() const
Definition WsfScenario.hpp:232
WsfApplication * mApplicationPtr
Definition WsfScenario.hpp:393
WsfEM_PropagationTypes & GetEM_PropagationTypes() const
Definition WsfScenario.hpp:256
WsfTrackReportingStrategyTypes & GetTrackReportingStrategyTypes() const
Definition WsfScenario.hpp:284
WsfZoneTypes & GetZoneTypes() const
Definition WsfScenario.hpp:286
Definition WsfScriptContext.hpp:71
Provides the overall management of the scripting capability within the application and scenarios.
Definition WsfScriptManager.hpp:31
Definition WsfSensorErrorModelTypes.hpp:25
Definition WsfSensorTypes.hpp:19
Definition WsfSignatureList.hpp:36
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfStringTable.hpp:18
Definition WsfSystemLog.hpp:28
Definition WsfThermalSystem.hpp:179
Definition WsfThermalSystemTypes.hpp:21
Definition WsfTrackReportingStrategyTypes.hpp:19
Definition WsfVisualPartTypes.hpp:19
Definition WsfZoneTypes.hpp:19
Manages interface to terrain for a set of WsfTerrain objects.
Definition WsfTerrain.hpp:43
Definition WsfCommNetworkTypes.hpp:25
Definition WsfCommProtocolTypes.hpp:26
Definition WsfCommTypes.hpp:24
Definition WsfCommMediumTypes.hpp:40
Definition WsfCommRouterProtocolTypes.hpp:29
Definition WsfCommRouterTypes.hpp:28
Definition WsfCommMedium.cpp:31
Definition WsfComm.hpp:36
Definition WsfComm.cpp:34
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32