/* * Copyright (C) 2024-2025 QuasarApp. * Distributed under the lgplv3 software license, see the accompanying * Everyone is permitted to copy and distribute verbatim copies * of this license document, but changing it is not allowed. */ #ifndef STREAMMULTIVERSION_H #define STREAMMULTIVERSION_H #include "streambase.h" namespace QH { /** * @brief The StreamMultiversion class this parser works with simple multiversion packages. * * This class used to save and read version of the object in file. * * @see StreamBase * * @code{cpp} * class myClass: public StreamMultiversion { * protected: * QDataStream &fromStream(QDataStream &stream) override { * char version = readVersion(); * return stream; * } * * QDataStream &toStream(QDataStream &stream) const override { * saveVersion(1, stream); * return stream; * } * * } * */ class HEARTSHARED_EXPORT StreamMultiversion: public StreamBase { public: StreamMultiversion(); ~StreamMultiversion(); // StreamBase interface /** * @brief saveVersion save version of the object to the stream. * @param version - version of the object. * @param stream - stream to save. * * This method used to save version of the object in file. * @see toStream */ void saveVersion(char version, QDataStream &stream) const; /** * @brief readVersion read version of the object from the stream. * @param stream - stream to read. * @return version of the object. * @see fromStream */ char readVersion(QDataStream &stream); }; } #endif // STREAMMULTIVERSION_H