Helios++
Helios software for LiDAR simulations
VectorialFullWaveformWriter.h
1 #pragma once
2 
3 #include <util/HeliosException.h>
4 #include <filems/write/core/BaseFullWaveformWriter.h>
5 #include <filems/write/comps/SimpleVectorialSyncFileFullWaveformWriter.h>
6 #include <filems/write/comps/ZipVectorialSyncFileFullWaveformWriter.h>
7 #include <scanner/detector/FullWaveform.h>
8 
9 #include <string>
10 #include <memory>
11 
12 namespace helios { namespace filems{
13 
14 using std::string;
15 using std::shared_ptr;
16 using std::vector;
17 
24  public BaseFullWaveformWriter<vector<FullWaveform> const &>
25 {
26 protected:
27  // *** USING *** //
28  // *************** //
30 
31 public:
32  // *** CONSTRUCTION / DESTRUCTION *** //
33  // ************************************ //
38  BaseFullWaveformWriter<vector<FullWaveform> const &>()
39  {}
40  virtual ~VectorialFullWaveformWriter() = default;
41 
42  // *** M E T H O D S *** //
43  // ************************* //
48  void writeFullWaveforms(vector<FullWaveform> const &fullWaveforms);
55  vector<FullWaveform> const &fullWaveforms
56  ) const {sfw->write(fullWaveforms);}
61  shared_ptr<SyncFileWriter<std::vector<FullWaveform> const &>> makeWriter(
62  string const &path
63  ) const override {
64  if(isZipOutput()){
65  return make_shared<ZipVectorialSyncFileFullWaveformWriter>(
66  path
67  );
68  }
69  else return make_shared<SimpleVectorialSyncFileFullWaveformWriter>(
70  path
71  );
72  }
73 };
74 
75  }}
Class representing a full waveform.
Definition: FullWaveform.h:12
Definition: BaseFullWaveformWriter.h:17
unordered_map< string, shared_ptr< SyncFileWriter< WriteArgs ... > > > writers
Map of writers. This map allows to reuse writers for legs grouped in the same strip.
Definition: BaseFullWaveformWriter.h:35
bool isZipOutput() const
Get the zip output flag.
Definition: HeliosWriter.h:120
shared_ptr< SyncFileWriter< WriteArgs ... > > sfw
Synchronous file writer.
Definition: HeliosWriter.h:33
Common implementation for any vectorial full waveform writer.
Definition: VectorialFullWaveformWriter.h:25
void writeFullWaveformsUnsafe(vector< FullWaveform > const &fullWaveforms) const
Like filems::VectorialFullWaveformWriter::writeFullWaveforms but faster because there is no validatio...
Definition: VectorialFullWaveformWriter.h:54
void writeFullWaveforms(vector< FullWaveform > const &fullWaveforms)
Writer a vector of full waveforms.
VectorialFullWaveformWriter()
Default constructor for vectorial full waveform writer.
Definition: VectorialFullWaveformWriter.h:37
shared_ptr< SyncFileWriter< std::vector< FullWaveform > const & > > makeWriter(string const &path) const override
Make a vectorial full waveform SyncFileWriter.
Definition: VectorialFullWaveformWriter.h:61