diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2019-07-25 10:40:21 +0300 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2019-08-03 22:12:42 +0300 |
commit | 52b6560708ebcfeeaebdf2b43f368c610aa905a4 (patch) | |
tree | 376c0e66a59dd441ba74dd4491c9d4b8e677425e /src/qtwaylandscanner | |
parent | 01e8a898be2aafa7dd3e198202b5bc8f22fcd413 (diff) |
QWaylandScanner: port from QList to std::vector
QList is going away in Qt 6, and CoW is not needed, as containers and
elements are only ever moved, not copied, and NRVO is in effect
everywhere.
Change-Id: Ie738da3619f0b8048fbd07e5911db0960133d553
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Diffstat (limited to 'src/qtwaylandscanner')
-rw-r--r-- | src/qtwaylandscanner/qtwaylandscanner.cpp | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/src/qtwaylandscanner/qtwaylandscanner.cpp b/src/qtwaylandscanner/qtwaylandscanner.cpp index da58fc567..9691b857f 100644 --- a/src/qtwaylandscanner/qtwaylandscanner.cpp +++ b/src/qtwaylandscanner/qtwaylandscanner.cpp @@ -40,7 +40,8 @@ #include <QCoreApplication> #include <QFile> #include <QXmlStreamReader> -#include <QtCore/QList> + +#include <vector> class Scanner { @@ -63,7 +64,7 @@ private: struct WaylandEnum { QByteArray name; - QList<WaylandEnumEntry> entries; + std::vector<WaylandEnumEntry> entries; }; struct WaylandArgument { @@ -78,16 +79,16 @@ private: bool request; QByteArray name; QByteArray type; - QList<WaylandArgument> arguments; + std::vector<WaylandArgument> arguments; }; struct WaylandInterface { QByteArray name; int version; - QList<WaylandEnum> enums; - QList<WaylandEvent> events; - QList<WaylandEvent> requests; + std::vector<WaylandEnum> enums; + std::vector<WaylandEvent> events; + std::vector<WaylandEvent> requests; }; bool isServerSide(); @@ -101,11 +102,11 @@ private: Scanner::WaylandInterface readInterface(QXmlStreamReader &xml); QByteArray waylandToCType(const QByteArray &waylandType, const QByteArray &interface); QByteArray waylandToQtType(const QByteArray &waylandType, const QByteArray &interface, bool cStyleArray); - const Scanner::WaylandArgument *newIdArgument(const QList<WaylandArgument> &arguments); + const Scanner::WaylandArgument *newIdArgument(const std::vector<WaylandArgument> &arguments); void printEvent(const WaylandEvent &e, bool omitNames = false, bool withResource = false); void printEventHandlerSignature(const WaylandEvent &e, const char *interfaceName, bool deepIndent = true); - void printEnums(const QList<WaylandEnum> &enums); + void printEnums(const std::vector<WaylandEnum> &enums); QByteArray stripInterfaceName(const QByteArray &name); bool ignoreInterface(const QByteArray &name); @@ -204,7 +205,7 @@ Scanner::WaylandEvent Scanner::readEvent(QXmlStreamReader &xml, bool request) .summary = byteArrayValue(xml, "summary"), .allowNull = boolValue(xml, "allowNull"), }; - event.arguments << argument; + event.arguments.push_back(std::move(argument)); } xml.skipCurrentElement(); @@ -226,7 +227,7 @@ Scanner::WaylandEnum Scanner::readEnum(QXmlStreamReader &xml) .value = byteArrayValue(xml, "value"), .summary = byteArrayValue(xml, "summary"), }; - result.entries << entry; + result.entries.push_back(std::move(entry)); } xml.skipCurrentElement(); @@ -247,11 +248,11 @@ Scanner::WaylandInterface Scanner::readInterface(QXmlStreamReader &xml) while (xml.readNextStartElement()) { if (xml.name() == "event") - interface.events << readEvent(xml, false); + interface.events.push_back(readEvent(xml, false)); else if (xml.name() == "request") - interface.requests << readEvent(xml, true); + interface.requests.push_back(readEvent(xml, true)); else if (xml.name() == "enum") - interface.enums << readEnum(xml); + interface.enums.push_back(readEnum(xml)); else xml.skipCurrentElement(); } @@ -293,7 +294,7 @@ QByteArray Scanner::waylandToQtType(const QByteArray &waylandType, const QByteAr return waylandToCType(waylandType, interface); } -const Scanner::WaylandArgument *Scanner::newIdArgument(const QList<WaylandArgument> &arguments) +const Scanner::WaylandArgument *Scanner::newIdArgument(const std::vector<WaylandArgument> &arguments) { for (const WaylandArgument &a : arguments) { if (a.type == "new_id") @@ -368,7 +369,7 @@ void Scanner::printEventHandlerSignature(const WaylandEvent &e, const char *inte printf(")"); } -void Scanner::printEnums(const QList<WaylandEnum> &enums) +void Scanner::printEnums(const std::vector<WaylandEnum> &enums) { for (const WaylandEnum &e : enums) { printf("\n"); @@ -428,11 +429,11 @@ bool Scanner::process() //QByteArray preProcessorProtocolName = QByteArray(m_protocolName).replace('-', '_').toUpper(); QByteArray preProcessorProtocolName = QByteArray(m_protocolName).toUpper(); - QList<WaylandInterface> interfaces; + std::vector<WaylandInterface> interfaces; while (m_xml->readNextStartElement()) { if (m_xml->name() == "interface") - interfaces << readInterface(*m_xml); + interfaces.push_back(readInterface(*m_xml)); else m_xml->skipCurrentElement(); } @@ -546,7 +547,7 @@ bool Scanner::process() printEnums(interface.enums); - bool hasEvents = !interface.events.isEmpty(); + bool hasEvents = !interface.events.empty(); if (hasEvents) { printf("\n"); @@ -567,7 +568,7 @@ bool Scanner::process() printf(" virtual void %s_bind_resource(Resource *resource);\n", interfaceNameStripped); printf(" virtual void %s_destroy_resource(Resource *resource);\n", interfaceNameStripped); - bool hasRequests = !interface.requests.isEmpty(); + bool hasRequests = !interface.requests.empty(); if (hasRequests) { printf("\n"); @@ -781,7 +782,7 @@ bool Scanner::process() printf(" }\n"); printf("\n"); - bool hasRequests = !interface.requests.isEmpty(); + bool hasRequests = !interface.requests.empty(); QByteArray interfaceMember = hasRequests ? "&m_" + interface.name + "_interface" : QByteArray("nullptr"); @@ -997,7 +998,7 @@ bool Scanner::process() printEnums(interface.enums); - if (!interface.requests.isEmpty()) { + if (!interface.requests.empty()) { printf("\n"); for (const WaylandEvent &e : interface.requests) { const WaylandArgument *new_id = newIdArgument(e.arguments); @@ -1014,7 +1015,7 @@ bool Scanner::process() } } - bool hasEvents = !interface.events.isEmpty(); + bool hasEvents = !interface.events.empty(); if (hasEvents) { printf("\n"); @@ -1092,7 +1093,7 @@ bool Scanner::process() QByteArray stripped = stripInterfaceName(interface.name); const char *interfaceNameStripped = stripped.constData(); - bool hasEvents = !interface.events.isEmpty(); + bool hasEvents = !interface.events.empty(); printf(" %s::%s(struct ::wl_registry *registry, int id, int version)\n", interfaceName, interfaceName); printf(" {\n"); @@ -1182,7 +1183,7 @@ bool Scanner::process() printf(" %s.alloc = 0;\n", arrayName); printf("\n"); } - int actualArgumentCount = new_id ? e.arguments.size() - 1 : e.arguments.size(); + int actualArgumentCount = new_id ? int(e.arguments.size()) - 1 : int(e.arguments.size()); printf(" %s%s_%s(\n", new_id ? "return " : "", interfaceName, e.name.constData()); printf(" m_%s%s", interfaceName, actualArgumentCount > 0 ? "," : ""); bool needsComma = false; |