Helios++
Helios software for LiDAR simulations
NonVoidStepLoop.h
1 #pragma once
2 
3 #include <StepLoop.h>
4 
5 #include <functional>
6 
16 template <typename StepOutput, typename ... StepInput>
17 class NonVoidStepLoop : public StepLoop<StepInput ...>{
18 protected:
19  // *** ATTRIBUTES *** //
20  // ******************** //
25  std::function<StepOutput(StepInput ...)> f;
30  StepOutput output;
31 
32 public:
33  // *** CONSTRUCTION / DESTRUCTION *** //
34  // ************************************ //
40  int const stepInterval,
41  std::function<StepOutput(StepInput ...)> f
42  ) :
43  StepLoop<StepInput ...>(stepInterval),
44  f(f)
45  {}
46  virtual ~NonVoidStepLoop() = default;
47 
48  // *** LOOP METHODS *** //
49  // ********************** //
55  void handleStep(StepInput ... input) override {output = f(input ...);}
63  inline StepOutput retrieveOutput() const {return output;}
64 };
Class extending StepLoop to support functions with non void return.
Definition: NonVoidStepLoop.h:17
void handleStep(StepInput ... input) override
Implementation of StepLoop::handleStep for computation regions which return something.
Definition: NonVoidStepLoop.h:55
std::function< StepOutput(StepInput ...)> f
The function to be invoked when computation region has been reached.
Definition: NonVoidStepLoop.h:25
NonVoidStepLoop(int const stepInterval, std::function< StepOutput(StepInput ...)> f)
Non void step loop constructor receiving interval and computation region function.
Definition: NonVoidStepLoop.h:39
StepOutput retrieveOutput() const
Obtain the output corresponding to the last time computation region was entered.
Definition: NonVoidStepLoop.h:63
StepOutput output
The output obtained the last time that computation region was entered.
Definition: NonVoidStepLoop.h:30
Abstract class providing the basics to handle loops inside simulation time, which is discrete because...
Definition: StepLoop.h:22
int stepInterval
Specify how many simulation steps must elapse so the step loop enters its computation region.
Definition: StepLoop.h:36