diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/Qt6CoreConfigExtras.cmake.in | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qobject.cpp | 33 | ||||
-rw-r--r-- | src/corelib/kernel/qtmetamacros.h | 11 | ||||
-rw-r--r-- | src/tools/moc/keywords.cpp | 365 | ||||
-rw-r--r-- | src/tools/moc/moc.cpp | 14 | ||||
-rw-r--r-- | src/tools/moc/token.h | 3 | ||||
-rw-r--r-- | src/tools/moc/util/generate_keywords.cpp | 1 |
7 files changed, 240 insertions, 189 deletions
diff --git a/src/corelib/Qt6CoreConfigExtras.cmake.in b/src/corelib/Qt6CoreConfigExtras.cmake.in index 8980f1bfa6..acde0b98f2 100644 --- a/src/corelib/Qt6CoreConfigExtras.cmake.in +++ b/src/corelib/Qt6CoreConfigExtras.cmake.in @@ -20,7 +20,7 @@ if (NOT QT_NO_CREATE_TARGETS) set_property(TARGET @QT_CMAKE_EXPORT_NAMESPACE@::Core PROPERTY INTERFACE_COMPILE_FEATURES cxx_decltype) endif() -set(CMAKE_AUTOMOC_MACRO_NAMES "Q_OBJECT" "Q_GADGET" "Q_NAMESPACE" "Q_NAMESPACE_EXPORT") +set(CMAKE_AUTOMOC_MACRO_NAMES "Q_OBJECT" "Q_GADGET" "Q_GADGET_EXPORT" "Q_NAMESPACE" "Q_NAMESPACE_EXPORT") # install layout information, following what qmake -query provides get_filename_component(QT@PROJECT_VERSION_MAJOR@_INSTALL_PREFIX ${CMAKE_CURRENT_LIST_DIR}/../@QT_INVERSE_CONFIG_INSTALL_DIR@ ABSOLUTE) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index d4b345c2d4..8d131cecc5 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -4400,8 +4400,8 @@ QDebug operator<<(QDebug dbg, const QObject *o) \since 5.5 This macro registers an enum type with the meta-object system. - It must be placed after the enum declaration in a class that has the Q_OBJECT or the - Q_GADGET macro. For namespaces use \l Q_ENUM_NS() instead. + It must be placed after the enum declaration in a class that has the Q_OBJECT, + Q_GADGET or Q_GADGET_EXPORT macro. For namespaces use \l Q_ENUM_NS() instead. For example: @@ -4519,7 +4519,7 @@ QDebug operator<<(QDebug dbg, const QObject *o) \snippet signalsandslots/signalsandslots.h 3 \note This macro requires the class to be a subclass of QObject. Use - Q_GADGET instead of Q_OBJECT to enable the meta object system's support + Q_GADGET or Q_GADGET_EXPORT instead of Q_OBJECT to enable the meta object system's support for enums in a class that is not a QObject subclass. \sa {Meta-Object System}, {Signals and Slots}, {Qt's Property System} @@ -4540,6 +4540,33 @@ QDebug operator<<(QDebug dbg, const QObject *o) Q_GADGET makes a class member, \c{staticMetaObject}, available. \c{staticMetaObject} is of type QMetaObject and provides access to the enums declared with Q_ENUMS. + + \sa Q_GADGET_EXPORT +*/ + +/*! + \macro Q_GADGET_EXPORT(EXPORT_MACRO) + \relates QObject + \since 6.3 + + The Q_GADGET_EXPORT macro works exactly like the Q_GADGET macro. + However, the \c{staticMetaObject} variable that is made available (see + Q_GADGET) is declared with the supplied \a EXPORT_MACRO qualifier. This is + useful if the object needs to be exported from a dynamic library, but the + enclosing class as a whole should not be (e.g. because it consists of mostly + inline functions). + + For example: + + \code + class Point { + Q_GADGET_EXPORT(EXPORT_MACRO) + Q_PROPERTY(int x MEMBER x) + Q_PROPERTY(int y MEMBER y) + ~~~ + \endcode + + \sa Q_GADGET, {Creating Shared Libraries} */ /*! diff --git a/src/corelib/kernel/qtmetamacros.h b/src/corelib/kernel/qtmetamacros.h index 96b1ada57e..fb4dfc5b0d 100644 --- a/src/corelib/kernel/qtmetamacros.h +++ b/src/corelib/kernel/qtmetamacros.h @@ -171,10 +171,10 @@ private: \ #define Q_OBJECT_FAKE Q_OBJECT QT_ANNOTATE_CLASS(qt_fake, "") #ifndef QT_NO_META_MACROS -/* qmake ignore Q_GADGET */ -#define Q_GADGET \ +/* qmake ignore Q_GADGET_EXPORT */ +#define Q_GADGET_EXPORT(...) \ public: \ - static const QMetaObject staticMetaObject; \ + static __VA_ARGS__ const QMetaObject staticMetaObject; \ void qt_check_for_QGADGET_macro(); \ typedef void QtGadgetHelper; \ private: \ @@ -185,7 +185,10 @@ private: \ QT_ANNOTATE_CLASS(qt_qgadget, "") \ /*end*/ -/* qmake ignore Q_NAMESPACE_EXPORT */ +/* qmake ignore Q_GADGET */ +#define Q_GADGET Q_GADGET_EXPORT() + + /* qmake ignore Q_NAMESPACE_EXPORT */ #define Q_NAMESPACE_EXPORT(...) \ extern __VA_ARGS__ const QMetaObject staticMetaObject; \ QT_ANNOTATE_CLASS(qt_qnamespace, "") \ diff --git a/src/tools/moc/keywords.cpp b/src/tools/moc/keywords.cpp index cc7d747f5b..c87fbca4f4 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,579,576,0,0,0,0,0, + {0,0,0,0,0,0,0,0,0,586,583,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 579,252,577,580,8,38,239,578,25,26,236,234,30,235,27,237, + 586,252,584,587,8,38,239,585,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,582,32,238,8, + 8,21,8,8,8,8,8,8,8,8,8,31,589,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,497,0,0,0, + 0,0,0,0,0,0,0,0,290,222,0,0,504,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,521,0,0,0,0,0,0,0,0,0,0,357, + 0,0,0,0,528,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, - 585,585,585,585,585,585,585,585,585,585,0,0,0,0,0,0, + 592,592,592,592,592,592,592,592,592,592,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,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,584,0,0,0,0,583, + 0,0,0,0,0,0,0,0,0,0,591,0,0,0,0,590, 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,494,0,0,0,300,0,0,0,0,0,0,0,0,0,0, + 0,501,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,475,424,408,416,380,0,484,0,0,0,565,364,358, - 386,0,557,472,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,482,431,415,423,380,0,491,0,0,0,572,364,358, + 393,0,564,479,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,394,0,0,0, - 0,0,387,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,401,0,0,0, + 0,0,394,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,511,0,0,0,0,0,388, + 0,0,0,0,0,0,0,0,0,518,0,0,0,0,0,395, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, @@ -403,7 +403,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,412,0,0,0,0,0,0,0,0,0,0,0,413, + 0,0,0,419,0,0,0,0,0,0,0,0,0,0,0,420, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -411,14 +411,14 @@ 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,420,0,0,0,0,0,0,0,0,0,0,0,421, + 0,0,0,427,0,0,0,0,0,0,0,0,0,0,0,428, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,454,432,0,0,437,0,0,0,446,0,0, + 0,0,0,0,0,461,439,0,0,444,0,0,0,453,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, @@ -426,7 +426,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,540,0,473,0,0,0,501,0,0,507,0,0,0, + 0,0,0,547,0,480,0,0,0,508,0,0,514,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, @@ -435,7 +435,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,486,0,533,0,0,0,0,0,0,0,0,0, + 0,0,0,0,493,0,540,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -443,7 +443,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, - 549,0,0,517,0,0,0,0,0,0,0,0,0,0,0,0, + 556,0,0,524,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} }; @@ -841,202 +841,209 @@ static const struct {CHARACTER, 0, 71, 383, CHARACTER}, {CHARACTER, 0, 69, 384, CHARACTER}, {CHARACTER, 0, 84, 385, CHARACTER}, - {Q_GADGET_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 44, 0, 0, CHARACTER}, - {CHARACTER, 45, 0, 0, CHARACTER}, + {Q_GADGET_TOKEN, 0, 95, 386, CHARACTER}, + {CHARACTER, 0, 69, 387, CHARACTER}, + {CHARACTER, 0, 88, 388, CHARACTER}, {CHARACTER, 0, 80, 389, CHARACTER}, - {CHARACTER, 0, 69, 390, CHARACTER}, + {CHARACTER, 0, 79, 390, CHARACTER}, {CHARACTER, 0, 82, 391, CHARACTER}, {CHARACTER, 0, 84, 392, CHARACTER}, - {CHARACTER, 0, 89, 393, CHARACTER}, + {Q_GADGET_EXPORT_TOKEN, 0, 0, 0, CHARACTER}, + {CHARACTER, 44, 0, 0, CHARACTER}, + {CHARACTER, 45, 0, 0, CHARACTER}, + {CHARACTER, 0, 80, 396, CHARACTER}, + {CHARACTER, 0, 69, 397, CHARACTER}, + {CHARACTER, 0, 82, 398, CHARACTER}, + {CHARACTER, 0, 84, 399, CHARACTER}, + {CHARACTER, 0, 89, 400, CHARACTER}, {Q_PROPERTY_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 85, 395, CHARACTER}, - {CHARACTER, 0, 71, 396, CHARACTER}, - {CHARACTER, 0, 73, 397, CHARACTER}, - {CHARACTER, 0, 78, 398, CHARACTER}, - {CHARACTER, 0, 95, 399, CHARACTER}, - {CHARACTER, 0, 77, 400, CHARACTER}, - {CHARACTER, 0, 69, 401, CHARACTER}, - {CHARACTER, 0, 84, 402, CHARACTER}, - {CHARACTER, 0, 65, 403, CHARACTER}, - {CHARACTER, 0, 68, 404, CHARACTER}, - {CHARACTER, 0, 65, 405, CHARACTER}, - {CHARACTER, 0, 84, 406, CHARACTER}, - {CHARACTER, 0, 65, 407, CHARACTER}, + {CHARACTER, 0, 85, 402, CHARACTER}, + {CHARACTER, 0, 71, 403, CHARACTER}, + {CHARACTER, 0, 73, 404, CHARACTER}, + {CHARACTER, 0, 78, 405, CHARACTER}, + {CHARACTER, 0, 95, 406, CHARACTER}, + {CHARACTER, 0, 77, 407, CHARACTER}, + {CHARACTER, 0, 69, 408, CHARACTER}, + {CHARACTER, 0, 84, 409, CHARACTER}, + {CHARACTER, 0, 65, 410, CHARACTER}, + {CHARACTER, 0, 68, 411, CHARACTER}, + {CHARACTER, 0, 65, 412, CHARACTER}, + {CHARACTER, 0, 84, 413, CHARACTER}, + {CHARACTER, 0, 65, 414, CHARACTER}, {Q_PLUGIN_METADATA_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 78, 409, CHARACTER}, - {CHARACTER, 0, 85, 410, CHARACTER}, - {CHARACTER, 0, 77, 411, CHARACTER}, + {CHARACTER, 0, 78, 416, CHARACTER}, + {CHARACTER, 0, 85, 417, CHARACTER}, + {CHARACTER, 0, 77, 418, CHARACTER}, {Q_ENUM_TOKEN, 46, 0, 0, CHARACTER}, {Q_ENUMS_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 78, 414, CHARACTER}, - {CHARACTER, 0, 83, 415, CHARACTER}, + {CHARACTER, 0, 78, 421, CHARACTER}, + {CHARACTER, 0, 83, 422, CHARACTER}, {Q_ENUM_NS_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 76, 417, CHARACTER}, - {CHARACTER, 0, 65, 418, CHARACTER}, - {CHARACTER, 0, 71, 419, CHARACTER}, + {CHARACTER, 0, 76, 424, CHARACTER}, + {CHARACTER, 0, 65, 425, CHARACTER}, + {CHARACTER, 0, 71, 426, CHARACTER}, {Q_FLAG_TOKEN, 47, 0, 0, CHARACTER}, {Q_FLAGS_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 78, 422, CHARACTER}, - {CHARACTER, 0, 83, 423, CHARACTER}, + {CHARACTER, 0, 78, 429, CHARACTER}, + {CHARACTER, 0, 83, 430, CHARACTER}, {Q_FLAG_NS_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 69, 425, CHARACTER}, - {CHARACTER, 0, 67, 426, CHARACTER}, - {CHARACTER, 0, 76, 427, CHARACTER}, - {CHARACTER, 0, 65, 428, CHARACTER}, - {CHARACTER, 0, 82, 429, CHARACTER}, - {CHARACTER, 0, 69, 430, CHARACTER}, - {CHARACTER, 0, 95, 431, CHARACTER}, + {CHARACTER, 0, 69, 432, CHARACTER}, + {CHARACTER, 0, 67, 433, CHARACTER}, + {CHARACTER, 0, 76, 434, CHARACTER}, + {CHARACTER, 0, 65, 435, CHARACTER}, + {CHARACTER, 0, 82, 436, CHARACTER}, + {CHARACTER, 0, 69, 437, CHARACTER}, + {CHARACTER, 0, 95, 438, CHARACTER}, {CHARACTER, 48, 0, 0, CHARACTER}, - {CHARACTER, 0, 76, 433, CHARACTER}, - {CHARACTER, 0, 65, 434, CHARACTER}, - {CHARACTER, 0, 71, 435, CHARACTER}, - {CHARACTER, 0, 83, 436, CHARACTER}, + {CHARACTER, 0, 76, 440, CHARACTER}, + {CHARACTER, 0, 65, 441, CHARACTER}, + {CHARACTER, 0, 71, 442, CHARACTER}, + {CHARACTER, 0, 83, 443, CHARACTER}, {Q_DECLARE_FLAGS_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 78, 438, CHARACTER}, - {CHARACTER, 0, 84, 439, CHARACTER}, - {CHARACTER, 0, 69, 440, CHARACTER}, - {CHARACTER, 0, 82, 441, CHARACTER}, - {CHARACTER, 0, 70, 442, CHARACTER}, - {CHARACTER, 0, 65, 443, CHARACTER}, - {CHARACTER, 0, 67, 444, CHARACTER}, - {CHARACTER, 0, 69, 445, CHARACTER}, - {Q_DECLARE_INTERFACE_TOKEN, 0, 0, 0, CHARACTER}, + {CHARACTER, 0, 78, 445, CHARACTER}, + {CHARACTER, 0, 84, 446, CHARACTER}, {CHARACTER, 0, 69, 447, CHARACTER}, - {CHARACTER, 0, 84, 448, CHARACTER}, - {CHARACTER, 0, 65, 449, CHARACTER}, - {CHARACTER, 0, 84, 450, CHARACTER}, - {CHARACTER, 0, 89, 451, CHARACTER}, - {CHARACTER, 0, 80, 452, CHARACTER}, - {CHARACTER, 0, 69, 453, CHARACTER}, + {CHARACTER, 0, 82, 448, CHARACTER}, + {CHARACTER, 0, 70, 449, CHARACTER}, + {CHARACTER, 0, 65, 450, CHARACTER}, + {CHARACTER, 0, 67, 451, CHARACTER}, + {CHARACTER, 0, 69, 452, CHARACTER}, + {Q_DECLARE_INTERFACE_TOKEN, 0, 0, 0, CHARACTER}, + {CHARACTER, 0, 69, 454, CHARACTER}, + {CHARACTER, 0, 84, 455, CHARACTER}, + {CHARACTER, 0, 65, 456, CHARACTER}, + {CHARACTER, 0, 84, 457, CHARACTER}, + {CHARACTER, 0, 89, 458, CHARACTER}, + {CHARACTER, 0, 80, 459, CHARACTER}, + {CHARACTER, 0, 69, 460, CHARACTER}, {Q_DECLARE_METATYPE_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 88, 455, CHARACTER}, - {CHARACTER, 0, 84, 456, CHARACTER}, - {CHARACTER, 0, 69, 457, CHARACTER}, - {CHARACTER, 0, 78, 458, CHARACTER}, - {CHARACTER, 0, 83, 459, CHARACTER}, - {CHARACTER, 0, 73, 460, CHARACTER}, - {CHARACTER, 0, 79, 461, CHARACTER}, - {CHARACTER, 0, 78, 462, CHARACTER}, - {CHARACTER, 0, 95, 463, CHARACTER}, - {CHARACTER, 0, 73, 464, CHARACTER}, + {CHARACTER, 0, 88, 462, CHARACTER}, + {CHARACTER, 0, 84, 463, CHARACTER}, + {CHARACTER, 0, 69, 464, CHARACTER}, {CHARACTER, 0, 78, 465, CHARACTER}, - {CHARACTER, 0, 84, 466, CHARACTER}, - {CHARACTER, 0, 69, 467, CHARACTER}, - {CHARACTER, 0, 82, 468, CHARACTER}, - {CHARACTER, 0, 70, 469, CHARACTER}, - {CHARACTER, 0, 65, 470, CHARACTER}, - {CHARACTER, 0, 67, 471, CHARACTER}, - {CHARACTER, 0, 69, 445, CHARACTER}, - {CHARACTER, 49, 0, 0, CHARACTER}, - {CHARACTER, 0, 84, 474, CHARACTER}, - {CHARACTER, 0, 83, 420, CHARACTER}, - {CHARACTER, 0, 76, 476, CHARACTER}, + {CHARACTER, 0, 83, 466, CHARACTER}, + {CHARACTER, 0, 73, 467, CHARACTER}, + {CHARACTER, 0, 79, 468, CHARACTER}, + {CHARACTER, 0, 78, 469, CHARACTER}, + {CHARACTER, 0, 95, 470, CHARACTER}, + {CHARACTER, 0, 73, 471, CHARACTER}, + {CHARACTER, 0, 78, 472, CHARACTER}, + {CHARACTER, 0, 84, 473, CHARACTER}, + {CHARACTER, 0, 69, 474, CHARACTER}, + {CHARACTER, 0, 82, 475, CHARACTER}, + {CHARACTER, 0, 70, 476, CHARACTER}, {CHARACTER, 0, 65, 477, CHARACTER}, - {CHARACTER, 0, 83, 478, CHARACTER}, - {CHARACTER, 0, 83, 479, CHARACTER}, - {CHARACTER, 0, 73, 480, CHARACTER}, - {CHARACTER, 0, 78, 481, CHARACTER}, - {CHARACTER, 0, 70, 482, CHARACTER}, - {CHARACTER, 0, 79, 483, CHARACTER}, + {CHARACTER, 0, 67, 478, CHARACTER}, + {CHARACTER, 0, 69, 452, CHARACTER}, + {CHARACTER, 49, 0, 0, CHARACTER}, + {CHARACTER, 0, 84, 481, CHARACTER}, + {CHARACTER, 0, 83, 427, CHARACTER}, + {CHARACTER, 0, 76, 483, CHARACTER}, + {CHARACTER, 0, 65, 484, CHARACTER}, + {CHARACTER, 0, 83, 485, CHARACTER}, + {CHARACTER, 0, 83, 486, CHARACTER}, + {CHARACTER, 0, 73, 487, CHARACTER}, + {CHARACTER, 0, 78, 488, CHARACTER}, + {CHARACTER, 0, 70, 489, CHARACTER}, + {CHARACTER, 0, 79, 490, CHARACTER}, {Q_CLASSINFO_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 78, 485, CHARACTER}, + {CHARACTER, 0, 78, 492, CHARACTER}, {CHARACTER, 50, 0, 0, CHARACTER}, - {CHARACTER, 0, 69, 487, CHARACTER}, - {CHARACTER, 0, 82, 488, CHARACTER}, - {CHARACTER, 0, 70, 489, CHARACTER}, - {CHARACTER, 0, 65, 490, CHARACTER}, - {CHARACTER, 0, 67, 491, CHARACTER}, - {CHARACTER, 0, 69, 492, CHARACTER}, - {CHARACTER, 0, 83, 493, CHARACTER}, + {CHARACTER, 0, 69, 494, CHARACTER}, + {CHARACTER, 0, 82, 495, CHARACTER}, + {CHARACTER, 0, 70, 496, CHARACTER}, + {CHARACTER, 0, 65, 497, CHARACTER}, + {CHARACTER, 0, 67, 498, CHARACTER}, + {CHARACTER, 0, 69, 499, CHARACTER}, + {CHARACTER, 0, 83, 500, CHARACTER}, {Q_INTERFACES_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 108, 495, CHARACTER}, - {CHARACTER, 0, 115, 496, CHARACTER}, + {CHARACTER, 0, 108, 502, CHARACTER}, + {CHARACTER, 0, 115, 503, CHARACTER}, {SIGNALS, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 111, 498, CHARACTER}, - {CHARACTER, 0, 116, 499, CHARACTER}, - {CHARACTER, 0, 115, 500, CHARACTER}, + {CHARACTER, 0, 111, 505, CHARACTER}, + {CHARACTER, 0, 116, 506, CHARACTER}, + {CHARACTER, 0, 115, 507, CHARACTER}, {SLOTS, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 71, 502, CHARACTER}, - {CHARACTER, 0, 78, 503, CHARACTER}, - {CHARACTER, 0, 65, 504, CHARACTER}, - {CHARACTER, 0, 76, 505, CHARACTER}, - {Q_SIGNAL_TOKEN, 0, 83, 506, CHARACTER}, + {CHARACTER, 0, 71, 509, CHARACTER}, + {CHARACTER, 0, 78, 510, CHARACTER}, + {CHARACTER, 0, 65, 511, CHARACTER}, + {CHARACTER, 0, 76, 512, CHARACTER}, + {Q_SIGNAL_TOKEN, 0, 83, 513, CHARACTER}, {Q_SIGNALS_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 79, 508, CHARACTER}, - {CHARACTER, 0, 84, 509, CHARACTER}, - {Q_SLOT_TOKEN, 0, 83, 510, CHARACTER}, + {CHARACTER, 0, 79, 515, CHARACTER}, + {CHARACTER, 0, 84, 516, CHARACTER}, + {Q_SLOT_TOKEN, 0, 83, 517, CHARACTER}, {Q_SLOTS_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 86, 512, CHARACTER}, - {CHARACTER, 0, 65, 513, CHARACTER}, - {CHARACTER, 0, 84, 514, CHARACTER}, - {CHARACTER, 0, 69, 515, CHARACTER}, - {CHARACTER, 0, 95, 516, CHARACTER}, + {CHARACTER, 0, 86, 519, CHARACTER}, + {CHARACTER, 0, 65, 520, CHARACTER}, + {CHARACTER, 0, 84, 521, CHARACTER}, + {CHARACTER, 0, 69, 522, CHARACTER}, + {CHARACTER, 0, 95, 523, CHARACTER}, {CHARACTER, 51, 0, 0, CHARACTER}, - {CHARACTER, 0, 76, 518, CHARACTER}, - {CHARACTER, 0, 79, 519, CHARACTER}, - {CHARACTER, 0, 84, 520, CHARACTER}, + {CHARACTER, 0, 76, 525, CHARACTER}, + {CHARACTER, 0, 79, 526, CHARACTER}, + {CHARACTER, 0, 84, 527, CHARACTER}, {Q_PRIVATE_SLOT_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 95, 522, CHARACTER}, - {CHARACTER, 0, 77, 523, CHARACTER}, - {CHARACTER, 0, 79, 524, CHARACTER}, - {CHARACTER, 0, 67, 525, CHARACTER}, - {CHARACTER, 0, 95, 526, CHARACTER}, - {CHARACTER, 0, 67, 527, CHARACTER}, - {CHARACTER, 0, 79, 528, CHARACTER}, - {CHARACTER, 0, 77, 529, CHARACTER}, - {CHARACTER, 0, 80, 530, CHARACTER}, - {CHARACTER, 0, 65, 531, CHARACTER}, - {CHARACTER, 0, 84, 532, CHARACTER}, + {CHARACTER, 0, 95, 529, CHARACTER}, + {CHARACTER, 0, 77, 530, CHARACTER}, + {CHARACTER, 0, 79, 531, CHARACTER}, + {CHARACTER, 0, 67, 532, CHARACTER}, + {CHARACTER, 0, 95, 533, CHARACTER}, + {CHARACTER, 0, 67, 534, CHARACTER}, + {CHARACTER, 0, 79, 535, CHARACTER}, + {CHARACTER, 0, 77, 536, CHARACTER}, + {CHARACTER, 0, 80, 537, CHARACTER}, + {CHARACTER, 0, 65, 538, CHARACTER}, + {CHARACTER, 0, 84, 539, CHARACTER}, {Q_MOC_COMPAT_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 79, 534, CHARACTER}, - {CHARACTER, 0, 75, 535, CHARACTER}, - {CHARACTER, 0, 65, 536, CHARACTER}, - {CHARACTER, 0, 66, 537, CHARACTER}, - {CHARACTER, 0, 76, 538, CHARACTER}, - {CHARACTER, 0, 69, 539, CHARACTER}, + {CHARACTER, 0, 79, 541, CHARACTER}, + {CHARACTER, 0, 75, 542, CHARACTER}, + {CHARACTER, 0, 65, 543, CHARACTER}, + {CHARACTER, 0, 66, 544, CHARACTER}, + {CHARACTER, 0, 76, 545, CHARACTER}, + {CHARACTER, 0, 69, 546, CHARACTER}, {Q_INVOKABLE_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 82, 541, CHARACTER}, - {CHARACTER, 0, 73, 542, CHARACTER}, - {CHARACTER, 0, 80, 543, CHARACTER}, - {CHARACTER, 0, 84, 544, CHARACTER}, - {CHARACTER, 0, 65, 545, CHARACTER}, - {CHARACTER, 0, 66, 546, CHARACTER}, - {CHARACTER, 0, 76, 547, CHARACTER}, - {CHARACTER, 0, 69, 548, CHARACTER}, + {CHARACTER, 0, 82, 548, CHARACTER}, + {CHARACTER, 0, 73, 549, CHARACTER}, + {CHARACTER, 0, 80, 550, CHARACTER}, + {CHARACTER, 0, 84, 551, CHARACTER}, + {CHARACTER, 0, 65, 552, CHARACTER}, + {CHARACTER, 0, 66, 553, CHARACTER}, + {CHARACTER, 0, 76, 554, CHARACTER}, + {CHARACTER, 0, 69, 555, CHARACTER}, {Q_SCRIPTABLE_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 82, 550, CHARACTER}, - {CHARACTER, 0, 79, 551, CHARACTER}, - {CHARACTER, 0, 80, 552, CHARACTER}, - {CHARACTER, 0, 69, 553, CHARACTER}, - {CHARACTER, 0, 82, 554, CHARACTER}, - {CHARACTER, 0, 84, 555, CHARACTER}, - {CHARACTER, 0, 89, 556, CHARACTER}, + {CHARACTER, 0, 82, 557, CHARACTER}, + {CHARACTER, 0, 79, 558, CHARACTER}, + {CHARACTER, 0, 80, 559, CHARACTER}, + {CHARACTER, 0, 69, 560, CHARACTER}, + {CHARACTER, 0, 82, 561, CHARACTER}, + {CHARACTER, 0, 84, 562, CHARACTER}, + {CHARACTER, 0, 89, 563, CHARACTER}, {Q_PRIVATE_PROPERTY_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 69, 558, CHARACTER}, - {CHARACTER, 0, 86, 559, CHARACTER}, - {CHARACTER, 0, 73, 560, CHARACTER}, - {CHARACTER, 0, 83, 561, CHARACTER}, - {CHARACTER, 0, 73, 562, CHARACTER}, - {CHARACTER, 0, 79, 563, CHARACTER}, - {CHARACTER, 0, 78, 564, CHARACTER}, - {Q_REVISION_TOKEN, 0, 0, 0, CHARACTER}, - {CHARACTER, 0, 79, 566, CHARACTER}, - {CHARACTER, 0, 67, 567, CHARACTER}, - {CHARACTER, 0, 95, 568, CHARACTER}, + {CHARACTER, 0, 69, 565, CHARACTER}, + {CHARACTER, 0, 86, 566, CHARACTER}, + {CHARACTER, 0, 73, 567, CHARACTER}, + {CHARACTER, 0, 83, 568, CHARACTER}, {CHARACTER, 0, 73, 569, CHARACTER}, - {CHARACTER, 0, 78, 570, CHARACTER}, - {CHARACTER, 0, 67, 571, CHARACTER}, - {CHARACTER, 0, 76, 572, CHARACTER}, - {CHARACTER, 0, 85, 573, CHARACTER}, - {CHARACTER, 0, 68, 574, CHARACTER}, - {CHARACTER, 0, 69, 575, CHARACTER}, + {CHARACTER, 0, 79, 570, CHARACTER}, + {CHARACTER, 0, 78, 571, CHARACTER}, + {Q_REVISION_TOKEN, 0, 0, 0, CHARACTER}, + {CHARACTER, 0, 79, 573, CHARACTER}, + {CHARACTER, 0, 67, 574, CHARACTER}, + {CHARACTER, 0, 95, 575, CHARACTER}, + {CHARACTER, 0, 73, 576, CHARACTER}, + {CHARACTER, 0, 78, 577, CHARACTER}, + {CHARACTER, 0, 67, 578, CHARACTER}, + {CHARACTER, 0, 76, 579, CHARACTER}, + {CHARACTER, 0, 85, 580, CHARACTER}, + {CHARACTER, 0, 68, 581, CHARACTER}, + {CHARACTER, 0, 69, 582, CHARACTER}, {Q_MOC_INCLUDE_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, 581, HASH}, + {HASH, 0, 35, 588, 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 e02f787d83..3b3c325cfc 100644 --- a/src/tools/moc/moc.cpp +++ b/src/tools/moc/moc.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Copyright (C) 2019 Olivier Goffart <ogoffart@woboq.com> ** Contact: https://www.qt.io/licensing/ ** @@ -770,6 +770,12 @@ void Moc::parse() case Q_OBJECT_TOKEN: def.hasQObject = true; break; + case Q_GADGET_EXPORT_TOKEN: + next(LPAREN); + while (test(IDENTIFIER)) + {} + next(RPAREN); + Q_FALLTHROUGH(); case Q_GADGET_TOKEN: def.hasQGadget = true; break; @@ -847,6 +853,12 @@ void Moc::parse() if (def.classname != "Qt" && def.classname != "QObject" && def.superclassList.isEmpty()) error("Class contains Q_OBJECT macro but does not inherit from QObject"); break; + case Q_GADGET_EXPORT_TOKEN: + next(LPAREN); + while (test(IDENTIFIER)) + {} + next(RPAREN); + Q_FALLTHROUGH(); case Q_GADGET_TOKEN: def.hasQGadget = true; if (templateClass) diff --git a/src/tools/moc/token.h b/src/tools/moc/token.h index c11ec6a38c..e9696aaea2 100644 --- a/src/tools/moc/token.h +++ b/src/tools/moc/token.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the tools applications of the Qt Toolkit. @@ -154,6 +154,7 @@ QT_BEGIN_NAMESPACE F(RETURN) \ F(Q_OBJECT_TOKEN) \ F(Q_GADGET_TOKEN) \ + F(Q_GADGET_EXPORT_TOKEN) \ F(Q_NAMESPACE_TOKEN) \ F(Q_NAMESPACE_EXPORT_TOKEN) \ F(Q_PROPERTY_TOKEN) \ diff --git a/src/tools/moc/util/generate_keywords.cpp b/src/tools/moc/util/generate_keywords.cpp index 28c5eeff38..3ee46ca114 100644 --- a/src/tools/moc/util/generate_keywords.cpp +++ b/src/tools/moc/util/generate_keywords.cpp @@ -216,6 +216,7 @@ static const Keyword keywords[] = { { "Q_NAMESPACE", "Q_NAMESPACE_TOKEN" }, { "Q_NAMESPACE_EXPORT", "Q_NAMESPACE_EXPORT_TOKEN" }, { "Q_GADGET", "Q_GADGET_TOKEN" }, + { "Q_GADGET_EXPORT", "Q_GADGET_EXPORT_TOKEN" }, { "Q_PROPERTY", "Q_PROPERTY_TOKEN" }, { "Q_PLUGIN_METADATA", "Q_PLUGIN_METADATA_TOKEN" }, { "Q_ENUMS", "Q_ENUMS_TOKEN" }, |