62 lines
1.0 KiB
C++
62 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include "common.h"
|
|
|
|
#include <QObject>
|
|
#include <QByteArray>
|
|
|
|
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<ArcNode> {
|
|
using std::vector<ArcNode>::vector;
|
|
};
|
|
Q_DECLARE_METATYPE(ArcDir)
|
|
|
|
struct ArcFile : public QByteArray {
|
|
using QByteArray::QByteArray;
|
|
};
|
|
Q_DECLARE_METATYPE(ArcFile)
|
|
|
|
struct ArcNode : public std::variant<ArcDir, ArcFile> {
|
|
using super_type = std::variant<ArcDir, ArcFile>;
|
|
|
|
ArcNode() = default;
|
|
|
|
ArcNode(ArcDir &&t, std::string &&n, Arc::FileType ty = Arc::FileNormal);
|
|
ArcNode(ArcFile &&t, std::string &&n, Arc::FileType ty = Arc::FileNormal);
|
|
|
|
ArcNode(ArcNode const &) = default;
|
|
ArcNode(ArcNode &&) = default;
|
|
|
|
std::string name;
|
|
Arc::FileType type;
|
|
};
|
|
Q_DECLARE_METATYPE(ArcNode)
|
|
|
|
// EOF
|