38void RCCResourceLibrary::write(
const char *
str,
int len)
47 if (m_format ==
Pass2) {
83 int compressThreshold,
bool noZstd,
bool isEmpty);
120 int compressThreshold,
bool noZstd,
bool isEmpty)
123 m_territory(territory),
125 m_fileInfo(fileInfo),
126 m_compressAlgo(compressAlgo),
127 m_compressLevel(compressLevel),
128 m_compressThreshold(compressThreshold),
143 resource = resource.
prepend(
p->m_name + u
'/');
156 lib.writeString(
" // ");
158 lib.writeString(
" [");
160 lib.writeString(
"::");
162 lib.writeString(
"[\n ");
164 lib.writeString(
" // ");
166 lib.writeString(
"\n ");
200 lib.writeString(
"\\\n");
208 lastmod = sourceDate;
210 if (sourceDate2 != 0)
211 lastmod = sourceDate2;
212 lib.writeNumber8(lastmod);
216 lib.writeString(
"\\\n");
245 if (
data.size() != 0) {
252 if (lib.m_zstdCCtx ==
nullptr)
253 lib.m_zstdCCtx = ZSTD_createCCtx();
258 if (compressLevel < 0)
263 size_t n = ZSTD_compressCCtx(lib.m_zstdCCtx,
dst,
size,
270 n = ZSTD_compressCCtx(lib.m_zstdCCtx,
dst,
size,
274 if (ZSTD_isError(
n)) {
294#ifndef QT_NO_COMPRESS
323 lib.writeString(
" // ");
325 lib.writeString(
"\n ");
330 lib.writeNumber4(
data.size());
332 lib.writeString(
"\n ");
334 lib.writeString(
"\\\n");
338 const char *
p =
data.constData();
339 if (
text || python) {
340 for (
int i =
data.size(),
j = 0; --
i >= 0; --
j) {
344 lib.writeString(
"\n ");
346 lib.writeString(
"\\\n");
350 }
else if (
binary || pass2) {
351 lib.writeByteArray(
data);
357 lib.writeString(
"\n ");
359 lib.writeString(
"\\\n");
375 lib.writeString(
" // ");
377 lib.writeString(
"\n ");
383 lib.writeString(
"\n ");
385 lib.writeString(
"\\\n");
391 lib.writeString(
"\n ");
393 lib.writeString(
"\\\n");
399 lib.writeNumber2(unicode[
i].unicode());
400 if ((
text || pass1) &&
i % 16 == 0)
401 lib.writeString(
"\n ");
402 else if (python &&
i % 16 == 0)
403 lib.writeString(
"\\\n");
409 lib.writeString(
"\n ");
411 lib.writeString(
"\\\n");
423RCCResourceLibrary::Strings::Strings() :
425 TAG_RESOURCE(
"qresource"_L1),
427 ATTRIBUTE_LANG(
"lang"_L1),
428 ATTRIBUTE_PREFIX(
"prefix"_L1),
429 ATTRIBUTE_ALIAS(
"alias"_L1),
430 ATTRIBUTE_EMPTY(
"empty"_L1),
431 ATTRIBUTE_THRESHOLD(
"threshold"_L1),
432 ATTRIBUTE_COMPRESS(
"compress"_L1),
437RCCResourceLibrary::RCCResourceLibrary(
quint8 formatVersion)
451 m_formatVersion(formatVersion),
454 m_out.
reserve(30 * 1000 * 1000);
456 m_zstdCCtx =
nullptr;
464 ZSTD_freeCCtx(m_zstdCCtx);
486bool RCCResourceLibrary::interpretResourceFile(
QIODevice *inputDevice,
490 const QChar slash = u
'/';
492 currentPath += slash;
494 QXmlStreamReader
reader(inputDevice);
502 auto compressAlgo = m_compressionAlgo;
507 QXmlStreamReader::TokenType
t =
reader.readNext();
509 case QXmlStreamReader::StartElement:
510 if (
reader.name() == m_strings.TAG_RCC) {
512 reader.raiseError(
"expected <RCC> tag"_L1);
515 }
else if (
reader.name() == m_strings.TAG_RESOURCE) {
517 reader.raiseError(
"unexpected <RESOURCE> tag"_L1);
525 if (attributes.
hasAttribute(m_strings.ATTRIBUTE_LANG)) {
538 if (attributes.
hasAttribute(m_strings.ATTRIBUTE_PREFIX))
539 prefix = attributes.
value(m_strings.ATTRIBUTE_PREFIX).
toString();
545 }
else if (
reader.name() == m_strings.TAG_FILE) {
547 reader.raiseError(
"unexpected <FILE> tag"_L1);
554 alias = attributes.
value(m_strings.ATTRIBUTE_ALIAS).
toString();
556 compressAlgo = m_compressionAlgo;
566 if (attributes.
hasAttribute(m_strings.ATTRIBUTE_COMPRESSALGO))
574 if (m_compressLevel == -2)
577 if (attributes.
hasAttribute(m_strings.ATTRIBUTE_THRESHOLD))
581 reader.raiseError(errorString);
584 reader.raiseError(
"unexpected tag: %1"_L1.arg(
reader.name().toString()));
588 case QXmlStreamReader::EndElement:
589 if (
reader.name() == m_strings.TAG_RCC) {
593 reader.raiseError(
"unexpected closing tag"_L1);
594 }
else if (
reader.name() == m_strings.TAG_RESOURCE) {
598 reader.raiseError(
"unexpected closing tag"_L1);
599 }
else if (
reader.name() == m_strings.TAG_FILE) {
603 reader.raiseError(
"unexpected closing tag"_L1);
607 case QXmlStreamReader::Characters:
608 if (
reader.isWhitespace())
611 reader.raiseError(
"unexpected text"_L1);
629 absFileName.
prepend(currentPath);
633 if (!alias.endsWith(slash))
638 while (
it.hasNext()) {
640 if (
it.fileName() ==
"."_L1 ||
it.fileName() ==
".."_L1)
642 filePaths.append(
it.filePath());
646 std::sort(filePaths.begin(), filePaths.end());
648 for (
const QString &filePath : filePaths) {
651 addFile(alias +
child.fileName(),
658 m_failedResources.push_back(
child.fileName());
660 }
else if (listMode ||
file.isFile()) {
674 m_failedResources.push_back(absFileName);
676 m_failedResources.push_back(absFileName);
682 m_failedResources.push_back(absFileName);
697 int errorLine =
reader.lineNumber();
698 int errorColumn =
reader.columnNumber();
705 if (m_root ==
nullptr) {
708 if (!listMode && m_format ==
Binary) {
721 if (
file.m_fileInfo.
size() > 0xffffffff) {
733 for (
int i = 1;
i < nodes.size()-1; ++
i) {
737 if (!
parent->m_children.contains(node)) {
742 parent->m_children.insert(node,
s);
749 const QString filename = nodes.at(nodes.size()-1);
752 auto cbegin =
parent->m_children.constFind(filename);
755 if (
it.key() == filename &&
it.value()->m_language ==
s->m_language &&
756 it.value()->m_territory ==
s->m_territory) {
758 qWarning(
"%s: Warning: potential duplicate alias detected: '%s'",
764 parent->m_children.insert(filename,
s);
768void RCCResourceLibrary::reset()
774 m_errorDevice =
nullptr;
775 m_failedResources.clear();
782 m_errorDevice = &errorDevice;
786 .
arg(m_fileNames.size()).
arg(
static_cast<int>(listMode));
789 for (
int i = 0;
i < m_fileNames.size(); ++
i) {
793 if (fname ==
"-"_L1) {
794 fname =
"(stdin)"_L1;
814 if (!interpretResourceFile(&fileIn, fname, pwd, listMode))
830 for (
auto it =
file->m_children.begin();
831 it !=
file->m_children.end(); ++
it) {
836 ret.append(
child->m_fileInfo.filePath());
845 const QChar slash = u
'/';
853 m.insert(childName,
child->m_fileInfo.filePath());
868 if (
value ==
"best"_L1)
870 if (
value ==
"zlib"_L1) {
872 *errorMsg =
"zlib support not compiled in"_L1;
876 }
else if (
value ==
"zstd"_L1) {
880 *errorMsg =
"Zstandard support not compiled in"_L1;
882 }
else if (
value !=
"none"_L1) {
899 if (
c >= 1 &&
c <= 9)
904 if (
c >= 0 &&
c <= ZSTD_maxCLevel())
917 m_errorDevice = &errorDevice;
919 if (m_format ==
Pass2) {
920 const char pattern[] = {
'Q',
'R',
'C',
'_',
'D',
'A',
'T',
'A' };
921 bool foundSignature =
false;
925 for (
int i = 0;
i < 8; ) {
929 m_errorDevice->
write(
"No data signature found\n");
934 for (
int k = 0; k <
i; ++k)
946 m_outDevice = &outDevice;
952 foundSignature =
true;
958 m_errorDevice->
write(
"Outputting code\n");
959 if (!writeHeader()) {
960 m_errorDevice->
write(
"Could not write header\n");
964 if (!writeDataBlobs()) {
965 m_errorDevice->
write(
"Could not write data blobs.\n");
968 if (!writeDataNames()) {
969 m_errorDevice->
write(
"Could not write file names\n");
972 if (!writeDataStructure()) {
973 m_errorDevice->
write(
"Could not write data tree\n");
977 if (!writeInitializer()) {
978 m_errorDevice->
write(
"Could not write footer\n");
985void RCCResourceLibrary::writeDecimal(
int value)
988 char buf[std::numeric_limits<int>::digits10 + 2];
995inline void RCCResourceLibrary::write2HexDigits(
quint8 number)
1001void RCCResourceLibrary::writeHex(
quint8 tmp)
1005 if (tmp >= 32 && tmp < 127 && tmp !=
'"' && tmp !=
'\\') {
1006 writeChar(
char(tmp));
1010 write2HexDigits(tmp);
1019 write2HexDigits(tmp);
1088bool RCCResourceLibrary::writeHeader()
1093 writeString(
"/****************************************************************************\n");
1094 writeString(
"** Resource object code\n");
1095 writeString(
"**\n");
1096 writeString(
"** Created by: The Resource Compiler for Qt version ");
1097 writeByteArray(QT_VERSION_STR);
1098 writeString(
"\n**\n");
1099 writeString(
"** WARNING! All changes made in this file will be lost!\n");
1100 writeString(
"*****************************************************************************/\n\n");
1103 writeString(
"# Resource object code (Python 3)\n");
1104 writeString(
"# Created by: object code\n");
1105 writeString(
"# Created by: The Resource Compiler for Qt version ");
1106 writeByteArray(QT_VERSION_STR);
1108 writeString(
"# WARNING! All changes made in this file will be lost!\n\n");
1109 writeString(
"from PySide");
1111 writeString(
" import QtCore\n\n");
1114 writeString(
"qres");
1119 if (m_formatVersion >= 3)
1120 writeNumber4(m_overallFlags);
1128bool RCCResourceLibrary::writeDataBlobs()
1133 writeString(
"static const unsigned char qt_resource_data[] = {\n");
1136 writeString(
"qt_resource_data = b\"\\\n");
1139 m_dataOffset = m_out.
size();
1154 for (
auto it =
file->m_children.cbegin();
it !=
file->m_children.cend(); ++
it) {
1169 writeString(
"\n};\n\n");
1172 writeString(
"\"\n\n");
1177 writeString(
"\nstatic const unsigned char qt_resource_data[");
1179 writeString(
"] = { 'Q', 'R', 'C', '_', 'D', 'A', 'T', 'A' };\n\n");
1187bool RCCResourceLibrary::writeDataNames()
1192 writeString(
"static const unsigned char qt_resource_name[] = {\n");
1195 writeString(
"qt_resource_name = b\"\\\n");
1198 m_namesOffset = m_out.
size();
1214 for (
auto it =
file->m_children.cbegin();
it !=
file->m_children.cend(); ++
it) {
1229 writeString(
"\n};\n\n");
1232 writeString(
"\"\n\n");
1249bool RCCResourceLibrary::writeDataStructure()
1254 writeString(
"static const unsigned char qt_resource_struct[] = {\n");
1257 writeString(
"qt_resource_struct = b\"\\\n");
1260 m_treeOffset = m_out.
size();
1283 for (
int i = 0;
i < m_children.
size(); ++
i) {
1302 for (
int i = 0;
i < m_children.
size(); ++
i) {
1304 child->writeDataInfo(*
this);
1312 writeString(
"\n};\n\n");
1315 writeString(
"\"\n\n");
1324void RCCResourceLibrary::writeMangleNamespaceFunction(
const QByteArray &
name)
1326 if (m_useNameSpace) {
1327 writeString(
"QT_RCC_MANGLE_NAMESPACE(");
1328 writeByteArray(
name);
1331 writeByteArray(
name);
1335void RCCResourceLibrary::writeAddNamespaceFunction(
const QByteArray &
name)
1337 if (m_useNameSpace) {
1338 writeString(
"QT_RCC_PREPEND_NAMESPACE(");
1339 writeByteArray(
name);
1342 writeByteArray(
name);
1346bool RCCResourceLibrary::writeInitializer()
1350 QString initNameStr = m_initName;
1355 return (
ch >=
'0' &&
ch <=
'9') ||
1356 (
ch >=
'A' &&
ch <=
'Z') ||
1357 (
ch >=
'a' &&
ch <=
'z') ||
1360 for (
QChar &
c : initNameStr) {
1368 if (m_useNameSpace) {
1369 writeString(
"#ifdef QT_NAMESPACE\n"
1370 "# define QT_RCC_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name\n"
1371 "# define QT_RCC_MANGLE_NAMESPACE0(x) x\n"
1372 "# define QT_RCC_MANGLE_NAMESPACE1(a, b) a##_##b\n"
1373 "# define QT_RCC_MANGLE_NAMESPACE2(a, b) QT_RCC_MANGLE_NAMESPACE1(a,b)\n"
1374 "# define QT_RCC_MANGLE_NAMESPACE(name) QT_RCC_MANGLE_NAMESPACE2( \\\n"
1375 " QT_RCC_MANGLE_NAMESPACE0(name), QT_RCC_MANGLE_NAMESPACE0(QT_NAMESPACE))\n"
1377 "# define QT_RCC_PREPEND_NAMESPACE(name) name\n"
1378 "# define QT_RCC_MANGLE_NAMESPACE(name) name\n"
1381 writeString(
"#ifdef QT_NAMESPACE\n"
1382 "namespace QT_NAMESPACE {\n"
1387 writeString(
"bool qRegisterResourceData"
1388 "(int, const unsigned char *, "
1389 "const unsigned char *, const unsigned char *);\n");
1390 writeString(
"bool qUnregisterResourceData"
1391 "(int, const unsigned char *, "
1392 "const unsigned char *, const unsigned char *);\n\n");
1396 writeString(
"#if defined(__ELF__) || defined(__APPLE__)\n");
1398 writeString(
"static inline unsigned char qResourceFeatureZlib()\n"
1400 " extern const unsigned char qt_resourceFeatureZlib;\n"
1401 " return qt_resourceFeatureZlib;\n"
1405 writeString(
"static inline unsigned char qResourceFeatureZstd()\n"
1407 " extern const unsigned char qt_resourceFeatureZstd;\n"
1408 " return qt_resourceFeatureZstd;\n"
1411 writeString(
"#else\n");
1413 writeString(
"unsigned char qResourceFeatureZlib();\n");
1415 writeString(
"unsigned char qResourceFeatureZstd();\n");
1416 writeString(
"#endif\n\n");
1421 writeString(
"#ifdef QT_NAMESPACE\n}\n#endif\n\n");
1427 writeString(
"int ");
1429 writeString(
"();\n");
1431 writeString(
"int ");
1433 writeString(
"()\n{\n");
1436 writeString(
" int version = ");
1437 writeDecimal(m_formatVersion);
1438 writeString(
";\n ");
1439 writeAddNamespaceFunction(
"qRegisterResourceData");
1440 writeString(
"\n (version, qt_resource_struct, "
1441 "qt_resource_name, qt_resource_data);\n");
1443 writeString(
" return 1;\n");
1444 writeString(
"}\n\n");
1447 QByteArray cleanResources =
"qCleanupResources";
1451 writeString(
"int ");
1452 writeMangleNamespaceFunction(cleanResources);
1453 writeString(
"();\n");
1455 writeString(
"int ");
1456 writeMangleNamespaceFunction(cleanResources);
1457 writeString(
"()\n{\n");
1459 writeString(
" int version = ");
1460 writeDecimal(m_formatVersion);
1461 writeString(
";\n ");
1465 writeString(
"version += ");
1466 writeAddNamespaceFunction(
"qResourceFeatureZlib()");
1467 writeString(
";\n ");
1470 writeString(
"version += ");
1471 writeAddNamespaceFunction(
"qResourceFeatureZstd()");
1472 writeString(
";\n ");
1475 writeAddNamespaceFunction(
"qUnregisterResourceData");
1476 writeString(
"\n (version, qt_resource_struct, "
1477 "qt_resource_name, qt_resource_data);\n");
1479 writeString(
" return 1;\n");
1480 writeString(
"}\n\n");
1483 writeString(
"#ifdef __clang__\n"
1484 "# pragma clang diagnostic push\n"
1485 "# pragma clang diagnostic ignored \"-Wexit-time-destructors\"\n"
1488 writeString(
"namespace {\n"
1489 " struct initializer {\n");
1491 if (m_useNameSpace) {
1492 writeByteArray(
" initializer() { QT_RCC_MANGLE_NAMESPACE(" +
initResources +
")(); }\n"
1493 " ~initializer() { QT_RCC_MANGLE_NAMESPACE(" + cleanResources +
")(); }\n");
1495 writeByteArray(
" initializer() { " +
initResources +
"(); }\n"
1496 " ~initializer() { " + cleanResources +
"(); }\n");
1498 writeString(
" } dummy;\n"
1501 writeString(
"#ifdef __clang__\n"
1502 "# pragma clang diagnostic pop\n"
1506 }
else if (m_format ==
Binary) {
1508 char *
p = m_out.
data();
1512 p[
i++] = m_formatVersion;
1514 p[
i++] = (m_treeOffset >> 24) & 0xff;
1515 p[
i++] = (m_treeOffset >> 16) & 0xff;
1516 p[
i++] = (m_treeOffset >> 8) & 0xff;
1517 p[
i++] = (m_treeOffset >> 0) & 0xff;
1519 p[
i++] = (m_dataOffset >> 24) & 0xff;
1520 p[
i++] = (m_dataOffset >> 16) & 0xff;
1521 p[
i++] = (m_dataOffset >> 8) & 0xff;
1522 p[
i++] = (m_dataOffset >> 0) & 0xff;
1524 p[
i++] = (m_namesOffset >> 24) & 0xff;
1525 p[
i++] = (m_namesOffset >> 16) & 0xff;
1526 p[
i++] = (m_namesOffset >> 8) & 0xff;
1527 p[
i++] = (m_namesOffset >> 0) & 0xff;
1529 if (m_formatVersion >= 3) {
1530 p[
i++] = (m_overallFlags >> 24) & 0xff;
1531 p[
i++] = (m_overallFlags >> 16) & 0xff;
1532 p[
i++] = (m_overallFlags >> 8) & 0xff;
1533 p[
i++] = (m_overallFlags >> 0) & 0xff;
1536 writeString(
"def qInitResources():\n");
1537 writeString(
" QtCore.qRegisterResourceData(0x");
1538 write2HexDigits(m_formatVersion);
1539 writeString(
", qt_resource_struct, qt_resource_name, qt_resource_data)\n\n");
1540 writeString(
"def qCleanupResources():\n");
1541 writeString(
" QtCore.qUnregisterResourceData(0x");
1542 write2HexDigits(m_formatVersion);
1543 writeString(
", qt_resource_struct, qt_resource_name, qt_resource_data)\n\n");
1544 writeString(
"qInitResources()\n");
char * data()
\macro QT_NO_CAST_FROM_BYTEARRAY
qulonglong toULongLong(bool *ok=nullptr, int base=10) const
Returns the byte array converted to an {unsigned long long} using base base, which is ten by default.
qsizetype size() const noexcept
Returns the number of bytes in this byte array.
void reserve(qsizetype size)
Attempts to allocate memory for at least size bytes.
const char * constData() const noexcept
Returns a pointer to the const data stored in the byte array.
static QByteArray number(int, int base=10)
Returns a byte-array representing the whole number n as text.
void resize(qsizetype size)
Sets the size of the byte array to size bytes.
QByteArray & append(char c)
This is an overloaded member function, provided for convenience. It differs from the above function o...
\inmodule QtCore\reentrant
qint64 toMSecsSinceEpoch() const
bool isValid() const
Returns true if this datetime represents a definite moment, otherwise false.
The QDirIterator class provides an iterator for directory entrylists.
static bool isRelativePath(const QString &path)
Returns true if path is relative; returns false if it is absolute.
static QString cleanPath(const QString &path)
Returns path with directory separators normalized (that is, platform-native separators converted to "...
static QString currentPath()
Returns the absolute path of the application's current directory.
\inmodule QtCore \reentrant
QDateTime lastModified() const
Returns the date and time when the file was last modified.
QString absoluteFilePath() const
Returns an absolute path including the file name.
QString path() const
Returns the file's path.
bool open(OpenMode flags) override
Opens the file using OpenMode mode, returning true if successful; otherwise false.
void setFileName(const QString &name)
Sets the name of the file.
bool exists() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
qint64 size() const override
\reimp
\inmodule QtCore \reentrant
virtual qint64 pos() const
For random-access devices, this function returns the position that data is written to or read from.
bool putChar(char c)
Writes the character c to the device.
QByteArray readAll()
Reads all remaining data from the device, and returns it as a byte array.
qint64 write(const char *data, qint64 len)
Writes at most maxSize bytes of data from data to the device.
QString errorString() const
Returns a human-readable description of the last device error that occurred.
bool getChar(char *c)
Reads one character from the device and stores it in c.
virtual bool seek(qint64 pos)
For random-access devices, this function sets the current position to pos, returning true on success,...
QString errorString() const
Returns a human readable description of the last error that occurred.
QString text(const QString &key) const
qsizetype size() const noexcept
bool isEmpty() const noexcept
const_reference at(qsizetype i) const noexcept
Language language() const
Returns the language of this locale.
static QLocale c()
Returns a QLocale object initialized to the "C" locale.
Territory territory() const
const_iterator constBegin() const noexcept
Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the first item in the hash.
const_iterator constEnd() const noexcept
Returns a const \l{STL-style iterators}{STL-style iterator} pointing to the imaginary item after the ...
qsizetype size() const noexcept
T & top()
Returns a reference to the stack's top item.
T pop()
Removes the top item from the stack and returns it.
void push(const T &t)
Adds element t to the top of the stack.
QString toString() const
Returns a deep copy of this string view's data as a QString.
\macro QT_RESTRICTED_CAST_FROM_ASCII
QByteArray toLatin1() const &
int toInt(bool *ok=nullptr, int base=10) const
Returns the string converted to an int using base base, which is 10 by default and must be between 2 ...
bool startsWith(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Returns true if the string starts with s; otherwise returns false.
static QString fromLatin1(QByteArrayView ba)
This is an overloaded member function, provided for convenience. It differs from the above function o...
QStringList split(const QString &sep, Qt::SplitBehavior behavior=Qt::KeepEmptyParts, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Splits the string into substrings wherever sep occurs, and returns the list of those strings.
void clear()
Clears the contents of the string and makes it null.
bool isNull() const
Returns true if this string is null; otherwise returns false.
qsizetype size() const
Returns the number of characters in this string.
static QString fromUtf8(QByteArrayView utf8)
This is an overloaded member function, provided for convenience. It differs from the above function o...
QString arg(qlonglong a, int fieldwidth=0, int base=10, QChar fillChar=u' ') const
bool endsWith(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
Returns true if the string ends with s; otherwise returns false.
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
QByteArray toLocal8Bit() const &
QString & remove(qsizetype i, qsizetype len)
Removes n characters from the string, starting at the given position index, and returns a reference t...
QByteArray toUtf8() const &
QString & prepend(QChar c)
const QChar * unicode() const
Returns a Unicode representation of the string.
bool hasAttribute(QAnyStringView qualifiedName) const
Q_CORE_EXPORT QStringView value(QAnyStringView namespaceUri, QAnyStringView name) const noexcept
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
QMultiHash< QString, RCCFileInfo * > m_children
void writeDataInfo(RCCResourceLibrary &lib)
RCCFileInfo(const RCCFileInfo &)=delete
QLocale::Territory m_territory
ResourceDataFileMap resourceDataFileMap() const
bool readFiles(bool listMode, QIODevice &errorDevice)
QStringList dataFiles() const
int formatVersion() const
static int parseCompressionLevel(CompressionAlgorithm algo, const QString &level, QString *errorMsg)
int compressLevel() const
bool output(QIODevice &outDevice, QIODevice &tempDevice, QIODevice &errorDevice)
int compressThreshold() const
static CompressionAlgorithm parseCompressionAlgorithm(QStringView algo, QString *errorMsg)
qDeleteAll(list.begin(), list.end())
QSet< QString >::iterator it
const PluginKeyMapConstIterator cend
Combined button and popup list for selecting options.
constexpr bool isAsciiLetterOrNumber(char32_t c) noexcept
constexpr Initialization Uninitialized
QImageReader reader("image.png")
[1]
QByteArray qCompress(const uchar *data, qsizetype nbytes, int compressionLevel)
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage return DBusPendingCall * pending
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
EGLOutputLayerEXT EGLint attribute
uint qt_hash(QStringView key, uint chained) noexcept
GLsizei GLsizei GLenum void * binary
GLenum GLuint GLint level
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLenum GLuint GLenum GLsizei const GLchar * buf
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLuint GLintptr offset
GLsizei const GLchar *const * path
static void initResources()
#define qPrintable(string)
static char * toLocal8Bit(char *out, QStringView in, QStringConverter::State *state)
#define QStringLiteral(str)
Q_CORE_EXPORT QByteArray qgetenv(const char *varName)
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
unsigned long long quint64
static QString errorMessage(QUrlPrivate::ErrorCode errorCode, const QString &errorSource, qsizetype errorPosition)
static bool parseBoolean(QStringView value, QString *errorMsg)
@ CONSTANT_COMPRESSLEVEL_DEFAULT
@ CONSTANT_ZSTDCOMPRESSLEVEL_STORE
@ CONSTANT_COMPRESSTHRESHOLD_DEFAULT
@ CONSTANT_ZSTDCOMPRESSLEVEL_CHECK
static QString msgOpenReadFailed(const QString &fname, const QString &why)
static const char hexDigits[]
static void resourceDataFileMapRecursion(const RCCFileInfo *m_root, const QString &path, RCCResourceLibrary::ResourceDataFileMap &m)
result_type operator()(const RCCFileInfo *left, const RCCFileInfo *right) const
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent