diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2015-07-09 21:40:58 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2015-07-10 12:21:07 +0000 |
commit | 58f0b6b5a84f93e74ff99bb9481c9142bda32270 (patch) | |
tree | 956062163d031037c3ba0d4d9b5d0e52cc47a2cd /src/tools/qdoc | |
parent | 32a5026f36018e124acd0794847d8fed3e27ed40 (diff) |
qdoc: don't hold ParsedParameter in a QList
ParsedParameter is larger than a void*, so holding it in QList
is needlessly inefficient. Worse, the code could come to depend
on the fragile property of (inefficient) QLists that references
to elements therein never are invalidated.
Fix by marking it movable, and holding in a QVector instead.
Change-Id: I5b1bea9ef7b796a790d8e86404531ae19a4aca66
Reviewed-by: Martin Smith <martin.smith@digia.com>
Diffstat (limited to 'src/tools/qdoc')
-rw-r--r-- | src/tools/qdoc/cppcodeparser.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/tools/qdoc/cppcodeparser.h b/src/tools/qdoc/cppcodeparser.h index 4fb428fc72..733418e27a 100644 --- a/src/tools/qdoc/cppcodeparser.h +++ b/src/tools/qdoc/cppcodeparser.h @@ -58,7 +58,8 @@ class CppCodeParser : public CodeParser QString defaultValue_; ParsedParameter() : qPrivateSignal_(false) { } }; - typedef QList<ParsedParameter> ParsedParameterList; + friend class QTypeInfo<ParsedParameter>; + typedef QVector<ParsedParameter> ParsedParameterList; struct ExtraFuncData { Aggregate* root; // Used as the parent. @@ -186,6 +187,7 @@ protected: QString exampleNameFilter; QString exampleImageFilter; }; +Q_DECLARE_TYPEINFO(CppCodeParser::ParsedParameter, Q_MOVABLE_TYPE); #define COMMAND_ABSTRACT Doc::alias("abstract") #define COMMAND_CLASS Doc::alias("class") |