#include "AbstractTag.h" #include "TagEnd.h" #include "TagByte.h" #include AbstractTag::AbstractTag(const quint8 id) : m_id(id) {} const quint8 AbstractTag::id() const { return m_id; } AbstractTag *AbstractTag::fromData(QDataStream &data, bool *ok) { quint8 id; data >> id; AbstractTag *tag = nullptr; switch (id) { case TagEnd::ID: tag = new TagEnd(); case TagByte::ID: tag = new TagByte(); } if (tag == nullptr) { return nullptr; } *ok = tag->readFromData(data); return tag; } QByteArray AbstractTag::toData(bool *ok) { QByteArray data; QDataStream stream(data); stream << id(); *ok = writeToData(stream); return data; }