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>
bb10
Marc Mutz 2015-07-09 21:40:58 +02:00
parent 32a5026f36
commit 58f0b6b5a8
1 changed files with 3 additions and 1 deletions

View File

@ -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")