HOPS
HOPS class reference
MHO_TransformingOperator.hh
Go to the documentation of this file.
1 #ifndef MHO_TransformingOperator_HH__
2 #define MHO_TransformingOperator_HH__
3 
4 #include "MHO_Operator.hh"
5 
6 #include <tuple>
7 
8 namespace hops
9 {
10 
22 template< class XArgType1, class XArgType2 > class MHO_TransformingOperator: public MHO_Operator
23 {
24  public:
26  {
27  std::get< 0 >(fArgs) = nullptr;
28  std::get< 1 >(fArgs) = nullptr;
29  };
30 
32 
40  virtual void SetArgs(const XArgType1* in, XArgType2* out) { fArgs = std::make_tuple(in, out); };
41 
48  virtual bool Initialize() override { return InitializeImpl(std::get< 0 >(fArgs), std::get< 1 >(fArgs)); }
49 
56  virtual bool Execute() override { return ExecuteImpl(std::get< 0 >(fArgs), std::get< 1 >(fArgs)); }
57 
58  protected:
67  virtual bool InitializeImpl(const XArgType1* in, XArgType2* out) = 0;
68 
77  virtual bool ExecuteImpl(const XArgType1* in, XArgType2* out) = 0;
78 
79  //place for args to be stored for derived class to pick them up/modify
80  std::tuple< const XArgType1*, XArgType2* > fArgs;
81 };
82 
83 } // namespace hops
84 
85 #endif
Class MHO_Operator.
Definition: MHO_Operator.hh:21
Class MHO_TransformingOperator.
Definition: MHO_TransformingOperator.hh:23
virtual bool Execute() override
Executes transformation using provided arguments.
Definition: MHO_TransformingOperator.hh:56
virtual bool ExecuteImpl(const XArgType1 *in, XArgType2 *out)=0
Executes an operation transforming input type to output type.
std::tuple< const XArgType1 *, XArgType2 * > fArgs
Definition: MHO_TransformingOperator.hh:80
virtual bool Initialize() override
Initializes the system by calling InitializeImpl with arguments from fArgs.
Definition: MHO_TransformingOperator.hh:48
MHO_TransformingOperator()
Definition: MHO_TransformingOperator.hh:25
virtual void SetArgs(const XArgType1 *in, XArgType2 *out)
Setter for args (operation transforms the original type into another)
Definition: MHO_TransformingOperator.hh:40
virtual bool InitializeImpl(const XArgType1 *in, XArgType2 *out)=0
Initializes implementation using input and output arguments.
virtual ~MHO_TransformingOperator()
Definition: MHO_TransformingOperator.hh:31
Definition: MHO_ChannelLabeler.hh:17