From 9b80ed9d5662069351f42330f0521db866545c22 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sun, 5 Oct 2014 21:42:05 +0200 Subject: QCss: mark many classes as movable Most of these are held in QVectors, so let QVector use the optimized reallocation strategy. Change-Id: I6c2182465c283705bd5ec761e3d2d3d072bc6207 Reviewed-by: Simon Hausmann Reviewed-by: Friedemann Kleint --- src/gui/text/qcssparser_p.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/gui/text/qcssparser_p.h') diff --git a/src/gui/text/qcssparser_p.h b/src/gui/text/qcssparser_p.h index 65e9b5a0ba..5e853c40d0 100644 --- a/src/gui/text/qcssparser_p.h +++ b/src/gui/text/qcssparser_p.h @@ -69,6 +69,11 @@ QT_END_NAMESPACE # undef Value #endif +#define QT_CSS_DECLARE_TYPEINFO(Class, Type) \ + } /* namespace QCss */ \ + Q_DECLARE_TYPEINFO(QCss:: Class, Type); \ + namespace QCss { + QT_BEGIN_NAMESPACE namespace QCss @@ -367,6 +372,7 @@ struct Value Q_GUI_EXPORT QString toString() const; }; +QT_CSS_DECLARE_TYPEINFO(Value, Q_MOVABLE_TYPE) struct ColorData { ColorData() : role(QPalette::NoRole), type(Invalid) {} @@ -376,6 +382,7 @@ struct ColorData { QPalette::ColorRole role; enum { Invalid, Color, Role} type; }; +QT_CSS_DECLARE_TYPEINFO(ColorData, Q_MOVABLE_TYPE) struct BrushData { BrushData() : role(QPalette::NoRole), type(Invalid) {} @@ -385,6 +392,7 @@ struct BrushData { QPalette::ColorRole role; enum { Invalid, Brush, Role, DependsOnThePalette } type; }; +QT_CSS_DECLARE_TYPEINFO(BrushData, Q_MOVABLE_TYPE) struct BackgroundData { BrushData brush; @@ -392,17 +400,20 @@ struct BackgroundData { Repeat repeat; Qt::Alignment alignment; }; +QT_CSS_DECLARE_TYPEINFO(BackgroundData, Q_MOVABLE_TYPE) struct LengthData { qreal number; enum { None, Px, Ex, Em } unit; }; +QT_CSS_DECLARE_TYPEINFO(LengthData, Q_PRIMITIVE_TYPE) struct BorderData { LengthData width; BorderStyle style; BrushData color; }; +QT_CSS_DECLARE_TYPEINFO(BorderData, Q_MOVABLE_TYPE) // 1. StyleRule - x:hover, y:clicked > z:checked { prop1: value1; prop2: value2; } @@ -452,6 +463,7 @@ struct Q_GUI_EXPORT Declaration void borderImageValue(QString *image, int *cuts, TileMode *h, TileMode *v) const; }; +QT_CSS_DECLARE_TYPEINFO(Declaration, Q_MOVABLE_TYPE) const quint64 PseudoClass_Unknown = Q_UINT64_C(0x0000000000000000); const quint64 PseudoClass_Enabled = Q_UINT64_C(0x0000000000000001); @@ -511,6 +523,7 @@ struct Pseudo QString function; bool negated; }; +QT_CSS_DECLARE_TYPEINFO(Pseudo, Q_MOVABLE_TYPE) struct AttributeSelector { @@ -526,6 +539,7 @@ struct AttributeSelector QString value; ValueMatchType valueMatchCriterium; }; +QT_CSS_DECLARE_TYPEINFO(AttributeSelector, Q_MOVABLE_TYPE) struct BasicSelector { @@ -546,6 +560,7 @@ struct BasicSelector Relation relationToNext; }; +QT_CSS_DECLARE_TYPEINFO(BasicSelector, Q_MOVABLE_TYPE) struct Q_GUI_EXPORT Selector { @@ -554,6 +569,7 @@ struct Q_GUI_EXPORT Selector quint64 pseudoClass(quint64 *negated = 0) const; QString pseudoElement() const; }; +QT_CSS_DECLARE_TYPEINFO(Selector, Q_MOVABLE_TYPE) struct StyleRule { @@ -562,24 +578,28 @@ struct StyleRule QVector declarations; int order; }; +QT_CSS_DECLARE_TYPEINFO(StyleRule, Q_MOVABLE_TYPE) struct MediaRule { QStringList media; QVector styleRules; }; +QT_CSS_DECLARE_TYPEINFO(MediaRule, Q_MOVABLE_TYPE) struct PageRule { QString selector; QVector declarations; }; +QT_CSS_DECLARE_TYPEINFO(PageRule, Q_MOVABLE_TYPE) struct ImportRule { QString href; QStringList media; }; +QT_CSS_DECLARE_TYPEINFO(ImportRule, Q_MOVABLE_TYPE) enum StyleSheetOrigin { StyleSheetOrigin_Unspecified, @@ -603,6 +623,8 @@ struct StyleSheet Q_GUI_EXPORT void buildIndexes(Qt::CaseSensitivity nameCaseSensitivity = Qt::CaseSensitive); }; +QT_CSS_DECLARE_TYPEINFO(StyleSheet, Q_MOVABLE_TYPE) + class Q_GUI_EXPORT StyleSelector { @@ -695,6 +717,7 @@ struct Symbol int start, len; Q_GUI_EXPORT QString lexem() const; }; +QT_CSS_DECLARE_TYPEINFO(Symbol, Q_MOVABLE_TYPE) class Q_GUI_EXPORT Scanner { @@ -832,6 +855,7 @@ Q_DECLARE_METATYPE( QCss::BackgroundData ) Q_DECLARE_METATYPE( QCss::LengthData ) Q_DECLARE_METATYPE( QCss::BorderData ) +#undef QT_CSS_DECLARE_TYPEINFO #endif // QT_NO_CSSPARSER -- cgit v1.2.3