#pragma once #include "common.h" #include #include namespace Arc { Q_NAMESPACE enum Column { ColumnSize, ColumnName, ColumnMax, }; Q_ENUM_NS(Column) enum FileType { FileNormal, FileLabel, FilePalette = 64, FileTexture, FilePicture, FileSound, FileMipTexture, }; Q_ENUM_NS(FileType) Arc::FileType getFileType(int n); } struct ArcNode; struct ArcDir : public std::vector { using std::vector::vector; ArcDir::iterator findNode(std::string const &name); }; Q_DECLARE_METATYPE(ArcDir) struct ArcFile : public QByteArray { using QByteArray::QByteArray; }; Q_DECLARE_METATYPE(ArcFile) struct ArcNode : public std::variant { using super_type = std::variant; ArcNode() = default; ArcNode(ArcDir &&f, std::string &&n, Arc::FileType t = Arc::FileNormal); ArcNode(ArcFile &&f, std::string &&n, Arc::FileType t = Arc::FileNormal); ArcNode(ArcNode const &) = default; ArcNode(ArcNode &&) = default; std::string name; Arc::FileType type; }; Q_DECLARE_METATYPE(ArcNode) // EOF