Helios++
Helios software for LiDAR simulations
PointcloudYielder.h
1 #pragma once
2 
3 #include <scanner/Measurement.h>
4 #include <filems/facade/FMSWriteFacade.h>
5 #include <util/WriteYielder.h>
6 
7 #include <cstdlib>
8 #include <mutex>
9 
11 
12 using std::size_t;
13 
21 class PointcloudYielder : public WriteYielder<Measurement> {
22 protected:
23  // *** USING *** //
24  // *************** //
26 
27 public:
28  // *** CONSTRUCTION / DESTRUCTION *** //
29  // ************************************ //
37  size_t bufferSize=256
38  ) :
40  {}
41  virtual ~PointcloudYielder() = default;
42 
43 
44  // *** YIELD METHODS *** //
45  // *********************** //
52  void digest(vector<Measurement> &copy) override {
53  if(!copy.empty()) write.writeMeasurementsUnsafe(copy);
54  }
55 
56 };
Class representing a measurement.
Definition: Measurement.h:13
Yield a point cloud from measurements so it is written when buffer size has been reached or,...
Definition: PointcloudYielder.h:21
void digest(vector< Measurement > &copy) override
Write the temporal copy of the measurements through the write facade of the filems.
Definition: PointcloudYielder.h:52
PointcloudYielder(FMSWriteFacade &write, size_t bufferSize=256)
Default constructor for point cloud yielder.
Definition: PointcloudYielder.h:35
Abstract class representing a write yielder. It is, a yielder which can use the FMSWriteFacade to wri...
Definition: WriteYielder.h:17
FMSWriteFacade & write
The facade for writing operations.
Definition: WriteYielder.h:25
std::size_t bufferSize
The number of elements that can be buffered before forcing the yield operation.
Definition: Yielder.h:31
The facade for FMS writing.
Definition: FMSWriteFacade.h:29
void writeMeasurementsUnsafe(vector< Measurement > const &measurements) const
Write the vector of measurements without validations (it is faster than its non unsafe counterpart)
Definition: FMSWriteFacade.h:130