12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /*
- * NICE-Core - efficient algebra and computer vision methods
- * - libfbasics - library of some basic tools
- * See file License for license information.
- */
- /*****************************************************************************/
- #ifndef _BINSTREAMABLE_FBASICS_H
- #define _BINSTREAMABLE_FBASICS_H
- #include <iostream>
- #include <core/basics/binstream.h>
- namespace NICE {
- /**
- * Abstract base class for binarily streamable classes.
- */
- class BinStreamable {
- public:
- /**
- * Format (compression method)
- */
- enum Format {
- /**
- * Save in binary format which is compressed with gzip
- * (only supported if compiled with zlib, use \#ifdef NICE_USELIB_ZLIB)
- */
- BIN_GZ=3,
- /**
- * Save in binary format (uncompressed)
- */
- BIN=4
- };
- virtual ~BinStreamable(){}
- /**
- * Read class attributes from ibinstream
- * \param stream ibinstream to read elements from
- */
- virtual void read(ibinstream& stream) = 0;
- /**
- * Write class attributes to obinstream.
- * \param stream obinstream to write elements to
- */
- virtual void write(obinstream& stream) const = 0;
- /**
- * Read class attributes from ibinstream
- * \param stream ibinstream to read elements from
- */
- inline void readBin(ibinstream& stream) {
- read(stream);
- }
- /**
- * Write class attributes to obinstream.
- * \param stream obinstream to write elements to
- */
- inline void writeBin(obinstream& stream) const {
- write(stream);
- }
- /** Read class attributes from a file.
- * \param filename Name of the file
- * \param compression file format \see SaveMethod
- */
- virtual void readFromBinFile(const char *filename,
- Format compression=BIN);
- /**
- * Write class attributes to a file.
- * \param filename Name of the file
- * \param compression file format \see SaveMethod
- */
- virtual void writeToBinFile(const char *filename,
- Format compression=BIN) const;
- };
- inline obinstream& operator<<(obinstream &strm, const BinStreamable &ex) {
- ex.writeBin(strm);
- return strm;
- }
- inline ibinstream& operator>>(ibinstream &strm, BinStreamable &ex) {
- ex.readBin(strm);
- return strm;
- }
- }; // namespace NICE
- #endif /* _BINSTREAMABLE_FBASICS_H */
|