#ifndef INFO_DIR_FILE_H #define INFO_DIR_FILE_H #include #include #include #include #include enum FileType : uint32_t { None = 0, File, Dir, Link, Other }; struct DirFileInfo { QString name; quint64 size{}; FileType type = None; QString fullPath; quint16 permission{}; quint64 lastModified{}; void serialize(QDataStream& data) const { uint32_t t = static_cast(type); data << name << size << t << fullPath << permission << lastModified; } void deserialize(QDataStream& data) { uint32_t t = 0; data >> name >> size >> t >> fullPath >> permission >> lastModified; type = static_cast(t); } }; QDataStream& operator<<(QDataStream& data, const DirFileInfo& info); QDataStream& operator>>(QDataStream& data, DirFileInfo& info); struct DirFileInfoVec { QVector vec; QString root; void serialize(QDataStream& data) const { uint32_t size = static_cast(vec.size()); data << size; for (const auto& info : vec) { data << info; } data << root; } void deserialize(QDataStream& data) { uint32_t size = 0; data >> size; vec.resize(size); for (quint32 i = 0; i < size; ++i) { data >> vec[i]; } data >> root; } }; #endif // INFO_DIR_FILE_H