WSF
WsfSensorSignalProcessor.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 WSFSENSORSIGNALPROCESSOR_HPP
13#define WSFSENSORSIGNALPROCESSOR_HPP
14
15#include "wsf_export.h"
16
17#include <list>
18
19#include "UtCloneablePtr.hpp"
20#include "WsfObject.hpp"
21#include "WsfSensor.hpp"
22class WsfSensorMode;
23
35{
36public:
37 using FactoryPtr = WsfSensorSignalProcessor* (*)(const std::string&);
38 using ObjectFactoryList = std::list<FactoryPtr>;
39
42 {
43 public:
44 using ListType = std::vector<UtCloneablePtr<WsfSensorSignalProcessor>>;
45
46 List() = default;
47 List(const List& aSrc) = default;
48 List& operator=(const List& aRhs) = default;
49 ~List() = default;
50
51 bool Empty() const { return mProcessorPtrs.empty(); }
52 size_t Size() const { return mProcessorPtrs.size(); }
53
54 bool Initialize(double aSimTime, WsfSensor* aSensorPtr, WsfSensorMode* aModePtr, size_t aBeamIndex = 0);
55
56 bool ProcessInput(UtInput& aInput);
57
58 void Execute(double aSimTime, WsfSensorResult& aResult);
59
60 private:
61 ListType mProcessorPtrs;
62 };
63
64 // TODO:STATIC -- remove these
66
67 static void AddObjectFactory(FactoryPtr aFactoryPtr);
68 static void RemoveObjectFactory(FactoryPtr aFactoryPtr);
69 static WsfSensorSignalProcessor* CreateInstance(const std::string& aTypeName);
70 static void ClearTypes();
72
73 WsfSensorSignalProcessor* Clone() const override = 0;
74
75 virtual bool Initialize(double aSimTime, WsfSensor* aSensorPtr, WsfSensorMode* aModePtr, size_t aBeamIndex = 0);
76
77 bool ProcessInput(UtInput& aInput) override;
78
79 virtual void Execute(double aSimTime, WsfSensorResult& aResult) = 0;
80
81protected:
83 bool mDebug{false};
84
85private:
86 static WsfSensorSignalProcessor* PredefinedObjectFactory(const std::string& aTypeName);
87
89 static ObjectFactoryList sObjectFactoryList;
90};
91
92#endif
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
virtual bool ProcessInput(UtInput &aInput)
Definition WsfObject.cpp:140
Definition WsfSensorMode.hpp:36
Definition WsfSensorResult.hpp:27
size_t Size() const
Definition WsfSensorSignalProcessor.hpp:52
std::vector< UtCloneablePtr< WsfSensorSignalProcessor > > ListType
Definition WsfSensorSignalProcessor.hpp:44
bool Empty() const
Definition WsfSensorSignalProcessor.hpp:51
List & operator=(const List &aRhs)=default
List(const List &aSrc)=default
Definition WsfSensorSignalProcessor.hpp:35
WsfSensorSignalProcessor * Clone() const override=0
bool mDebug
If 'true' additional information is written out to aid debugging.
Definition WsfSensorSignalProcessor.hpp:83
virtual void Execute(double aSimTime, WsfSensorResult &aResult)=0
virtual bool Initialize(double aSimTime, WsfSensor *aSensorPtr, WsfSensorMode *aModePtr, size_t aBeamIndex=0)
Definition WsfSensorSignalProcessor.cpp:25
std::list< FactoryPtr > ObjectFactoryList
Definition WsfSensorSignalProcessor.hpp:38
WsfSensorSignalProcessor *(*)(const std::string &) FactoryPtr
Definition WsfSensorSignalProcessor.hpp:37
Definition WsfSensor.hpp:92
Copyrights Multiple, All Rights Reserved