diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2019-06-06 15:35:06 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2019-06-06 19:00:41 +0200 |
commit | 6e42979518aa0697ff31706616ddbc05486f1864 (patch) | |
tree | 06de55baaed993b51af517dba8f230fab749882c /src/tools | |
parent | 5505d25be972948db1621e1511b89b4144aa8bfc (diff) | |
parent | 2a302a73613d68475e667f69b8e36ce07853c813 (diff) |
Merge "Merge remote-tracking branch 'origin/dev' into wip/qt6"
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/androiddeployqt/main.cpp | 19 | ||||
-rw-r--r-- | src/tools/bootstrap/bootstrap.pro | 1 | ||||
-rw-r--r-- | src/tools/moc/preprocessor.cpp | 3 | ||||
-rw-r--r-- | src/tools/qlalr/cppgenerator.cpp | 4 | ||||
-rw-r--r-- | src/tools/qlalr/lalr.cpp | 2 | ||||
-rw-r--r-- | src/tools/qlalr/lalr.h | 96 | ||||
-rw-r--r-- | src/tools/tracegen/etw.cpp | 2 | ||||
-rw-r--r-- | src/tools/uic/cpp/cppwriteinitialization.cpp | 38 | ||||
-rw-r--r-- | src/tools/uic/cpp/cppwriteinitialization.h | 6 | ||||
-rw-r--r-- | src/tools/uic/driver.cpp | 38 | ||||
-rw-r--r-- | src/tools/uic/driver.h | 12 |
11 files changed, 79 insertions, 142 deletions
diff --git a/src/tools/androiddeployqt/main.cpp b/src/tools/androiddeployqt/main.cpp index 01c392f8f9..65d95362f7 100644 --- a/src/tools/androiddeployqt/main.cpp +++ b/src/tools/androiddeployqt/main.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2019 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the tools applications of the Qt Toolkit. @@ -52,6 +52,21 @@ #define QT_POPEN_READ "r" #endif +class ActionTimer +{ + qint64 started; +public: + ActionTimer() = default; + void start() + { + started = QDateTime::currentMSecsSinceEpoch(); + } + int elapsed() + { + return int(QDateTime::currentMSecsSinceEpoch() - started); + } +}; + static const bool mustReadOutputAnyway = true; // pclose seems to return the wrong error code unless we read the output void deleteRecursively(const QString &dirName) @@ -138,7 +153,7 @@ struct Options bool gradle; bool auxMode; bool stripLibraries = true; - QTime timer; + ActionTimer timer; // External tools QString sdkPath; diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro index 708211279c..3aeca6e7af 100644 --- a/src/tools/bootstrap/bootstrap.pro +++ b/src/tools/bootstrap/bootstrap.pro @@ -53,6 +53,7 @@ SOURCES += \ ../../corelib/io/qloggingregistry.cpp \ ../../corelib/io/qurl.cpp \ ../../corelib/io/qurlidna.cpp \ + ../../corelib/io/qurlquery.cpp \ ../../corelib/io/qurlrecode.cpp \ ../../corelib/kernel/qcoreapplication.cpp \ ../../corelib/kernel/qcoreglobaldata.cpp \ diff --git a/src/tools/moc/preprocessor.cpp b/src/tools/moc/preprocessor.cpp index e83125925d..d135bddb4c 100644 --- a/src/tools/moc/preprocessor.cpp +++ b/src/tools/moc/preprocessor.cpp @@ -241,7 +241,8 @@ Symbols Preprocessor::tokenize(const QByteArray& input, int lineNum, Preprocesso if (!*data || *data != '.') { token = INTEGER_LITERAL; if (data - lexem == 1 && - (*data == 'x' || *data == 'X') + (*data == 'x' || *data == 'X' + || *data == 'b' || *data == 'B') && *lexem == '0') { ++data; while (is_hex_char(*data) || *data == '\'') diff --git a/src/tools/qlalr/cppgenerator.cpp b/src/tools/qlalr/cppgenerator.cpp index 10b2d173ab..ee17be041e 100644 --- a/src/tools/qlalr/cppgenerator.cpp +++ b/src/tools/qlalr/cppgenerator.cpp @@ -127,8 +127,8 @@ void CppGenerator::operator () () { // action table... state_count = aut.states.size (); - terminal_count = grammar.terminals.size (); - non_terminal_count = grammar.non_terminals.size (); + terminal_count = static_cast<int>(grammar.terminals.size()); + non_terminal_count = static_cast<int>(grammar.non_terminals.size()); #define ACTION(i, j) table [(i) * terminal_count + (j)] #define GOTO(i, j) pgoto [(i) * non_terminal_count + (j)] diff --git a/src/tools/qlalr/lalr.cpp b/src/tools/qlalr/lalr.cpp index 2a82eb154e..8af3b3c0db 100644 --- a/src/tools/qlalr/lalr.cpp +++ b/src/tools/qlalr/lalr.cpp @@ -754,7 +754,7 @@ void Automaton::buildDefaultReduceActions () if (item->dot != item->end_rhs ()) continue; - int la = lookaheads.value (item).size (); + int la = static_cast<int>(lookaheads.value(item).size()); if (def == state->closure.end () || la > size) { def = item; diff --git a/src/tools/qlalr/lalr.h b/src/tools/qlalr/lalr.h index 8eadee400d..55b65a640d 100644 --- a/src/tools/qlalr/lalr.h +++ b/src/tools/qlalr/lalr.h @@ -39,6 +39,7 @@ #include <algorithm> #include <functional> +#include <set> class Rule; class State; @@ -48,91 +49,6 @@ class State; class Arrow; class Automaton; -template <typename _Tp > -class OrderedSet : protected QMap<_Tp, bool> -{ - typedef QMap<_Tp, bool> _Base; - -public: - class const_iterator - { - typename _Base::const_iterator _M_iterator; - - public: - const_iterator () {} - - const_iterator (const typename _Base::iterator &it): - _M_iterator (typename _Base::const_iterator(it)) {} - const_iterator (const typename _Base::const_iterator &it): - _M_iterator (it) {} - - const _Tp &operator * () const - { return _M_iterator.key (); } - - const _Tp *operator -> () const - { return &_M_iterator.key (); } - - const_iterator &operator ++ () - { ++_M_iterator; return *this; } - - const_iterator operator ++ (int) const - { - const_iterator me (*this); - ++_M_iterator; - return me; - } - - bool operator == (const const_iterator &other) const - { return _M_iterator == other._M_iterator; } - - bool operator != (const const_iterator &other) const - { return _M_iterator != other._M_iterator; } - }; - - typedef const_iterator iterator; - -public: - OrderedSet () {} - - const_iterator begin () const - { return const_iterator (_Base::begin ()); } - - const_iterator end () const - { return const_iterator (_Base::end ()); } - - bool isEmpty () const - { return _Base::isEmpty (); } - - int size () const - { return _Base::size (); } - - const_iterator find (const _Tp &elt) const - { return const_iterator (_Base::find (elt)); } - - QPair<const_iterator, bool> insert (const _Tp &elt) - { - int elts = _Base::size (); - const_iterator it (_Base::insert (typename _Base::key_type (elt), true)); - return qMakePair (it, elts != _Base::size ()); - } - - QPair<const_iterator, bool> insert (const_iterator, const _Tp &elt) - { - int elts = _Base::size (); - const_iterator it (_Base::insert (typename _Base::key_type (elt), true)); - return qMakePair (it, elts != _Base::size ()); - } - - const _Tp &operator [] (const _Tp &elt) - { return *insert (elt)->first; } - - template <typename _InputIterator> - void insert (_InputIterator first, _InputIterator last) - { - for (; first != last; ++first) - insert (*first); - } -}; // names typedef QLinkedList<QString>::iterator Name; @@ -140,7 +56,7 @@ QT_BEGIN_NAMESPACE Q_DECLARE_TYPEINFO(QLinkedList<QString>::iterator, Q_PRIMITIVE_TYPE); QT_END_NAMESPACE typedef QLinkedList<Name> NameList; -typedef OrderedSet<Name> NameSet; +typedef std::set<Name> NameSet; // items typedef QLinkedList<Item> ItemList; @@ -257,7 +173,7 @@ template <typename _Tp> class Node { public: - typedef OrderedSet<Node<_Tp> > Repository; + typedef std::set<Node<_Tp> > Repository; typedef typename Repository::iterator iterator; typedef typename QLinkedList<iterator>::iterator edge_iterator; @@ -406,9 +322,6 @@ public: StatePointer state; Name nt; }; -QT_BEGIN_NAMESPACE -Q_DECLARE_TYPEINFO(OrderedSet<Node<Read> >::const_iterator, Q_PRIMITIVE_TYPE); -QT_END_NAMESPACE class Include { @@ -430,9 +343,6 @@ public: StatePointer state; Name nt; }; -QT_BEGIN_NAMESPACE -Q_DECLARE_TYPEINFO(OrderedSet<Node<Include> >::const_iterator, Q_PRIMITIVE_TYPE); -QT_END_NAMESPACE class Automaton { diff --git a/src/tools/tracegen/etw.cpp b/src/tools/tracegen/etw.cpp index acd81bd5c1..eac518dbab 100644 --- a/src/tools/tracegen/etw.cpp +++ b/src/tools/tracegen/etw.cpp @@ -90,7 +90,7 @@ static QString createGuid(const QUuid &uuid) QTextStream stream(&guid); - hex(stream); + Qt::hex(stream); stream << "(" << "0x" << uuid.data1 << ", " diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp index 55541db98a..440758cf41 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.cpp +++ b/src/tools/uic/cpp/cppwriteinitialization.cpp @@ -490,7 +490,6 @@ void WriteInitialization::acceptUI(DomUI *node) const QString varName = m_driver->findOrInsertWidget(node->elementWidget()); m_mainFormVarName = varName; - m_registeredWidgets.insert(varName, node->elementWidget()); // register the main widget const QString widgetClassName = node->elementWidget()->attributeClass(); @@ -515,21 +514,16 @@ void WriteInitialization::acceptUI(DomUI *node) if (!m_buddies.empty()) m_output << language::openQtConfig(shortcutConfigKey()); for (const Buddy &b : qAsConst(m_buddies)) { - if (!m_registeredWidgets.contains(b.objName)) { + const QString buddyVarName = m_driver->widgetVariableName(b.buddyAttributeName); + if (buddyVarName.isEmpty()) { fprintf(stderr, "%s: Warning: Buddy assignment: '%s' is not a valid widget.\n", qPrintable(m_option.messagePrefix()), - b.objName.toLatin1().data()); - continue; - } - if (!m_registeredWidgets.contains(b.buddy)) { - fprintf(stderr, "%s: Warning: Buddy assignment: '%s' is not a valid widget.\n", - qPrintable(m_option.messagePrefix()), - b.buddy.toLatin1().data()); + qPrintable(b.buddyAttributeName)); continue; } - m_output << m_indent << b.objName << language::derefPointer - << "setBuddy(" << b.buddy << ')' << language::eol; + m_output << m_indent << b.labelVarName << language::derefPointer + << "setBuddy(" << buddyVarName << ')' << language::eol; } if (!m_buddies.empty()) m_output << language::closeQtConfig(shortcutConfigKey()); @@ -602,7 +596,6 @@ void WriteInitialization::acceptWidget(DomWidget *node) m_layoutMarginType = m_widgetChain.count() == 1 ? TopLevelMargin : ChildMargin; const QString className = node->attributeClass(); const QString varName = m_driver->findOrInsertWidget(node); - m_registeredWidgets.insert(varName, node); // register the current widget QString parentWidget, parentClass; if (m_widgetChain.top()) { @@ -828,15 +821,13 @@ void WriteInitialization::acceptWidget(DomWidget *node) const QStringList zOrder = node->elementZOrder(); for (const QString &name : zOrder) { - if (!m_registeredWidgets.contains(name)) { + const QString varName = m_driver->widgetVariableName(name); + if (varName.isEmpty()) { fprintf(stderr, "%s: Warning: Z-order assignment: '%s' is not a valid widget.\n", qPrintable(m_option.messagePrefix()), name.toLatin1().data()); - continue; - } - - if (!name.isEmpty()) { - m_output << m_indent << name << language::derefPointer << "raise()" + } else { + m_output << m_indent << varName << language::derefPointer << "raise()" << language::eol; } } @@ -1080,7 +1071,6 @@ void WriteInitialization::acceptAction(DomAction *node) return; const QString actionName = m_driver->findOrInsertAction(node); - m_registeredActions.insert(actionName, node); QString varName = m_driver->findOrInsertWidget(m_widgetChain.top()); if (m_actionGroupChain.top()) @@ -2007,12 +1997,11 @@ void WriteInitialization::acceptTabStops(DomTabStops *tabStops) const QStringList l = tabStops->elementTabStop(); for (int i=0; i<l.size(); ++i) { - const QString &name = l.at(i); + const QString name = m_driver->widgetVariableName(l.at(i)); - if (!m_registeredWidgets.contains(name)) { + if (name.isEmpty()) { fprintf(stderr, "%s: Warning: Tab-stop assignment: '%s' is not a valid widget.\n", - qPrintable(m_option.messagePrefix()), - name.toLatin1().data()); + qPrintable(m_option.messagePrefix()), qPrintable(l.at(i))); continue; } @@ -2023,7 +2012,8 @@ void WriteInitialization::acceptTabStops(DomTabStops *tabStops) if (name.isEmpty() || lastName.isEmpty()) continue; - m_output << m_indent << "QWidget::setTabOrder(" << lastName << ", " << name << ");\n"; + m_output << m_indent << "QWidget" << language::qualifier << "setTabOrder(" + << lastName << ", " << name << ')' << language::eol; lastName = name; } diff --git a/src/tools/uic/cpp/cppwriteinitialization.h b/src/tools/uic/cpp/cppwriteinitialization.h index b90ffe00a7..0ee001469c 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.h +++ b/src/tools/uic/cpp/cppwriteinitialization.h @@ -248,8 +248,8 @@ private: struct Buddy { - QString objName; - QString buddy; + QString labelVarName; + QString buddyAttributeName; }; friend class QTypeInfo<Buddy>; @@ -259,8 +259,6 @@ private: QVector<Buddy> m_buddies; QSet<QString> m_buttonGroups; - QHash<QString, DomWidget*> m_registeredWidgets; - QHash<QString, DomAction*> m_registeredActions; typedef QHash<uint, QString> ColorBrushHash; ColorBrushHash m_colorBrushHash; // Map from font properties to font variable name for reuse diff --git a/src/tools/uic/driver.cpp b/src/tools/uic/driver.cpp index a0812932ce..eb88032e59 100644 --- a/src/tools/uic/driver.cpp +++ b/src/tools/uic/driver.cpp @@ -53,14 +53,24 @@ static inline QString actionClass() { return QStringLiteral("QAction"); } static inline QString buttonGroupClass() { return QStringLiteral("QButtonGroup"); } template <class DomClass> +Driver::DomObjectHashConstIt<DomClass> + Driver::findByAttributeNameIt(const DomObjectHash<DomClass> &domHash, + const QString &name) const +{ + const auto end = domHash.cend(); + for (auto it = domHash.cbegin(); it != end; ++it) { + if (it.key()->attributeName() == name) + return it; + } + return end; +} + +template <class DomClass> const DomClass *Driver::findByAttributeName(const DomObjectHash<DomClass> &domHash, const QString &name) const { - for (auto it = domHash.cbegin(), end = domHash.cend(); it != end; ++it) { - if (it.key()->attributeName() == name) - return it.key(); - } - return nullptr; + auto it = findByAttributeNameIt(domHash, name); + return it != domHash.cend() ? it.key() : nullptr; } template <class DomClass> @@ -299,19 +309,25 @@ bool Driver::uic(const QString &fileName, QTextStream *out) return rtn; } -const DomWidget *Driver::widgetByName(const QString &name) const +const DomWidget *Driver::widgetByName(const QString &attributeName) const +{ + return findByAttributeName(m_widgets, attributeName); +} + +QString Driver::widgetVariableName(const QString &attributeName) const { - return findByAttributeName(m_widgets, name); + auto it = findByAttributeNameIt(m_widgets, attributeName); + return it != m_widgets.cend() ? it.value() : QString(); } -const DomActionGroup *Driver::actionGroupByName(const QString &name) const +const DomActionGroup *Driver::actionGroupByName(const QString &attributeName) const { - return findByAttributeName(m_actionGroups, name); + return findByAttributeName(m_actionGroups, attributeName); } -const DomAction *Driver::actionByName(const QString &name) const +const DomAction *Driver::actionByName(const QString &attributeName) const { - return findByAttributeName(m_actions, name); + return findByAttributeName(m_actions, attributeName); } QT_END_NAMESPACE diff --git a/src/tools/uic/driver.h b/src/tools/uic/driver.h index 36336007b2..45ec23b4aa 100644 --- a/src/tools/uic/driver.h +++ b/src/tools/uic/driver.h @@ -84,17 +84,23 @@ public: // Find a group by its non-uniqified name const DomButtonGroup *findButtonGroup(const QString &attributeName) const; - const DomWidget *widgetByName(const QString &name) const; - const DomActionGroup *actionGroupByName(const QString &name) const; - const DomAction *actionByName(const QString &name) const; + const DomWidget *widgetByName(const QString &attributeName) const; + QString widgetVariableName(const QString &attributeName) const; + const DomActionGroup *actionGroupByName(const QString &attributeName) const; + const DomAction *actionByName(const QString &attributeName) const; bool useIdBasedTranslations() const { return m_idBasedTranslations; } void setUseIdBasedTranslations(bool u) { m_idBasedTranslations = u; } private: template <class DomClass> using DomObjectHash = QHash<const DomClass *, QString>; + template <class DomClass> using DomObjectHashConstIt = + typename DomObjectHash<DomClass>::ConstIterator; template <class DomClass> + DomObjectHashConstIt<DomClass> findByAttributeNameIt(const DomObjectHash<DomClass> &domHash, + const QString &name) const; + template <class DomClass> const DomClass *findByAttributeName(const DomObjectHash<DomClass> &domHash, const QString &name) const; template <class DomClass> |