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_ArgumentCarrier.hh"
5 
6 #include <tuple>
7 
8 namespace hops
9 {
10 
19 template< class XArgType1, class XArgType2 >
20 class MHO_TransformingOperator: public MHO_ArgumentCarrier< const XArgType1*, XArgType2* >
21 {
22  public:
25 
26  void SetArgs(const XArgType1* in, XArgType2* out) { this->fArgs = std::make_tuple(in, out); }
27 
28  virtual bool Initialize() override
29  {
30  return this->Apply([this](const XArgType1* in, XArgType2* out) { return InitializeImpl(in, out); });
31  }
32 
33  virtual bool Execute() override
34  {
35  return this->Apply([this](const XArgType1* in, XArgType2* out) { return ExecuteImpl(in, out); });
36  }
37 
38  protected:
39  virtual bool InitializeImpl(const XArgType1* /*in*/, XArgType2* /*out*/) { return true; }
40 
41  virtual bool ExecuteImpl(const XArgType1* in, XArgType2* out) = 0;
42 };
43 
44 } // namespace hops
45 
46 #endif
Variadic base that stores an operator's typed arguments (pointers expected) in a tuple and exposes a ...
Definition: MHO_ArgumentCarrier.hh:22
std::tuple< Args... > fArgs
Definition: MHO_ArgumentCarrier.hh:24
auto Apply(Func &&func) -> decltype(mho_tuple_apply(std::forward< Func >(func), fArgs))
Definition: MHO_ArgumentCarrier.hh:26
Operator which changes one N-D array type into a different N-D array type.
Definition: MHO_TransformingOperator.hh:21
virtual bool Execute() override
Function Execute.
Definition: MHO_TransformingOperator.hh:33
virtual bool ExecuteImpl(const XArgType1 *in, XArgType2 *out)=0
virtual bool InitializeImpl(const XArgType1 *, XArgType2 *)
Definition: MHO_TransformingOperator.hh:39
virtual bool Initialize() override
Function Initialize.
Definition: MHO_TransformingOperator.hh:28
MHO_TransformingOperator()
Definition: MHO_TransformingOperator.hh:23
void SetArgs(const XArgType1 *in, XArgType2 *out)
Definition: MHO_TransformingOperator.hh:26
virtual ~MHO_TransformingOperator()
Definition: MHO_TransformingOperator.hh:24
Definition: MHO_AdhocFlagging.hh:18