WSF
WsfQuantumEvaluator.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 WSFQUANTUMEVALUATOR_HPP
13#define WSFQUANTUMEVALUATOR_HPP
14
15#include <map>
16#include <memory>
17
18#include "UtCloneablePtr.hpp"
19class UtInput;
20class UtScript;
21class UtScriptExecutor;
22#include "wsf_mil_export.h"
24class WsfLocalTrack;
25#include "WsfObject.hpp"
26class WsfTask;
28
29
30class WSF_MIL_EXPORT WsfQuantumEvaluator : public WsfObject
31{
32public:
33 virtual std::string EvaluatorType() = 0;
34 virtual void Initialize(double aSimTime, WsfScriptContext* aParentContextPtr = nullptr) = 0;
35 WsfQuantumEvaluator* Clone() const override = 0;
36 virtual double Evaluate(double aSimTime,
37 WsfTask* aTaskPtr,
38 WsfAssetPerception* aAssetPtr,
39 WsfLocalTrack* aTargetTrackPtr = nullptr) = 0;
40
41protected:
43};
44
45
46class WSF_MIL_EXPORT WsfQuantumEvaluatorFactory
47{
48public:
53
55 bool Register(std::unique_ptr<WsfQuantumEvaluator> aEvaluatorPtr);
56 WsfQuantumEvaluator* CreateEvaluator(const std::string& evaluatorName);
57 const std::map<std::string, ut::CloneablePtr<WsfQuantumEvaluator>>& Evaluators() const { return mFactoryMap; }
58
59private:
62
63 std::map<std::string, ut::CloneablePtr<WsfQuantumEvaluator>> mFactoryMap;
64};
65
66
68{
69public:
70 WsfQuantumEvaluatorScript(WsfScriptContext* aContextPtr, std::string& aScriptMethod);
72 ~WsfQuantumEvaluatorScript() override = default;
73 void Initialize(double aSimTime, WsfScriptContext* aParentContextPtr = nullptr) override;
74 WsfQuantumEvaluator* Clone() const override;
75 std::string EvaluatorType() override { return mType; }
76 virtual bool Valid() { return (mScriptPtr != nullptr); }
77 // run the user defined script to evaluate
78 double Evaluate(double aSimTime,
79 WsfTask* aTaskPtr,
80 WsfAssetPerception* aAssetPtr,
81 WsfLocalTrack* aTargetTrackPtr = nullptr) override;
82
83private:
85 std::string mType;
86 UtScript* mScriptPtr;
87 UtScriptContext* mContextPtr;
88 UtScriptExecutor* mExecutorPtr;
89};
90
91
93{
94public:
99 void Initialize(double aSimTime, WsfScriptContext* aParentContextPtr = nullptr) override {}
100 WsfQuantumEvaluator* Clone() const override
101 {
102 return dynamic_cast<WsfQuantumEvaluator*>(new WsfQuantumEvaluatorSimple());
103 } // no member data, just create a new one
104 std::string EvaluatorType() override { return "simple"; }
105 double Evaluate(double aSimTime,
106 WsfTask* aTaskPtr,
107 WsfAssetPerception* aAssetPtr,
108 WsfLocalTrack* aTargetTrackPtr = nullptr) override
109 {
110 return 1.0;
111 }
112};
113
114
116{
117public:
122 void Initialize(double aSimTime, WsfScriptContext* aParentContextPtr = nullptr) override {}
123 WsfQuantumEvaluator* Clone() const override
124 {
125 return dynamic_cast<WsfQuantumEvaluator*>(new WsfQuantumEvaluatorDistance());
126 } // no member data, just create a new one
127 std::string EvaluatorType() override { return "distance"; }
128 double Evaluate(double aSimTime,
129 WsfTask* aTaskPtr,
130 WsfAssetPerception* aAssetPtr,
131 WsfLocalTrack* aTargetTrackPtr = nullptr) override;
132};
133
134
136{
137public:
142 void Initialize(double aSimTime, WsfScriptContext* aParentContextPtr = nullptr) override {}
143 WsfQuantumEvaluator* Clone() const override
144 {
145 return dynamic_cast<WsfQuantumEvaluator*>(new WsfQuantumEvaluatorInterceptTime());
146 } // no member data, just create a new one
147 std::string EvaluatorType() override { return "intercept_time"; }
148 double Evaluate(double aSimTime,
149 WsfTask* aTaskPtr,
150 WsfAssetPerception* aAssetPtr,
151 WsfLocalTrack* aTargetTrackPtr = nullptr) override;
152};
153
154#endif
Definition WsfAssetPerception.hpp:32
Definition WsfLocalTrack.hpp:32
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
virtual WsfObject * Clone() const =0
WsfQuantumEvaluator * Clone() const override
Definition WsfQuantumEvaluator.hpp:123
WsfQuantumEvaluatorDistance()
Definition WsfQuantumEvaluator.hpp:118
std::string EvaluatorType() override
Definition WsfQuantumEvaluator.hpp:127
void Initialize(double aSimTime, WsfScriptContext *aParentContextPtr=nullptr) override
Definition WsfQuantumEvaluator.hpp:122
Definition WsfQuantumEvaluator.hpp:47
~WsfQuantumEvaluatorFactory()=default
static WsfQuantumEvaluatorFactory * Instance()
Definition WsfQuantumEvaluator.cpp:36
WsfQuantumEvaluatorFactory & operator=(WsfQuantumEvaluatorFactory &&)=delete
WsfQuantumEvaluator * CreateEvaluator(const std::string &evaluatorName)
Definition WsfQuantumEvaluator.cpp:51
const std::map< std::string, ut::CloneablePtr< WsfQuantumEvaluator > > & Evaluators() const
Definition WsfQuantumEvaluator.hpp:57
WsfQuantumEvaluatorFactory(WsfQuantumEvaluatorFactory &&aSrc)=delete
bool Register(std::unique_ptr< WsfQuantumEvaluator > aEvaluatorPtr)
Definition WsfQuantumEvaluator.cpp:42
WsfQuantumEvaluatorFactory & operator=(const WsfQuantumEvaluatorFactory &)=delete
WsfQuantumEvaluatorInterceptTime()
Definition WsfQuantumEvaluator.hpp:138
WsfQuantumEvaluator * Clone() const override
Definition WsfQuantumEvaluator.hpp:143
void Initialize(double aSimTime, WsfScriptContext *aParentContextPtr=nullptr) override
Definition WsfQuantumEvaluator.hpp:142
std::string EvaluatorType() override
Definition WsfQuantumEvaluator.hpp:147
Definition WsfQuantumEvaluator.hpp:68
std::string EvaluatorType() override
Definition WsfQuantumEvaluator.hpp:75
WsfQuantumEvaluatorScript(WsfScriptContext *aContextPtr, std::string &aScriptMethod)
Definition WsfQuantumEvaluator.cpp:61
void Initialize(double aSimTime, WsfScriptContext *aParentContextPtr=nullptr) override
Definition WsfQuantumEvaluator.cpp:89
WsfQuantumEvaluatorScript & operator=(const WsfQuantumEvaluatorScript &)=delete
~WsfQuantumEvaluatorScript() override=default
virtual bool Valid()
Definition WsfQuantumEvaluator.hpp:76
WsfQuantumEvaluator * Clone() const override
Definition WsfQuantumEvaluator.hpp:100
WsfQuantumEvaluatorSimple()
Definition WsfQuantumEvaluator.hpp:95
double Evaluate(double aSimTime, WsfTask *aTaskPtr, WsfAssetPerception *aAssetPtr, WsfLocalTrack *aTargetTrackPtr=nullptr) override
Definition WsfQuantumEvaluator.hpp:105
void Initialize(double aSimTime, WsfScriptContext *aParentContextPtr=nullptr) override
Definition WsfQuantumEvaluator.hpp:99
std::string EvaluatorType() override
Definition WsfQuantumEvaluator.hpp:104
Definition WsfQuantumEvaluator.hpp:31
virtual double Evaluate(double aSimTime, WsfTask *aTaskPtr, WsfAssetPerception *aAssetPtr, WsfLocalTrack *aTargetTrackPtr=nullptr)=0
WsfQuantumEvaluator()=default
virtual std::string EvaluatorType()=0
WsfQuantumEvaluator * Clone() const override=0
virtual void Initialize(double aSimTime, WsfScriptContext *aParentContextPtr=nullptr)=0
Definition WsfScriptContext.hpp:71
A class that defines a task to be performed.
Definition WsfTask.hpp:28
Copyrights Multiple, All Rights Reserved