WSF
WsfQuantumGenerator.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 WSFQUANTUMGENERATOR_HPP
13#define WSFQUANTUMGENERATOR_HPP
14
15#include <map>
16#include <memory>
17#include <string>
18#include <vector>
19
20#include "UtCloneablePtr.hpp"
21class UtScript;
22class UtScriptClass;
23class UtScriptContext;
24class UtScriptExecutor;
26#include "wsf_mil_export.h"
27class WsfLocalTrack;
28class WsfQuantumTask;
30
31
32class WSF_MIL_EXPORT WsfQuantumGenerator
33{
34public:
36 virtual ~WsfQuantumGenerator() = default;
37 virtual std::string GeneratorType() = 0;
38 virtual void Initialize(double aSimTime, WsfScriptContext* aParentContextPtr = nullptr) = 0;
39 virtual WsfQuantumGenerator* Clone() const = 0;
40 virtual std::vector<WsfQuantumTask*> GenerateTasks(double aSimTime,
41 std::vector<WsfLocalTrack*>& aThreats,
42 std::vector<WsfAssetPerception*>& aAssets) = 0;
43};
44
45
46class WSF_MIL_EXPORT WsfQuantumGeneratorFactory
47{
48public:
53
55 bool Register(std::unique_ptr<WsfQuantumGenerator> aGeneratorPtr);
56 WsfQuantumGenerator* CreateGenerator(const std::string& evaluatorName);
57 const std::map<std::string, ut::CloneablePtr<WsfQuantumGenerator>>& Generators() const { return mFactoryMap; }
58
59private:
62
63 std::map<std::string, ut::CloneablePtr<WsfQuantumGenerator>> mFactoryMap;
64};
65
66
68{
69public:
70 WsfQuantumGeneratorScript(WsfScriptContext* aContextPtr, std::string& aScriptMethod);
72 ~WsfQuantumGeneratorScript() override = default;
73 void Initialize(double aSimTime, WsfScriptContext* aParentContextPtr = nullptr) override;
74 WsfQuantumGenerator* Clone() const override;
75 std::string GeneratorType() override { return mType; }
76 virtual bool Valid() { return (mScriptPtr != nullptr); }
77 std::vector<WsfQuantumTask*> GenerateTasks(double aSimTime,
78 std::vector<WsfLocalTrack*>& aThreats,
79 std::vector<WsfAssetPerception*>& aAssets) override;
80
81private:
83
84 std::string mType;
85 UtScript* mScriptPtr;
86 UtScriptContext* mContextPtr;
87 UtScriptExecutor* mExecutorPtr;
88
89 UtScriptClass* mLocalTrackClassPtr{nullptr};
90 UtScriptClass* mTracksClassPtr{nullptr};
91 UtScriptClass* mAssetClassPtr{nullptr};
92 UtScriptClass* mAssetsClassPtr{nullptr};
93};
94
95
97{
98public:
101 std::string GeneratorType() override { return "simple_weapon"; }
102
103 void Initialize(double aSimTime, WsfScriptContext* aParentContextPtr = nullptr) override {}
105
106 std::vector<WsfQuantumTask*> GenerateTasks(double aSimTime,
107 std::vector<WsfLocalTrack*>& aThreats,
108 std::vector<WsfAssetPerception*>& aAssets) override;
109};
110
111
113{
114public:
117 std::string GeneratorType() override { return "simple_jammer"; }
118
119 void Initialize(double aSimTime, WsfScriptContext* aParentContextPtr = nullptr) override {}
121
122 std::vector<WsfQuantumTask*> GenerateTasks(double aSimTime,
123 std::vector<WsfLocalTrack*>& aThreats,
124 std::vector<WsfAssetPerception*>& aAssets) override;
125};
126
127
129{
130public:
133 std::string GeneratorType() override { return "simple_sensor"; }
134
135 void Initialize(double aSimTime, WsfScriptContext* aParentContextPtr = nullptr) override {}
137
138 std::vector<WsfQuantumTask*> GenerateTasks(double aSimTime,
139 std::vector<WsfLocalTrack*>& aThreats,
140 std::vector<WsfAssetPerception*>& aAssets) override;
141};
142
143#endif
Definition WsfAssetPerception.hpp:32
Definition WsfLocalTrack.hpp:32
Definition WsfQuantumGenerator.hpp:47
WsfQuantumGeneratorFactory(WsfQuantumGeneratorFactory &&aSrc)=delete
~WsfQuantumGeneratorFactory()=default
bool Register(std::unique_ptr< WsfQuantumGenerator > aGeneratorPtr)
Definition WsfQuantumGenerator.cpp:43
WsfQuantumGenerator * CreateGenerator(const std::string &evaluatorName)
Definition WsfQuantumGenerator.cpp:52
WsfQuantumGeneratorFactory & operator=(WsfQuantumGeneratorFactory &&)=delete
static WsfQuantumGeneratorFactory * Instance()
Definition WsfQuantumGenerator.cpp:37
const std::map< std::string, ut::CloneablePtr< WsfQuantumGenerator > > & Generators() const
Definition WsfQuantumGenerator.hpp:57
WsfQuantumGeneratorFactory & operator=(const WsfQuantumGeneratorFactory &)=delete
Definition WsfQuantumGenerator.hpp:68
~WsfQuantumGeneratorScript() override=default
WsfQuantumGeneratorScript & operator=(const WsfQuantumGeneratorScript &)=delete
virtual bool Valid()
Definition WsfQuantumGenerator.hpp:76
void Initialize(double aSimTime, WsfScriptContext *aParentContextPtr=nullptr) override
Definition WsfQuantumGenerator.cpp:90
WsfQuantumGenerator * Clone() const override
Definition WsfQuantumGenerator.cpp:115
WsfQuantumGeneratorScript(WsfScriptContext *aContextPtr, std::string &aScriptMethod)
Definition WsfQuantumGenerator.cpp:62
std::string GeneratorType() override
Definition WsfQuantumGenerator.hpp:75
void Initialize(double aSimTime, WsfScriptContext *aParentContextPtr=nullptr) override
Definition WsfQuantumGenerator.hpp:119
WsfQuantumGenerator * Clone() const override
Definition WsfQuantumGenerator.hpp:120
~WsfQuantumGeneratorSimpleJammer() override=default
std::string GeneratorType() override
Definition WsfQuantumGenerator.hpp:117
void Initialize(double aSimTime, WsfScriptContext *aParentContextPtr=nullptr) override
Definition WsfQuantumGenerator.hpp:135
WsfQuantumGenerator * Clone() const override
Definition WsfQuantumGenerator.hpp:136
~WsfQuantumGeneratorSimpleSensor() override=default
std::string GeneratorType() override
Definition WsfQuantumGenerator.hpp:133
WsfQuantumGenerator * Clone() const override
Definition WsfQuantumGenerator.hpp:104
std::string GeneratorType() override
Definition WsfQuantumGenerator.hpp:101
~WsfQuantumGeneratorSimpleWeapon() override=default
void Initialize(double aSimTime, WsfScriptContext *aParentContextPtr=nullptr) override
Definition WsfQuantumGenerator.hpp:103
Definition WsfQuantumGenerator.hpp:33
virtual WsfQuantumGenerator * Clone() const =0
virtual std::vector< WsfQuantumTask * > GenerateTasks(double aSimTime, std::vector< WsfLocalTrack * > &aThreats, std::vector< WsfAssetPerception * > &aAssets)=0
virtual std::string GeneratorType()=0
WsfQuantumGenerator()=default
virtual ~WsfQuantumGenerator()=default
virtual void Initialize(double aSimTime, WsfScriptContext *aParentContextPtr=nullptr)=0
Definition WsfQuantumTask.hpp:85
Definition WsfScriptContext.hpp:71
Copyrights Multiple, All Rights Reserved