Helios++
Helios software for LiDAR simulations
ZipSyncFileWriter.h
1 #pragma once
2 
3 #include <SimpleSyncFileWriter.h>
4 #include <boost/iostreams/filtering_stream.hpp>
5 #include <boost/iostreams/filter/zlib.hpp>
6 #include <boost/archive/binary_oarchive.hpp>
7 
14 protected:
15  // *** ATTRIBUTES *** //
16  // ******************** //
20  boost::iostreams::filtering_ostream compressedOut;
24  boost::iostreams::zlib_params zp;
28  std::unique_ptr<boost::archive::binary_oarchive> oa;
29 
30 public:
31  // *** CONSTRUCTION / DESTRUCTION *** //
32  // ************************************ //
40  const std::string &path,
41  int compressionMode = boost::iostreams::zlib::best_compression
42  ) :
43  SimpleSyncFileWriter(path, std::ios_base::out | std::ios_base::binary)
44  {
45  zp = boost::iostreams::zlib_params(compressionMode);
46  compressedOut.push(boost::iostreams::zlib_compressor(zp));
47  compressedOut.push(ofs);
48  oa = std::unique_ptr<boost::archive::binary_oarchive>(
49  new boost::archive::binary_oarchive(compressedOut)
50  );
51  }
52 
53  // *** W R I T E *** //
54  // ******************* //
59  void _write(Measurement const &m, glm::dvec3 const & shift) override{
60  (*oa) << measurementToString(m, shift);
61  }
62 
70  void _write(
71  std::vector<double> const &fullwave,
72  int fullwaveIndex,
73  double minTime,
74  double maxTime,
75  glm::dvec3 const & beamOrigin,
76  glm::dvec3 const & beamDir,
77  long gpsTime
78  ) override {
79  (*oa) << fullwaveToString(
80  fullwave,
81  fullwaveIndex,
82  minTime,
83  maxTime,
84  beamOrigin,
85  beamDir,
86  gpsTime
87  );
88  }
89 
98  void _write(const Trajectory &t) override {
99  (*oa) << trajectoryToString(t);
100  }
101 };
ZipSyncFileWriter implementation fro zipped text output format.
Definition: ZipSyncFileWriter.h:13
void _write(Measurement const &m, glm::dvec3 const &shift) override
Write measurement to compressed file.
Definition: ZipSyncFileWriter.h:59
Class representing a concrete trajectory definition.
Definition: Trajectory.h:8
Class representing a measurement.
Definition: Measurement.h:12
SyncFileWriter implementation for simple text format.
Definition: SimpleSyncFileWriter.h:12
boost::iostreams::zlib_params zp
ZLib compression parameters.
Definition: ZipSyncFileWriter.h:24
std::string path
Path to file to be written.
Definition: SyncFileWriter.h:19
std::unique_ptr< boost::archive::binary_oarchive > oa
Binary output archive.
Definition: ZipSyncFileWriter.h:28
void _write(std::vector< double > const &fullwave, int fullwaveIndex, double minTime, double maxTime, glm::dvec3 const &beamOrigin, glm::dvec3 const &beamDir, long gpsTime) override
Write fullwave to compressed file.
Definition: ZipSyncFileWriter.h:70
void _write(const Trajectory &t) override
Write trajectory to compressed file.
Definition: ZipSyncFileWriter.h:98
std::ofstream ofs
Output file stream to be used by the simple synchronous file writer.
Definition: SimpleSyncFileWriter.h:20
ZipSyncFileWriter(const std::string &path, int compressionMode=boost::iostreams::zlib::best_compression)
Build a ZipSyncFileWriter.
Definition: ZipSyncFileWriter.h:39
virtual std::string fullwaveToString(std::vector< double > const &fullwave, int fullwaveIndex, double minTime, double maxTime, glm::dvec3 const &beamOrigin, glm::dvec3 const &beamDir, long gpsTime)
Build a string from fullwave data.
Definition: SimpleSyncFileWriter.h:147
virtual std::string trajectoryToString(Trajectory const &t)
Build a string from trajectory data.
Definition: SimpleSyncFileWriter.h:130
boost::iostreams::filtering_ostream compressedOut
Compressed output stream.
Definition: ZipSyncFileWriter.h:20
virtual std::string measurementToString(Measurement const &m, glm::dvec3 const &shift)
Build a string from measurement data.
Definition: SimpleSyncFileWriter.h:104