Helios++
Helios software for LiDAR simulations
SimpleMultiVectorialSyncFileMeasurementWriter.h
1 #pragma once
2 
3 #include <filems/write/comps/SimpleMultiSyncFileWriter.h>
4 
5 #include <memory>
6 #include <vector>
7 #include <string>
8 
9 namespace helios { namespace filems{
10 
20  vector<Measurement> const &,
21  glm::dvec3 const &
22  >
23 {
24 protected:
25  // *** ATTRIBUTES *** //
26  // ******************** //
32  vector<DirectMeasurementWriteStrategy> dmws;
33 
34 public:
35  // *** CONSTRUCTION / DESTRUCTION *** //
36  // ************************************ //
43  vector<string> const &path,
44  std::ios_base::openmode om = std::ios_base::app
45  ) :
47  vector<Measurement> const &,
48  glm::dvec3 const &
49  >(path, om)
50  {
51  // Build measurement write strategies
53  // Build vectorial write strategies
54  // WARNING : It must be done after building the measurement write
55  // strategies to be wrapped by the vectorial strategy. If the vector
56  // of measurement strategies is modified, then the references in the
57  // vectorial strategy objects will be inconsistent
59  }
61 
62  // *** B U I L D *** //
63  // ********************* //
69  // Build measurement write strategies
70  size_t const nStreams = path.size();
71  for(size_t i = 0 ; i < nStreams ; ++i){
72  dmws.emplace_back(ofs[i]);
73  }
74  }
83  // Build vectorial write strategies
84  size_t const nStreams = path.size();
85  for(size_t i = 0 ; i < nStreams ; ++i){
86  writeStrategy.push_back(make_shared<VectorialWriteStrategy<
87  Measurement, glm::dvec3 const &
88  >>(dmws[i]));
89  }
90  }
91 
92  // *** W R I T E *** //
93  // ******************* //
98  vector<Measurement> const &measurements,
99  glm::dvec3 const &offset
100  ) override {return measurements[0].devIdx;}
101 };
102 
103 }}
Class representing a measurement.
Definition: Measurement.h:13
std::vector< std::string > path
Paths to the files to be written.
Definition: MultiSyncFileWriter.h:28
std::vector< std::shared_ptr< WriteStrategy< WriteArgs ... > > > writeStrategy
The write strategies specifying how to write data, one per file.
Definition: MultiSyncFileWriter.h:37
Abstract specialization of MultiSyncFileWriter to write output to many files. Each writing operation ...
Definition: SimpleMultiSyncFileWriter.h:15
std::vector< std::ofstream > ofs
Output file streams to be used by the simple multi synchronous file writer.
Definition: SimpleMultiSyncFileWriter.h:23
Concrete class specializing a SimpleMultiSyncFileWriter to write vectors of measurements directly to ...
Definition: SimpleMultiVectorialSyncFileMeasurementWriter.h:23
vector< DirectMeasurementWriteStrategy > dmws
The measurement write strategies that are wrapped by the main write strategies in a vectorial fashion...
Definition: SimpleMultiVectorialSyncFileMeasurementWriter.h:32
size_t indexFromWriteArgs(vector< Measurement > const &measurements, glm::dvec3 const &offset) override
Definition: SimpleMultiVectorialSyncFileMeasurementWriter.h:97
SimpleMultiVectorialSyncFileMeasurementWriter(vector< string > const &path, std::ios_base::openmode om=std::ios_base::app)
Simple synchronous file measurement vector multi-writer constructor.
Definition: SimpleMultiVectorialSyncFileMeasurementWriter.h:42
void buildMeasurementWriteStrategies()
Build the measurement write strategies for the simple multi vectorial synchronous file measurement wr...
Definition: SimpleMultiVectorialSyncFileMeasurementWriter.h:68
void buildVectorialWriteStrategies()
Build the vectorial write strategies for the simple multi vectorial synchronous file measurement writ...
Definition: SimpleMultiVectorialSyncFileMeasurementWriter.h:82
Concrete class specializing WriteStrategy to make any other write strategy operate over a vector.
Definition: VectorialWriteStrategy.h:23