summaryrefslogtreecommitdiffstats
path: root/src/tools
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>2016-08-22 11:30:00 +0200
committerOswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>2016-08-22 11:30:01 +0200
commitd314819fc02139e05e16c56657898c704f7fb48f (patch)
treea61ba968233634948401c8339f9613844de1c2b5 /src/tools
parent9f888d2fde9c5413e5519e0914e9b13638760985 (diff)
parente0e9e196a72ffe5457034894eaaadc90ed0d34ef (diff)
Merge dev into 5.8
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/bootstrap/bootstrap.pro6
-rw-r--r--src/tools/moc/keywords.cpp375
-rw-r--r--src/tools/moc/moc.cpp62
-rw-r--r--src/tools/moc/moc.h42
-rw-r--r--src/tools/moc/token.h3
-rw-r--r--src/tools/moc/util/generate_keywords.cpp3
-rw-r--r--src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp203
-rw-r--r--src/tools/uic/cpp/cppwritedeclaration.cpp21
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.cpp14
9 files changed, 376 insertions, 353 deletions
diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro
index f763d0c8fe..d544288031 100644
--- a/src/tools/bootstrap/bootstrap.pro
+++ b/src/tools/bootstrap/bootstrap.pro
@@ -6,6 +6,10 @@ CONFIG += minimal_syncqt internal_module force_bootstrap
MODULE_INCNAME = QtCore QtXml
MODULE_DEFINES = \
+ QT_VERSION_STR=$$shell_quote(\"$$QT_VERSION\") \
+ QT_VERSION_MAJOR=$$QT_MAJOR_VERSION \
+ QT_VERSION_MINOR=$$QT_MINOR_VERSION \
+ QT_VERSION_PATCH=$$QT_PATCH_VERSION \
QT_BOOTSTRAPPED \
QT_LITE_UNICODE \
QT_NO_CAST_TO_ASCII \
@@ -134,7 +138,7 @@ macx {
../../corelib/io/qstandardpaths_win.cpp
}
-!contains(QT_CONFIG, system-zlib)|cross_compile {
+!qtConfig(system-zlib)|cross_compile {
include(../../3rdparty/zlib.pri)
} else {
CONFIG += no_core_dep
diff --git a/src/tools/moc/keywords.cpp b/src/tools/moc/keywords.cpp
index 4f1d16d2c5..07c59d155f 100644
--- a/src/tools/moc/keywords.cpp
+++ b/src/tools/moc/keywords.cpp
@@ -30,12 +30,12 @@
// DO NOT EDIT.
static const short keyword_trans[][128] = {
- {0,0,0,0,0,0,0,0,0,546,543,0,0,0,0,0,
+ {0,0,0,0,0,0,0,0,0,561,558,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 546,252,544,547,8,38,239,545,25,26,236,234,30,235,27,237,
+ 561,252,559,562,8,38,239,560,25,26,236,234,30,235,27,237,
22,22,22,22,22,22,22,22,22,22,34,41,23,39,24,43,
0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
- 8,21,8,8,8,8,8,8,8,8,8,31,549,32,238,8,
+ 8,21,8,8,8,8,8,8,8,8,8,31,564,32,238,8,
0,1,2,3,4,5,6,7,8,9,8,8,10,11,12,13,
14,8,15,16,17,18,19,20,8,8,8,36,245,37,248,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -116,7 +116,7 @@ static const short keyword_trans[][128] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,290,222,0,0,475,0,0,0,
+ 0,0,0,0,0,0,0,0,290,222,0,0,490,0,0,0,
0,0,0,0,55,0,0,330,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -155,7 +155,7 @@ static const short keyword_trans[][128] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,499,0,0,0,0,0,0,0,0,0,0,357,
+ 0,0,0,0,514,0,0,0,0,0,0,0,0,0,0,357,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -177,7 +177,7 @@ static const short keyword_trans[][128] = {
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,42,0,0,0,28,0,
- 552,552,552,552,552,552,552,552,552,552,0,0,0,0,0,0,
+ 567,567,567,567,567,567,567,567,567,567,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -336,7 +336,7 @@ static const short keyword_trans[][128] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,551,0,0,0,0,550,
+ 0,0,0,0,0,0,0,0,0,0,566,0,0,0,0,565,
0,0,0,0,0,0,0,0,0,0,0,0,0,258,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -372,29 +372,29 @@ static const short keyword_trans[][128] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,472,0,0,0,300,0,0,0,0,0,0,0,0,0,0,
+ 0,487,0,0,0,300,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,453,402,392,397,364,0,462,0,0,0,0,0,358,
- 370,0,535,450,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,468,417,401,409,373,0,477,0,0,0,0,364,358,
+ 379,0,550,465,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0,0,0,378,0,0,0,
- 0,0,371,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,387,0,0,0,
+ 0,0,380,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,489,0,0,0,0,0,372,
+ 0,0,0,0,0,0,0,0,0,504,0,0,0,0,0,381,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
@@ -402,32 +402,48 @@ static const short keyword_trans[][128] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,432,410,0,0,415,0,0,0,424,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,405,0,0,0,0,0,0,0,0,0,0,0,406,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,518,0,451,0,0,0,479,0,0,485,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,413,0,0,0,0,0,0,0,0,0,0,0,414,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,447,425,0,0,430,0,0,0,439,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,464,0,511,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,533,0,466,0,0,0,494,0,0,500,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- 527,0,0,495,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,479,0,526,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 542,0,0,510,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
};
@@ -805,189 +821,204 @@ static const struct
{CHARACTER, 0, 84, 363, CHARACTER},
{Q_OBJECT_TOKEN, 0, 0, 0, CHARACTER},
{CHARACTER, 0, 65, 365, CHARACTER},
- {CHARACTER, 0, 68, 366, CHARACTER},
- {CHARACTER, 0, 71, 367, CHARACTER},
- {CHARACTER, 0, 69, 368, CHARACTER},
- {CHARACTER, 0, 84, 369, CHARACTER},
+ {CHARACTER, 0, 77, 366, CHARACTER},
+ {CHARACTER, 0, 69, 367, CHARACTER},
+ {CHARACTER, 0, 83, 368, CHARACTER},
+ {CHARACTER, 0, 80, 369, CHARACTER},
+ {CHARACTER, 0, 65, 370, CHARACTER},
+ {CHARACTER, 0, 67, 371, CHARACTER},
+ {CHARACTER, 0, 69, 372, CHARACTER},
+ {Q_NAMESPACE_TOKEN, 0, 0, 0, CHARACTER},
+ {CHARACTER, 0, 65, 374, CHARACTER},
+ {CHARACTER, 0, 68, 375, CHARACTER},
+ {CHARACTER, 0, 71, 376, CHARACTER},
+ {CHARACTER, 0, 69, 377, CHARACTER},
+ {CHARACTER, 0, 84, 378, CHARACTER},
{Q_GADGET_TOKEN, 0, 0, 0, CHARACTER},
{CHARACTER, 44, 0, 0, CHARACTER},
{CHARACTER, 45, 0, 0, CHARACTER},
- {CHARACTER, 0, 80, 373, CHARACTER},
- {CHARACTER, 0, 69, 374, CHARACTER},
- {CHARACTER, 0, 82, 375, CHARACTER},
- {CHARACTER, 0, 84, 376, CHARACTER},
- {CHARACTER, 0, 89, 377, CHARACTER},
+ {CHARACTER, 0, 80, 382, CHARACTER},
+ {CHARACTER, 0, 69, 383, CHARACTER},
+ {CHARACTER, 0, 82, 384, CHARACTER},
+ {CHARACTER, 0, 84, 385, CHARACTER},
+ {CHARACTER, 0, 89, 386, CHARACTER},
{Q_PROPERTY_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 85, 379, CHARACTER},
- {CHARACTER, 0, 71, 380, CHARACTER},
- {CHARACTER, 0, 73, 381, CHARACTER},
- {CHARACTER, 0, 78, 382, CHARACTER},
- {CHARACTER, 0, 95, 383, CHARACTER},
- {CHARACTER, 0, 77, 384, CHARACTER},
- {CHARACTER, 0, 69, 385, CHARACTER},
- {CHARACTER, 0, 84, 386, CHARACTER},
- {CHARACTER, 0, 65, 387, CHARACTER},
- {CHARACTER, 0, 68, 388, CHARACTER},
- {CHARACTER, 0, 65, 389, CHARACTER},
- {CHARACTER, 0, 84, 390, CHARACTER},
- {CHARACTER, 0, 65, 391, CHARACTER},
+ {CHARACTER, 0, 85, 388, CHARACTER},
+ {CHARACTER, 0, 71, 389, CHARACTER},
+ {CHARACTER, 0, 73, 390, CHARACTER},
+ {CHARACTER, 0, 78, 391, CHARACTER},
+ {CHARACTER, 0, 95, 392, CHARACTER},
+ {CHARACTER, 0, 77, 393, CHARACTER},
+ {CHARACTER, 0, 69, 394, CHARACTER},
+ {CHARACTER, 0, 84, 395, CHARACTER},
+ {CHARACTER, 0, 65, 396, CHARACTER},
+ {CHARACTER, 0, 68, 397, CHARACTER},
+ {CHARACTER, 0, 65, 398, CHARACTER},
+ {CHARACTER, 0, 84, 399, CHARACTER},
+ {CHARACTER, 0, 65, 400, CHARACTER},
{Q_PLUGIN_METADATA_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 78, 393, CHARACTER},
- {CHARACTER, 0, 85, 394, CHARACTER},
- {CHARACTER, 0, 77, 395, CHARACTER},
- {Q_ENUM_TOKEN, 0, 83, 396, CHARACTER},
+ {CHARACTER, 0, 78, 402, CHARACTER},
+ {CHARACTER, 0, 85, 403, CHARACTER},
+ {CHARACTER, 0, 77, 404, CHARACTER},
+ {Q_ENUM_TOKEN, 46, 0, 0, CHARACTER},
{Q_ENUMS_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 76, 398, CHARACTER},
- {CHARACTER, 0, 65, 399, CHARACTER},
- {CHARACTER, 0, 71, 400, CHARACTER},
- {Q_FLAG_TOKEN, 0, 83, 401, CHARACTER},
+ {CHARACTER, 0, 78, 407, CHARACTER},
+ {CHARACTER, 0, 83, 408, CHARACTER},
+ {Q_ENUM_NS_TOKEN, 0, 0, 0, CHARACTER},
+ {CHARACTER, 0, 76, 410, CHARACTER},
+ {CHARACTER, 0, 65, 411, CHARACTER},
+ {CHARACTER, 0, 71, 412, CHARACTER},
+ {Q_FLAG_TOKEN, 47, 0, 0, CHARACTER},
{Q_FLAGS_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 69, 403, CHARACTER},
- {CHARACTER, 0, 67, 404, CHARACTER},
- {CHARACTER, 0, 76, 405, CHARACTER},
- {CHARACTER, 0, 65, 406, CHARACTER},
- {CHARACTER, 0, 82, 407, CHARACTER},
- {CHARACTER, 0, 69, 408, CHARACTER},
- {CHARACTER, 0, 95, 409, CHARACTER},
- {CHARACTER, 46, 0, 0, CHARACTER},
- {CHARACTER, 0, 76, 411, CHARACTER},
- {CHARACTER, 0, 65, 412, CHARACTER},
- {CHARACTER, 0, 71, 413, CHARACTER},
- {CHARACTER, 0, 83, 414, CHARACTER},
- {Q_DECLARE_FLAGS_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 78, 416, CHARACTER},
- {CHARACTER, 0, 84, 417, CHARACTER},
+ {CHARACTER, 0, 78, 415, CHARACTER},
+ {CHARACTER, 0, 83, 416, CHARACTER},
+ {Q_FLAG_NS_TOKEN, 0, 0, 0, CHARACTER},
{CHARACTER, 0, 69, 418, CHARACTER},
- {CHARACTER, 0, 82, 419, CHARACTER},
- {CHARACTER, 0, 70, 420, CHARACTER},
+ {CHARACTER, 0, 67, 419, CHARACTER},
+ {CHARACTER, 0, 76, 420, CHARACTER},
{CHARACTER, 0, 65, 421, CHARACTER},
- {CHARACTER, 0, 67, 422, CHARACTER},
+ {CHARACTER, 0, 82, 422, CHARACTER},
{CHARACTER, 0, 69, 423, CHARACTER},
- {Q_DECLARE_INTERFACE_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 69, 425, CHARACTER},
- {CHARACTER, 0, 84, 426, CHARACTER},
+ {CHARACTER, 0, 95, 424, CHARACTER},
+ {CHARACTER, 48, 0, 0, CHARACTER},
+ {CHARACTER, 0, 76, 426, CHARACTER},
{CHARACTER, 0, 65, 427, CHARACTER},
- {CHARACTER, 0, 84, 428, CHARACTER},
- {CHARACTER, 0, 89, 429, CHARACTER},
- {CHARACTER, 0, 80, 430, CHARACTER},
- {CHARACTER, 0, 69, 431, CHARACTER},
+ {CHARACTER, 0, 71, 428, CHARACTER},
+ {CHARACTER, 0, 83, 429, CHARACTER},
+ {Q_DECLARE_FLAGS_TOKEN, 0, 0, 0, CHARACTER},
+ {CHARACTER, 0, 78, 431, CHARACTER},
+ {CHARACTER, 0, 84, 432, CHARACTER},
+ {CHARACTER, 0, 69, 433, CHARACTER},
+ {CHARACTER, 0, 82, 434, CHARACTER},
+ {CHARACTER, 0, 70, 435, CHARACTER},
+ {CHARACTER, 0, 65, 436, CHARACTER},
+ {CHARACTER, 0, 67, 437, CHARACTER},
+ {CHARACTER, 0, 69, 438, CHARACTER},
+ {Q_DECLARE_INTERFACE_TOKEN, 0, 0, 0, CHARACTER},
+ {CHARACTER, 0, 69, 440, CHARACTER},
+ {CHARACTER, 0, 84, 441, CHARACTER},
+ {CHARACTER, 0, 65, 442, CHARACTER},
+ {CHARACTER, 0, 84, 443, CHARACTER},
+ {CHARACTER, 0, 89, 444, CHARACTER},
+ {CHARACTER, 0, 80, 445, CHARACTER},
+ {CHARACTER, 0, 69, 446, CHARACTER},
{Q_DECLARE_METATYPE_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 88, 433, CHARACTER},
- {CHARACTER, 0, 84, 434, CHARACTER},
- {CHARACTER, 0, 69, 435, CHARACTER},
- {CHARACTER, 0, 78, 436, CHARACTER},
- {CHARACTER, 0, 83, 437, CHARACTER},
- {CHARACTER, 0, 73, 438, CHARACTER},
- {CHARACTER, 0, 79, 439, CHARACTER},
- {CHARACTER, 0, 78, 440, CHARACTER},
- {CHARACTER, 0, 95, 441, CHARACTER},
- {CHARACTER, 0, 73, 442, CHARACTER},
- {CHARACTER, 0, 78, 443, CHARACTER},
- {CHARACTER, 0, 84, 444, CHARACTER},
- {CHARACTER, 0, 69, 445, CHARACTER},
- {CHARACTER, 0, 82, 446, CHARACTER},
- {CHARACTER, 0, 70, 447, CHARACTER},
- {CHARACTER, 0, 65, 448, CHARACTER},
- {CHARACTER, 0, 67, 449, CHARACTER},
- {CHARACTER, 0, 69, 423, CHARACTER},
- {CHARACTER, 47, 0, 0, CHARACTER},
- {CHARACTER, 0, 84, 452, CHARACTER},
- {CHARACTER, 0, 83, 401, CHARACTER},
- {CHARACTER, 0, 76, 454, CHARACTER},
- {CHARACTER, 0, 65, 455, CHARACTER},
- {CHARACTER, 0, 83, 456, CHARACTER},
- {CHARACTER, 0, 83, 457, CHARACTER},
- {CHARACTER, 0, 73, 458, CHARACTER},
- {CHARACTER, 0, 78, 459, CHARACTER},
- {CHARACTER, 0, 70, 460, CHARACTER},
- {CHARACTER, 0, 79, 461, CHARACTER},
- {Q_CLASSINFO_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 78, 463, CHARACTER},
- {CHARACTER, 48, 0, 0, CHARACTER},
- {CHARACTER, 0, 69, 465, CHARACTER},
- {CHARACTER, 0, 82, 466, CHARACTER},
- {CHARACTER, 0, 70, 467, CHARACTER},
- {CHARACTER, 0, 65, 468, CHARACTER},
- {CHARACTER, 0, 67, 469, CHARACTER},
- {CHARACTER, 0, 69, 470, CHARACTER},
+ {CHARACTER, 0, 88, 448, CHARACTER},
+ {CHARACTER, 0, 84, 449, CHARACTER},
+ {CHARACTER, 0, 69, 450, CHARACTER},
+ {CHARACTER, 0, 78, 451, CHARACTER},
+ {CHARACTER, 0, 83, 452, CHARACTER},
+ {CHARACTER, 0, 73, 453, CHARACTER},
+ {CHARACTER, 0, 79, 454, CHARACTER},
+ {CHARACTER, 0, 78, 455, CHARACTER},
+ {CHARACTER, 0, 95, 456, CHARACTER},
+ {CHARACTER, 0, 73, 457, CHARACTER},
+ {CHARACTER, 0, 78, 458, CHARACTER},
+ {CHARACTER, 0, 84, 459, CHARACTER},
+ {CHARACTER, 0, 69, 460, CHARACTER},
+ {CHARACTER, 0, 82, 461, CHARACTER},
+ {CHARACTER, 0, 70, 462, CHARACTER},
+ {CHARACTER, 0, 65, 463, CHARACTER},
+ {CHARACTER, 0, 67, 464, CHARACTER},
+ {CHARACTER, 0, 69, 438, CHARACTER},
+ {CHARACTER, 49, 0, 0, CHARACTER},
+ {CHARACTER, 0, 84, 467, CHARACTER},
+ {CHARACTER, 0, 83, 413, CHARACTER},
+ {CHARACTER, 0, 76, 469, CHARACTER},
+ {CHARACTER, 0, 65, 470, CHARACTER},
{CHARACTER, 0, 83, 471, CHARACTER},
+ {CHARACTER, 0, 83, 472, CHARACTER},
+ {CHARACTER, 0, 73, 473, CHARACTER},
+ {CHARACTER, 0, 78, 474, CHARACTER},
+ {CHARACTER, 0, 70, 475, CHARACTER},
+ {CHARACTER, 0, 79, 476, CHARACTER},
+ {Q_CLASSINFO_TOKEN, 0, 0, 0, CHARACTER},
+ {CHARACTER, 0, 78, 478, CHARACTER},
+ {CHARACTER, 50, 0, 0, CHARACTER},
+ {CHARACTER, 0, 69, 480, CHARACTER},
+ {CHARACTER, 0, 82, 481, CHARACTER},
+ {CHARACTER, 0, 70, 482, CHARACTER},
+ {CHARACTER, 0, 65, 483, CHARACTER},
+ {CHARACTER, 0, 67, 484, CHARACTER},
+ {CHARACTER, 0, 69, 485, CHARACTER},
+ {CHARACTER, 0, 83, 486, CHARACTER},
{Q_INTERFACES_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 108, 473, CHARACTER},
- {CHARACTER, 0, 115, 474, CHARACTER},
+ {CHARACTER, 0, 108, 488, CHARACTER},
+ {CHARACTER, 0, 115, 489, CHARACTER},
{SIGNALS, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 111, 476, CHARACTER},
- {CHARACTER, 0, 116, 477, CHARACTER},
- {CHARACTER, 0, 115, 478, CHARACTER},
+ {CHARACTER, 0, 111, 491, CHARACTER},
+ {CHARACTER, 0, 116, 492, CHARACTER},
+ {CHARACTER, 0, 115, 493, CHARACTER},
{SLOTS, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 71, 480, CHARACTER},
- {CHARACTER, 0, 78, 481, CHARACTER},
- {CHARACTER, 0, 65, 482, CHARACTER},
- {CHARACTER, 0, 76, 483, CHARACTER},
- {Q_SIGNAL_TOKEN, 0, 83, 484, CHARACTER},
+ {CHARACTER, 0, 71, 495, CHARACTER},
+ {CHARACTER, 0, 78, 496, CHARACTER},
+ {CHARACTER, 0, 65, 497, CHARACTER},
+ {CHARACTER, 0, 76, 498, CHARACTER},
+ {Q_SIGNAL_TOKEN, 0, 83, 499, CHARACTER},
{Q_SIGNALS_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 79, 486, CHARACTER},
- {CHARACTER, 0, 84, 487, CHARACTER},
- {Q_SLOT_TOKEN, 0, 83, 488, CHARACTER},
+ {CHARACTER, 0, 79, 501, CHARACTER},
+ {CHARACTER, 0, 84, 502, CHARACTER},
+ {Q_SLOT_TOKEN, 0, 83, 503, CHARACTER},
{Q_SLOTS_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 86, 490, CHARACTER},
- {CHARACTER, 0, 65, 491, CHARACTER},
- {CHARACTER, 0, 84, 492, CHARACTER},
- {CHARACTER, 0, 69, 493, CHARACTER},
- {CHARACTER, 0, 95, 494, CHARACTER},
- {CHARACTER, 49, 0, 0, CHARACTER},
- {CHARACTER, 0, 76, 496, CHARACTER},
- {CHARACTER, 0, 79, 497, CHARACTER},
- {CHARACTER, 0, 84, 498, CHARACTER},
+ {CHARACTER, 0, 86, 505, CHARACTER},
+ {CHARACTER, 0, 65, 506, CHARACTER},
+ {CHARACTER, 0, 84, 507, CHARACTER},
+ {CHARACTER, 0, 69, 508, CHARACTER},
+ {CHARACTER, 0, 95, 509, CHARACTER},
+ {CHARACTER, 51, 0, 0, CHARACTER},
+ {CHARACTER, 0, 76, 511, CHARACTER},
+ {CHARACTER, 0, 79, 512, CHARACTER},
+ {CHARACTER, 0, 84, 513, CHARACTER},
{Q_PRIVATE_SLOT_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 95, 500, CHARACTER},
- {CHARACTER, 0, 77, 501, CHARACTER},
- {CHARACTER, 0, 79, 502, CHARACTER},
- {CHARACTER, 0, 67, 503, CHARACTER},
- {CHARACTER, 0, 95, 504, CHARACTER},
- {CHARACTER, 0, 67, 505, CHARACTER},
- {CHARACTER, 0, 79, 506, CHARACTER},
- {CHARACTER, 0, 77, 507, CHARACTER},
- {CHARACTER, 0, 80, 508, CHARACTER},
- {CHARACTER, 0, 65, 509, CHARACTER},
- {CHARACTER, 0, 84, 510, CHARACTER},
+ {CHARACTER, 0, 95, 515, CHARACTER},
+ {CHARACTER, 0, 77, 516, CHARACTER},
+ {CHARACTER, 0, 79, 517, CHARACTER},
+ {CHARACTER, 0, 67, 518, CHARACTER},
+ {CHARACTER, 0, 95, 519, CHARACTER},
+ {CHARACTER, 0, 67, 520, CHARACTER},
+ {CHARACTER, 0, 79, 521, CHARACTER},
+ {CHARACTER, 0, 77, 522, CHARACTER},
+ {CHARACTER, 0, 80, 523, CHARACTER},
+ {CHARACTER, 0, 65, 524, CHARACTER},
+ {CHARACTER, 0, 84, 525, CHARACTER},
{Q_MOC_COMPAT_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 79, 512, CHARACTER},
- {CHARACTER, 0, 75, 513, CHARACTER},
- {CHARACTER, 0, 65, 514, CHARACTER},
- {CHARACTER, 0, 66, 515, CHARACTER},
- {CHARACTER, 0, 76, 516, CHARACTER},
- {CHARACTER, 0, 69, 517, CHARACTER},
+ {CHARACTER, 0, 79, 527, CHARACTER},
+ {CHARACTER, 0, 75, 528, CHARACTER},
+ {CHARACTER, 0, 65, 529, CHARACTER},
+ {CHARACTER, 0, 66, 530, CHARACTER},
+ {CHARACTER, 0, 76, 531, CHARACTER},
+ {CHARACTER, 0, 69, 532, CHARACTER},
{Q_INVOKABLE_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 82, 519, CHARACTER},
- {CHARACTER, 0, 73, 520, CHARACTER},
- {CHARACTER, 0, 80, 521, CHARACTER},
- {CHARACTER, 0, 84, 522, CHARACTER},
- {CHARACTER, 0, 65, 523, CHARACTER},
- {CHARACTER, 0, 66, 524, CHARACTER},
- {CHARACTER, 0, 76, 525, CHARACTER},
- {CHARACTER, 0, 69, 526, CHARACTER},
+ {CHARACTER, 0, 82, 534, CHARACTER},
+ {CHARACTER, 0, 73, 535, CHARACTER},
+ {CHARACTER, 0, 80, 536, CHARACTER},
+ {CHARACTER, 0, 84, 537, CHARACTER},
+ {CHARACTER, 0, 65, 538, CHARACTER},
+ {CHARACTER, 0, 66, 539, CHARACTER},
+ {CHARACTER, 0, 76, 540, CHARACTER},
+ {CHARACTER, 0, 69, 541, CHARACTER},
{Q_SCRIPTABLE_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 82, 528, CHARACTER},
- {CHARACTER, 0, 79, 529, CHARACTER},
- {CHARACTER, 0, 80, 530, CHARACTER},
- {CHARACTER, 0, 69, 531, CHARACTER},
- {CHARACTER, 0, 82, 532, CHARACTER},
- {CHARACTER, 0, 84, 533, CHARACTER},
- {CHARACTER, 0, 89, 534, CHARACTER},
+ {CHARACTER, 0, 82, 543, CHARACTER},
+ {CHARACTER, 0, 79, 544, CHARACTER},
+ {CHARACTER, 0, 80, 545, CHARACTER},
+ {CHARACTER, 0, 69, 546, CHARACTER},
+ {CHARACTER, 0, 82, 547, CHARACTER},
+ {CHARACTER, 0, 84, 548, CHARACTER},
+ {CHARACTER, 0, 89, 549, CHARACTER},
{Q_PRIVATE_PROPERTY_TOKEN, 0, 0, 0, CHARACTER},
- {CHARACTER, 0, 69, 536, CHARACTER},
- {CHARACTER, 0, 86, 537, CHARACTER},
- {CHARACTER, 0, 73, 538, CHARACTER},
- {CHARACTER, 0, 83, 539, CHARACTER},
- {CHARACTER, 0, 73, 540, CHARACTER},
- {CHARACTER, 0, 79, 541, CHARACTER},
- {CHARACTER, 0, 78, 542, CHARACTER},
+ {CHARACTER, 0, 69, 551, CHARACTER},
+ {CHARACTER, 0, 86, 552, CHARACTER},
+ {CHARACTER, 0, 73, 553, CHARACTER},
+ {CHARACTER, 0, 83, 554, CHARACTER},
+ {CHARACTER, 0, 73, 555, CHARACTER},
+ {CHARACTER, 0, 79, 556, CHARACTER},
+ {CHARACTER, 0, 78, 557, CHARACTER},
{Q_REVISION_TOKEN, 0, 0, 0, CHARACTER},
{NEWLINE, 0, 0, 0, NOTOKEN},
{QUOTE, 0, 0, 0, NOTOKEN},
{SINGLEQUOTE, 0, 0, 0, NOTOKEN},
{WHITESPACE, 0, 0, 0, NOTOKEN},
- {HASH, 0, 35, 548, HASH},
+ {HASH, 0, 35, 563, HASH},
{PP_HASHHASH, 0, 0, 0, NOTOKEN},
{BACKSLASH, 0, 0, 0, NOTOKEN},
{CPP_COMMENT, 0, 0, 0, NOTOKEN},
diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp
index afe64bb889..22207a9030 100644
--- a/src/tools/moc/moc.cpp
+++ b/src/tools/moc/moc.cpp
@@ -554,14 +554,51 @@ void Moc::parse()
until(SEMIC);
} else if (!test(SEMIC)) {
NamespaceDef def;
- def.name = lexem();
+ def.classname = lexem();
next(LBRACE);
def.begin = index - 1;
until(RBRACE);
def.end = index;
index = def.begin + 1;
+ while (inNamespace(&def) && hasNext()) {
+ switch (next()) {
+ case Q_NAMESPACE_TOKEN:
+ def.hasQNamespace = true;
+ break;
+ case Q_ENUMS_TOKEN:
+ case Q_ENUM_NS_TOKEN:
+ parseEnumOrFlag(&def, false);
+ break;
+ case Q_FLAGS_TOKEN:
+ case Q_FLAG_NS_TOKEN:
+ parseEnumOrFlag(&def, true);
+ break;
+ case Q_DECLARE_FLAGS_TOKEN:
+ parseFlag(&def);
+ break;
+ case Q_CLASSINFO_TOKEN:
+ parseClassInfo(&def);
+ break;
+ case ENUM: {
+ EnumDef enumDef;
+ if (parseEnum(&enumDef))
+ def.enumList += enumDef;
+ } break;
+ case CLASS:
+ case STRUCT: {
+ ClassDef classdef;
+ if (!parseClassHead(&classdef))
+ continue;
+ while (inClass(&classdef) && hasNext())
+ next(); // consume all Q_XXXX macros from this class
+ } break;
+ default: break;
+ }
+ }
namespaceList += def;
index = rewind;
+ if (!def.hasQNamespace && (!def.classInfoList.isEmpty() || !def.enumDeclarations.isEmpty()))
+ error("Namespace declaration lacks Q_NAMESPACE macro.");
}
}
break;
@@ -618,7 +655,7 @@ void Moc::parse()
for (int i = namespaceList.size() - 1; i >= 0; --i)
if (inNamespace(&namespaceList.at(i)))
- def.qualified.prepend(namespaceList.at(i).name + "::");
+ def.qualified.prepend(namespaceList.at(i).classname + "::");
QHash<QByteArray, QByteArray> &classHash = def.hasQObject ? knownQObjectClasses : knownGadgets;
classHash.insert(def.classname, def.qualified);
@@ -634,7 +671,7 @@ void Moc::parse()
FunctionDef::Access access = FunctionDef::Private;
for (int i = namespaceList.size() - 1; i >= 0; --i)
if (inNamespace(&namespaceList.at(i)))
- def.qualified.prepend(namespaceList.at(i).name + "::");
+ def.qualified.prepend(namespaceList.at(i).classname + "::");
while (inClass(&def) && hasNext()) {
switch ((t = next())) {
case PRIVATE:
@@ -802,6 +839,19 @@ void Moc::parse()
classHash.insert(def.qualified, def.qualified);
}
}
+ for (const auto &n : qAsConst(namespaceList)) {
+ if (!n.hasQNamespace)
+ continue;
+ ClassDef def;
+ static_cast<BaseDef &>(def) = static_cast<BaseDef>(n);
+ if (!def.qualified.isEmpty())
+ def.qualified += "::";
+ def.qualified += def.classname;
+ def.hasQGadget = true;
+ classList += def;
+ knownGadgets.insert(def.classname, def.qualified);
+ knownGadgets.insert(def.qualified, def.qualified);
+ }
}
static bool any_type_contains(const QVector<PropertyDef> &properties, const QByteArray &pattern)
@@ -1248,7 +1298,7 @@ void Moc::parsePrivateProperty(ClassDef *def)
def->propertyList += propDef;
}
-void Moc::parseEnumOrFlag(ClassDef *def, bool isFlag)
+void Moc::parseEnumOrFlag(BaseDef *def, bool isFlag)
{
next(LPAREN);
QByteArray identifier;
@@ -1263,7 +1313,7 @@ void Moc::parseEnumOrFlag(ClassDef *def, bool isFlag)
next(RPAREN);
}
-void Moc::parseFlag(ClassDef *def)
+void Moc::parseFlag(BaseDef *def)
{
next(LPAREN);
QByteArray flagName, enumName;
@@ -1287,7 +1337,7 @@ void Moc::parseFlag(ClassDef *def)
next(RPAREN);
}
-void Moc::parseClassInfo(ClassDef *def)
+void Moc::parseClassInfo(BaseDef *def)
{
next(LPAREN);
ClassInfoDef infoDef;
diff --git a/src/tools/moc/moc.h b/src/tools/moc/moc.h
index 843bdeb794..6040f944f3 100644
--- a/src/tools/moc/moc.h
+++ b/src/tools/moc/moc.h
@@ -144,12 +144,18 @@ struct ClassInfoDef
};
Q_DECLARE_TYPEINFO(ClassInfoDef, Q_MOVABLE_TYPE);
-struct ClassDef {
- ClassDef():
- hasQObject(false), hasQGadget(false), notifyableProperties(0)
- , revisionedMethods(0), revisionedProperties(0), begin(0), end(0){}
+struct BaseDef {
QByteArray classname;
QByteArray qualified;
+ QVector<ClassInfoDef> classInfoList;
+ QMap<QByteArray, bool> enumDeclarations;
+ QVector<EnumDef> enumList;
+ QMap<QByteArray, QByteArray> flagAliases;
+ int begin = 0;
+ int end = 0;
+};
+
+struct ClassDef : BaseDef {
QVector<QPair<QByteArray, FunctionDef::Access> > superclassList;
struct Interface
@@ -162,8 +168,8 @@ struct ClassDef {
};
QVector<QVector<Interface> >interfaceList;
- bool hasQObject;
- bool hasQGadget;
+ bool hasQObject = false;
+ bool hasQGadget = false;
struct PluginData {
QByteArray iid;
@@ -173,25 +179,17 @@ struct ClassDef {
QVector<FunctionDef> constructorList;
QVector<FunctionDef> signalList, slotList, methodList, publicList;
- int notifyableProperties;
+ int notifyableProperties = 0;
QVector<PropertyDef> propertyList;
- QVector<ClassInfoDef> classInfoList;
- QMap<QByteArray, bool> enumDeclarations;
- QVector<EnumDef> enumList;
- QMap<QByteArray, QByteArray> flagAliases;
- int revisionedMethods;
- int revisionedProperties;
+ int revisionedMethods = 0;
+ int revisionedProperties = 0;
- int begin;
- int end;
};
Q_DECLARE_TYPEINFO(ClassDef, Q_MOVABLE_TYPE);
Q_DECLARE_TYPEINFO(ClassDef::Interface, Q_MOVABLE_TYPE);
-struct NamespaceDef {
- QByteArray name;
- int begin;
- int end;
+struct NamespaceDef : BaseDef {
+ bool hasQNamespace = false;
};
Q_DECLARE_TYPEINFO(NamespaceDef, Q_MOVABLE_TYPE);
@@ -240,9 +238,9 @@ public:
void parseProperty(ClassDef *def);
void parsePluginData(ClassDef *def);
void createPropertyDef(PropertyDef &def);
- void parseEnumOrFlag(ClassDef *def, bool isFlag);
- void parseFlag(ClassDef *def);
- void parseClassInfo(ClassDef *def);
+ void parseEnumOrFlag(BaseDef *def, bool isFlag);
+ void parseFlag(BaseDef *def);
+ void parseClassInfo(BaseDef *def);
void parseInterfaces(ClassDef *def);
void parseDeclareInterface();
void parseDeclareMetatype();
diff --git a/src/tools/moc/token.h b/src/tools/moc/token.h
index 3557da8aa8..db9d319b78 100644
--- a/src/tools/moc/token.h
+++ b/src/tools/moc/token.h
@@ -154,12 +154,15 @@ QT_BEGIN_NAMESPACE
F(RETURN) \
F(Q_OBJECT_TOKEN) \
F(Q_GADGET_TOKEN) \
+ F(Q_NAMESPACE_TOKEN) \
F(Q_PROPERTY_TOKEN) \
F(Q_PLUGIN_METADATA_TOKEN) \
F(Q_ENUMS_TOKEN) \
F(Q_ENUM_TOKEN) \
+ F(Q_ENUM_NS_TOKEN) \
F(Q_FLAGS_TOKEN) \
F(Q_FLAG_TOKEN) \
+ F(Q_FLAG_NS_TOKEN) \
F(Q_DECLARE_FLAGS_TOKEN) \
F(Q_DECLARE_INTERFACE_TOKEN) \
F(Q_DECLARE_METATYPE_TOKEN) \
diff --git a/src/tools/moc/util/generate_keywords.cpp b/src/tools/moc/util/generate_keywords.cpp
index d0f76a4c45..df850c1bdc 100644
--- a/src/tools/moc/util/generate_keywords.cpp
+++ b/src/tools/moc/util/generate_keywords.cpp
@@ -213,13 +213,16 @@ static const Keyword keywords[] = {
{ "goto", "GOTO" },
{ "return", "RETURN" },
{ "Q_OBJECT", "Q_OBJECT_TOKEN" },
+ { "Q_NAMESPACE", "Q_NAMESPACE_TOKEN" },
{ "Q_GADGET", "Q_GADGET_TOKEN" },
{ "Q_PROPERTY", "Q_PROPERTY_TOKEN" },
{ "Q_PLUGIN_METADATA", "Q_PLUGIN_METADATA_TOKEN" },
{ "Q_ENUMS", "Q_ENUMS_TOKEN" },
{ "Q_ENUM", "Q_ENUM_TOKEN" },
+ { "Q_ENUM_NS", "Q_ENUM_NS_TOKEN" },
{ "Q_FLAGS", "Q_FLAGS_TOKEN" },
{ "Q_FLAG", "Q_FLAG_TOKEN" },
+ { "Q_FLAG_NS", "Q_FLAG_NS_TOKEN" },
{ "Q_DECLARE_FLAGS", "Q_DECLARE_FLAGS_TOKEN" },
{ "Q_DECLARE_INTERFACE", "Q_DECLARE_INTERFACE_TOKEN" },
{ "Q_DECLARE_METATYPE", "Q_DECLARE_METATYPE_TOKEN" },
diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
index 8fc54794bc..e58f194b72 100644
--- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
+++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
@@ -27,6 +27,8 @@
****************************************************************************/
#include <qbytearray.h>
+#include <qcommandlineparser.h>
+#include <qcoreapplication.h>
#include <qdebug.h>
#include <qfile.h>
#include <qfileinfo.h>
@@ -59,30 +61,6 @@ static QString commandLine;
static QStringList includes;
static QStringList wantedInterfaces;
-static const char help[] =
- "Usage: " PROGRAMNAME " [options...] [xml-or-xml-file] [interfaces...]\n"
- "Produces the C++ code to implement the interfaces defined in the input file.\n"
- "\n"
- "Options:\n"
- " -a <filename> Write the adaptor code to <filename>\n"
- " -c <classname> Use <classname> as the class name for the generated classes\n"
- " -h Show this information\n"
- " -i <filename> Add #include to the output\n"
- " -l <classname> When generating an adaptor, use <classname> as the parent class\n"
- " -m Generate #include \"filename.moc\" statements in the .cpp files\n"
- " -N Don't use namespaces\n"
- " -p <filename> Write the proxy code to <filename>\n"
- " -v Be verbose.\n"
- " -V Show the program version and quit.\n"
- "\n"
- "If the file name given to the options -a and -p does not end in .cpp or .h, the\n"
- "program will automatically append the suffixes and produce both files.\n"
- "You can also use a colon (:) to separate the header name from the source file\n"
- "name, as in '-a filename_p.h:filename.cpp'.\n"
- "\n"
- "If you pass a dash (-) as the argument to either -p or -a, the output is written\n"
- "to the standard output\n";
-
static const char includeList[] =
"#include <QtCore/QByteArray>\n"
"#include <QtCore/QList>\n"
@@ -101,105 +79,6 @@ static const char forwardDeclarations[] =
"class QVariant;\n"
"QT_END_NAMESPACE\n";
-static void showHelp()
-{
- printf("%s", help);
- exit(0);
-}
-
-static void showVersion()
-{
- printf("%s version %s\n", PROGRAMNAME, PROGRAMVERSION);
- printf("D-Bus binding tool for Qt\n");
- exit(0);
-}
-
-static QString nextArg(QStringList &args, int i, char opt)
-{
- QString arg = args.value(i);
- if (arg.isEmpty()) {
- printf("-%c needs at least one argument\n", opt);
- exit(1);
- }
- return args.takeAt(i);
-}
-
-static void parseCmdLine(QStringList args)
-{
- args.takeFirst();
-
- commandLine = QLatin1String(PROGRAMNAME " ");
- commandLine += args.join(QLatin1Char(' '));
-
- int i = 0;
- while (i < args.count()) {
-
- if (!args.at(i).startsWith(QLatin1Char('-'))) {
- ++i;
- continue;
- }
- QString arg = args.takeAt(i);
-
- char c = '\0';
- if (arg.length() == 2)
- c = arg.at(1).toLatin1();
- else if (arg == QLatin1String("--help"))
- c = 'h';
-
- switch (c) {
- case 'a':
- adaptorFile = nextArg(args, i, 'a');
- break;
-
- case 'c':
- globalClassName = nextArg(args, i, 'c');
- break;
-
- case 'v':
- verbose = true;
- break;
-
- case 'i':
- includes << nextArg(args, i, 'i');
- break;
-
- case 'l':
- parentClassName = nextArg(args, i, 'l');
- break;
-
- case 'm':
- includeMocs = true;
- break;
-
- case 'N':
- skipNamespaces = true;
- break;
-
- case '?':
- case 'h':
- showHelp();
- break;
-
- case 'V':
- showVersion();
- break;
-
- case 'p':
- proxyFile = nextArg(args, i, 'p');
- break;
-
- default:
- printf("unknown option: '%s'\n", qPrintable(arg));
- exit(1);
- }
- }
-
- if (!args.isEmpty())
- inputFile = args.takeFirst();
-
- wantedInterfaces << args;
-}
-
static QDBusIntrospection::Interfaces readInput()
{
QFile input(inputFile);
@@ -1139,13 +1018,79 @@ static void writeAdaptor(const QString &filename, const QDBusIntrospection::Inte
int main(int argc, char **argv)
{
- QStringList arguments;
- arguments.reserve(argc);
- for (int i = 0; i < argc; ++i) {
- arguments.append(QString::fromLocal8Bit(argv[i]));
- }
+ QCoreApplication app(argc, argv);
+ QCoreApplication::setApplicationName(QStringLiteral(PROGRAMNAME));
+ QCoreApplication::setApplicationVersion(QStringLiteral(PROGRAMVERSION));
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription(QLatin1String(
+ "Produces the C++ code to implement the interfaces defined in the input file.\n\n"
+ "If the file name given to the options -a and -p does not end in .cpp or .h, the\n"
+ "program will automatically append the suffixes and produce both files.\n"
+ "You can also use a colon (:) to separate the header name from the source file\n"
+ "name, as in '-a filename_p.h:filename.cpp'.\n\n"
+ "If you pass a dash (-) as the argument to either -p or -a, the output is written\n"
+ "to the standard output."));
+
+ parser.addHelpOption();
+ parser.addVersionOption();
+ parser.addPositionalArgument(QStringLiteral("xml-or-xml-file"), QStringLiteral("XML file to use."));
+ parser.addPositionalArgument(QStringLiteral("interfaces"), QStringLiteral("List of interfaces to use."),
+ QStringLiteral("[interfaces ...]"));
+
+ QCommandLineOption adapterCodeOption(QStringList() << QStringLiteral("a") << QStringLiteral("adaptor"),
+ QStringLiteral("Write the adaptor code to <filename>"), QStringLiteral("filename"));
+ parser.addOption(adapterCodeOption);
+
+ QCommandLineOption classNameOption(QStringList() << QStringLiteral("c") << QStringLiteral("classname"),
+ QStringLiteral("Use <classname> as the class name for the generated classes"), QStringLiteral("classname"));
+ parser.addOption(classNameOption);
+
+ QCommandLineOption addIncludeOption(QStringList() << QStringLiteral("i") << QStringLiteral("include"),
+ QStringLiteral("Add #include to the output"), QStringLiteral("filename"));
+ parser.addOption(addIncludeOption);
+
+ QCommandLineOption adapterParentOption(QStringLiteral("l"),
+ QStringLiteral("When generating an adaptor, use <classname> as the parent class"), QStringLiteral("classname"));
+ parser.addOption(adapterParentOption);
+
+ QCommandLineOption mocIncludeOption(QStringList() << QStringLiteral("m") << QStringLiteral("moc"),
+ QStringLiteral("Generate #include \"filename.moc\" statements in the .cpp files"));
+ parser.addOption(mocIncludeOption);
+
+ QCommandLineOption noNamespaceOption(QStringList() << QStringLiteral("N") << QStringLiteral("no-namespaces"),
+ QStringLiteral("Don't use namespaces"));
+ parser.addOption(noNamespaceOption);
+
+ QCommandLineOption proxyCodeOption(QStringList() << QStringLiteral("p") << QStringLiteral("proxy"),
+ QStringLiteral("Write the proxy code to <filename>"), QStringLiteral("filename"));
+ parser.addOption(proxyCodeOption);
+
+ QCommandLineOption verboseOption(QStringList() << QStringLiteral("V") << QStringLiteral("verbose"),
+ QStringLiteral("Be verbose."));
+ parser.addOption(verboseOption);
+
+ parser.process(app);
+
+ adaptorFile = parser.value(adapterCodeOption);
+ globalClassName = parser.value(classNameOption);
+ includes = parser.values(addIncludeOption);
+ parentClassName = parser.value(adapterParentOption);
+ includeMocs = parser.isSet(mocIncludeOption);
+ skipNamespaces = parser.isSet(noNamespaceOption);
+ proxyFile = parser.value(proxyCodeOption);
+ verbose = parser.isSet(verboseOption);
+
+ wantedInterfaces = parser.positionalArguments();
+ if (!wantedInterfaces.isEmpty()) {
+ inputFile = wantedInterfaces.takeFirst();
- parseCmdLine(arguments);
+ QFileInfo inputInfo(inputFile);
+ if (!inputInfo.exists() || !inputInfo.isFile() || !inputInfo.isReadable()) {
+ qCritical("Error: Input %s is not a file or cannot be accessed\n", qPrintable(inputFile));
+ return 1;
+ }
+ }
QDBusIntrospection::Interfaces interfaces = readInput();
cleanInterfaces(interfaces);
diff --git a/src/tools/uic/cpp/cppwritedeclaration.cpp b/src/tools/uic/cpp/cppwritedeclaration.cpp
index 4c9d2db6df..3aadc878e3 100644
--- a/src/tools/uic/cpp/cppwritedeclaration.cpp
+++ b/src/tools/uic/cpp/cppwritedeclaration.cpp
@@ -44,27 +44,16 @@ QT_BEGIN_NAMESPACE
namespace {
void openNameSpaces(const QStringList &namespaceList, QTextStream &output) {
- if (namespaceList.empty())
- return;
- const QStringList::const_iterator cend = namespaceList.constEnd();
- for (QStringList::const_iterator it = namespaceList.constBegin(); it != cend; ++it) {
- if (!it->isEmpty()) {
+ for (auto it = namespaceList.begin(), end = namespaceList.end(); it != end; ++it) {
+ if (!it->isEmpty())
output << "namespace " << *it << " {\n";
- }
}
}
void closeNameSpaces(const QStringList &namespaceList, QTextStream &output) {
- if (namespaceList.empty())
- return;
-
- QListIterator<QString> it(namespaceList);
- it.toBack();
- while (it.hasPrevious()) {
- const QString ns = it.previous();
- if (!ns.isEmpty()) {
- output << "} // namespace " << ns << "\n";
- }
+ for (auto it = namespaceList.rbegin(), end = namespaceList.rend(); it != end; ++it) {
+ if (!it->isEmpty())
+ output << "} // namespace " << *it << "\n";
}
}
diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp
index 031b34b67e..df55ca29f1 100644
--- a/src/tools/uic/cpp/cppwriteinitialization.cpp
+++ b/src/tools/uic/cpp/cppwriteinitialization.cpp
@@ -84,10 +84,14 @@ namespace {
const QHash<QString, DomProperty *> properties = propertyMap(node->elementProperty());
output << "new QSpacerItem(";
+ int w = 0;
+ int h = 0;
if (properties.contains(QLatin1String("sizeHint"))) {
const DomSize *sizeHint = properties.value(QLatin1String("sizeHint"))->elementSize();
- output << sizeHint->elementWidth() << ", " << sizeHint->elementHeight() << ", ";
+ w = sizeHint->elementWidth();
+ h = sizeHint->elementHeight();
}
+ output << w << ", " << h << ", ";
// size type
QString sizeType = properties.contains(QLatin1String("sizeType")) ?
@@ -1713,9 +1717,7 @@ void WriteInitialization::writeColorGroup(DomColorGroup *colorGroup, const QStri
// new format
const QList<DomColorRole *> colorRoles = colorGroup->elementColorRole();
- QListIterator<DomColorRole *> itRole(colorRoles);
- while (itRole.hasNext()) {
- const DomColorRole *colorRole = itRole.next();
+ for (const DomColorRole *colorRole : colorRoles) {
if (colorRole->hasAttributeRole()) {
const QString brushName = writeBrushInitialization(colorRole->elementBrush());
m_output << m_indent << paletteName << ".setBrush(" << group
@@ -1792,9 +1794,7 @@ void WriteInitialization::writeBrush(const DomBrush *brush, const QString &brush
}
const QList<DomGradientStop *> stops = gradient->elementGradientStop();
- QListIterator<DomGradientStop *> it(stops);
- while (it.hasNext()) {
- const DomGradientStop *stop = it.next();
+ for (const DomGradientStop *stop : stops) {
const DomColor *color = stop->elementColor();
m_output << m_indent << gradientName << ".setColorAt("
<< stop->attributePosition() << ", "