19#include <qstringlist.h>
23typedef struct ZSTD_CCtx_s ZSTD_CCtx;
41 bool output(QIODevice &outDevice, QIODevice &tempDevice, QIODevice &errorDevice);
43 bool readFiles(
bool listMode, QIODevice &errorDevice);
55 typedef QHash<QString, QString> ResourceDataFileMap;
59 bool verbose()
const {
return m_verbose; }
62 QString
initName()
const {
return m_initName; }
97 bool noZstd()
const {
return m_noZstd; }
102 const QString TAG_RCC;
103 const QString TAG_RESOURCE;
104 const QString TAG_FILE;
105 const QString ATTRIBUTE_LANG;
106 const QString ATTRIBUTE_PREFIX;
107 const QString ATTRIBUTE_ALIAS;
108 const QString ATTRIBUTE_EMPTY;
109 const QString ATTRIBUTE_THRESHOLD;
110 const QString ATTRIBUTE_COMPRESS;
111 const QString ATTRIBUTE_COMPRESSALGO;
115 bool addFile(
const QString &alias,
RCCFileInfo file);
116 bool interpretResourceFile(QIODevice *inputDevice,
const QString &file,
117 QString currentPath = QString(),
bool listMode =
false);
119 bool writeDataBlobs();
120 bool writeDataNames();
121 bool writeDataStructure();
122 bool writeInitializer();
123 void writeMangleNamespaceFunction(
const QByteArray &name);
124 void writeAddNamespaceFunction(
const QByteArray &name);
125 void writeDecimal(
int value);
126 void writeHex(quint8 number);
127 void write2HexDigits(quint8 number);
128 void writeNumber2(quint16 number);
129 void writeNumber4(quint32 number);
130 void writeNumber8(quint64 number);
131 void writeChar(
char c) { m_out.append(c); }
132 void writeByteArray(
const QByteArray &);
133 void write(
const char *,
int len);
134 void writeString(
const char *s) { write(s,
static_cast<
int>(strlen(s))); }
140 const Strings m_strings;
142 QStringList m_fileNames;
143 QString m_resourceRoot;
145 QString m_outputName;
150 int m_compressThreshold;
154 quint32 m_overallFlags;
156 QStringList m_failedResources;
157 QIODevice *m_errorDevice;
158 QIODevice *m_outDevice;
160 quint8 m_formatVersion;
RCCFileInfo(const QString &name, const QFileInfo &fileInfo, QLocale::Language language, QLocale::Territory territory, uint flags, RCCResourceLibrary::CompressionAlgorithm compressAlgo, int compressLevel, int compressThreshold, bool noZstd, bool isEmpty)
RCCFileInfo & operator=(RCCFileInfo &&other)=delete
RCCFileInfo & operator=(const RCCFileInfo &)=delete
RCCResourceLibrary::CompressionAlgorithm m_compressAlgo
qint64 writeDataName(RCCResourceLibrary &, qint64 offset)
RCCFileInfo(RCCFileInfo &&)=default
QLocale::Language m_language
qint64 writeDataBlob(RCCResourceLibrary &lib, qint64 offset, QString *errorMessage)
QString resourceName() const
void writeDataInfo(RCCResourceLibrary &lib)
RCCFileInfo(const RCCFileInfo &)=delete
QLocale::Territory m_territory
QMultiHash< QString, RCCFileInfo * > m_children
RCCResourceLibrary(quint8 formatVersion)
ResourceDataFileMap resourceDataFileMap() const
bool readFiles(bool listMode, QIODevice &errorDevice)
QStringList failedResources() const
QStringList dataFiles() const
int formatVersion() const
QStringList inputFiles() const
void setResourceRoot(const QString &root)
static int parseCompressionLevel(CompressionAlgorithm algo, const QString &level, QString *errorMsg)
bool useNameSpace() const
int compressLevel() const
bool output(QIODevice &outDevice, QIODevice &tempDevice, QIODevice &errorDevice)
void setInitName(const QString &name)
void setCompressionAlgorithm(CompressionAlgorithm algo)
int compressThreshold() const
void setCompressThreshold(int t)
CompressionAlgorithm compressionAlgorithm() const
void setCompressLevel(int c)
QString resourceRoot() const
void setOutputName(const QString &name)
QString outputName() const
void setUseNameSpace(bool v)
void setInputFiles(const QStringList &files)
static CompressionAlgorithm parseCompressionAlgorithm(QStringView algo, QString *errorMsg)
#define qPrintable(string)
result_type operator()(const RCCFileInfo *left, const RCCFileInfo *right) const