1 #ifndef MHO_BinaryFileStreamer_HH__
2 #define MHO_BinaryFileStreamer_HH__
33 class MHO_BinaryFileStreamer;
48 s.
GetStream().read(
reinterpret_cast< char*
>(&obj),
sizeof(XValueType));
53 const XValueType& obj)
56 s.
GetStream().write(
reinterpret_cast< const char*
>(&obj),
sizeof(XValueType));
116 s.
GetStream().read(
reinterpret_cast< char*
>(&size),
sizeof(uint64_t));
124 const std::string& obj)
126 uint64_t size = obj.size();
127 s.
GetStream().write(
reinterpret_cast< const char*
>(&size),
sizeof(uint64_t));
189 s.
GetStream().read(
reinterpret_cast< char*
>(&size),
sizeof(uint64_t));
190 s.
GetStream().read(
reinterpret_cast< char*
>(&encoding),
sizeof(uint64_t));
191 std::vector< std::uint8_t > data;
193 s.
GetStream().read(
reinterpret_cast< char*
>(&(data[0])), size);
198 obj = mho_json::from_cbor(data);
207 std::vector< std::uint8_t > data = mho_json::to_cbor(obj);
208 uint64_t size = data.size();
211 uint64_t encoding = 0;
212 s.
GetStream().write(
reinterpret_cast< const char*
>(&size),
sizeof(uint64_t));
213 s.
GetStream().write(
reinterpret_cast< const char*
>(&encoding),
sizeof(uint64_t));
214 s.
GetStream().write(
reinterpret_cast< const char*
>(&(data[0])), size);
272 template<
typename XValueType >
280 template<
typename XValueType,
typename... XValueTypeS >
287 unsigned long,
long long,
unsigned long long, float, double,
long double,
288 std::complex< float >, std::complex< double >, std::complex< long double >,
326 virtual void Close()
override;
Class MHO_BinaryFileStreamerMultiType declares a multi-type streamer with a variadic template paramet...
Definition: MHO_BinaryFileStreamer.hh:263
Class MHO_BinaryFileStreamerSingleType<mho_json> specialization for mho_json type (special,...
Definition: MHO_BinaryFileStreamer.hh:179
virtual void ResetByteCount()=0
Resets byte count to zero.
virtual MHO_BinaryFileStreamer & Self()=0
Returns a reference to the current instance of MHO_BinaryFileStreamer.
virtual uint64_t GetNBytesWritten() const =0
Getter for nbytes written.
virtual std::fstream & GetStream()=0
Getter for fstream object.
friend MHO_BinaryFileStreamer & operator<<(MHO_BinaryFileStreamerSingleType< mho_json > &s, const mho_json &obj)
Definition: MHO_BinaryFileStreamer.hh:204
virtual void AddBytesWritten(uint64_t)=0
Increments fNBytesWritten.
MHO_BinaryFileStreamerSingleType()
Definition: MHO_BinaryFileStreamer.hh:181
virtual ~MHO_BinaryFileStreamerSingleType()
Definition: MHO_BinaryFileStreamer.hh:182
friend MHO_BinaryFileStreamer & operator>>(MHO_BinaryFileStreamerSingleType< mho_json > &s, mho_json &obj)
Definition: MHO_BinaryFileStreamer.hh:185
Class MHO_BinaryFileStreamerSingleType<std::string> specialization for string type (special among the...
Definition: MHO_BinaryFileStreamer.hh:107
virtual void ResetByteCount()=0
Resets the byte count to zero.
virtual ~MHO_BinaryFileStreamerSingleType()
Definition: MHO_BinaryFileStreamer.hh:110
friend MHO_BinaryFileStreamer & operator>>(MHO_BinaryFileStreamerSingleType< std::string > &s, std::string &obj)
Definition: MHO_BinaryFileStreamer.hh:113
friend MHO_BinaryFileStreamer & operator<<(MHO_BinaryFileStreamerSingleType< std::string > &s, const std::string &obj)
Definition: MHO_BinaryFileStreamer.hh:123
virtual MHO_BinaryFileStreamer & Self()=0
Returns a reference to the current instance of MHO_BinaryFileStreamer.
virtual std::fstream & GetStream()=0
Getter for fstream object.
MHO_BinaryFileStreamerSingleType()
Definition: MHO_BinaryFileStreamer.hh:109
virtual uint64_t GetNBytesWritten() const =0
Getter for nbytes written.
virtual void AddBytesWritten(uint64_t)=0
Increments fNBytesWritten.
Class MHO_BinaryFileStreamerSingleType - template class for a single-type streamer,...
Definition: MHO_BinaryFileStreamer.hh:40
virtual void AddBytesWritten(uint64_t)=0
Increments the total bytes written by the provided value.
virtual std::fstream & GetStream()=0
Getter for stream (std::fstream) object.
MHO_BinaryFileStreamerSingleType()
Definition: MHO_BinaryFileStreamer.hh:42
friend MHO_BinaryFileStreamer & operator<<(MHO_BinaryFileStreamerSingleType< XValueType > &s, const XValueType &obj)
Definition: MHO_BinaryFileStreamer.hh:52
virtual void ResetByteCount()=0
Resets the byte count to zero.
virtual uint64_t GetNBytesWritten() const =0
Getter for nbytes written.
virtual ~MHO_BinaryFileStreamerSingleType()
Definition: MHO_BinaryFileStreamer.hh:43
friend MHO_BinaryFileStreamer & operator>>(MHO_BinaryFileStreamerSingleType< XValueType > &s, XValueType &obj)
Definition: MHO_BinaryFileStreamer.hh:45
virtual MHO_BinaryFileStreamer & Self()=0
Returns a reference to the current instance of MHO_BinaryFileStreamer.
Class MHO_BinaryFileStreamer declare the concrete class which does the work for file streams.
Definition: MHO_BinaryFileStreamer.hh:298
uint64_t fNBytesWritten
Definition: MHO_BinaryFileStreamer.hh:364
MHO_BinaryFileStreamer & Self() override
Returns a reference to the current instance of MHO_BinaryFileStreamer.
Definition: MHO_BinaryFileStreamer.hh:374
virtual void OpenToWrite() override
Opens a file for binary writing and sets appropriate state.
Definition: MHO_BinaryFileStreamer.cc:39
virtual ~MHO_BinaryFileStreamer()
Definition: MHO_BinaryFileStreamer.hh:302
virtual void OpenToAppend() override
Opens a binary file for appending and sets appropriate file state.
Definition: MHO_BinaryFileStreamer.cc:23
virtual const std::fstream & GetStream() const override
Getter for fstream object.
Definition: MHO_BinaryFileStreamer.hh:342
virtual void OpenToRead() override
Opens a file for binary reading and sets appropriate state.
Definition: MHO_BinaryFileStreamer.cc:7
virtual void AddBytesWritten(uint64_t b) override
Increments the total bytes written by the given amount.
Definition: MHO_BinaryFileStreamer.hh:356
MHO_BinaryFileStreamer()
Definition: MHO_BinaryFileStreamer.hh:300
virtual void ResetByteCount() override
Resets byte count to zero.
Definition: MHO_BinaryFileStreamer.hh:348
virtual uint64_t GetNBytesWritten() const override
Getter for N bytes written.
Definition: MHO_BinaryFileStreamer.hh:364
virtual std::fstream & GetStream() override
Getter for fstream object.
Definition: MHO_BinaryFileStreamer.hh:334
virtual void Close() override
Closes the open file if it exists and sets the file state to closed.
Definition: MHO_BinaryFileStreamer.cc:55
Class MHO_FileStreamer.
Definition: MHO_FileStreamer.hh:23
virtual std::fstream & GetStream()
Getter for stream.
Definition: MHO_FileStreamer.hh:169
Definition: MHO_ChannelLabeler.hh:17
MHO_BinaryFileStreamerMultiType< bool, char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, std::complex< float >, std::complex< double >, std::complex< long double >, std::string, mho_json > MHO_BinaryFileStreamerBasicTypes
Definition: MHO_BinaryFileStreamer.hh:290