diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-09-04 13:52:47 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-09-04 13:55:23 +0000 |
commit | b2ea4ae287064472a4898c149f66ab4bd882d499 (patch) | |
tree | 2807575123deb98884ec8806fff9370686f0ac63 /sources/pyside2/libpyside | |
parent | 9b1cb0fc53dad3fc7502536a0f9deacdcadc370b (diff) |
libpyside: Replace QLinkedList<QByteArray> by QByteArrayList in MetaObject
Remove unused list parameter from DynamicQMetaObject::createMetaData(),
adapt signatures, make const where applicable and streamline code.
Change-Id: I0733382b2a6a35579d3e69280d674ad8a8f1bbc6
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/pyside2/libpyside')
-rw-r--r-- | sources/pyside2/libpyside/dynamicqmetaobject.cpp | 71 |
1 files changed, 27 insertions, 44 deletions
diff --git a/sources/pyside2/libpyside/dynamicqmetaobject.cpp b/sources/pyside2/libpyside/dynamicqmetaobject.cpp index 2d567d99b..4abbebb12 100644 --- a/sources/pyside2/libpyside/dynamicqmetaobject.cpp +++ b/sources/pyside2/libpyside/dynamicqmetaobject.cpp @@ -49,7 +49,6 @@ #include <QString> #include <QStringList> #include <QList> -#include <QLinkedList> #include <QObject> #include <cstring> #include <QDebug> @@ -119,10 +118,12 @@ public: int m_emptyMethod = -1; int m_nullIndex = 0; - int createMetaData(QMetaObject* metaObj, QLinkedList<QByteArray> &strings); + int createMetaData(QMetaObject* metaObj); void updateMetaObject(QMetaObject* metaObj); - void writeMethodsData(const QList<MethodData>& methods, unsigned int** data, QLinkedList<QByteArray>& strings, int* prtIndex, int nullIndex, int flags); - void writeStringData(char *, QLinkedList<QByteArray> &strings); + void writeMethodsData(const QList<MethodData>& methods, unsigned int** data, + QByteArrayList& strings, int* prtIndex, + int nullIndex, int flags); + void writeStringData(char *, const QByteArrayList& strings) const; int getPropertyNotifyId(PySideProperty *property) const; }; @@ -133,36 +134,21 @@ bool sortMethodSignalSlot(const MethodData &m1, const MethodData &m2) return false; } -static int registerString(const QByteArray& s, QLinkedList<QByteArray>& strings) +static int registerString(const QByteArray& s, QByteArrayList& strings) { - int idx = 0; - QLinkedList<QByteArray>::const_iterator it = strings.begin(); - QLinkedList<QByteArray>::const_iterator itEnd = strings.end(); - while (it != itEnd) { - if (strcmp(*it, s) == 0) - return idx; - ++idx; - ++it; + int idx = strings.indexOf(s); + if (idx == -1) { + idx = strings.size(); + strings.append(s); } - strings.append(s); return idx; } -static int blobSize(QLinkedList<QByteArray> &strings) +static int blobSize(const QByteArrayList &strings) { - int size = strings.size() * sizeof(QByteArrayData); - - QByteArray str; - QByteArray debug_str; - foreach (const QByteArray &field, strings) { - str.append(field); - str.append(char(0)); - - debug_str.append(field); - debug_str.append('|'); - } - //qDebug()<<debug_str; - size += str.size(); + int size = strings.size() * int(sizeof(QByteArrayData)); + for (const QByteArray &field : strings) + size += field.size() + 1; return size; } @@ -545,7 +531,7 @@ const QMetaObject* DynamicQMetaObject::update() const void DynamicQMetaObject::DynamicQMetaObjectPrivate::writeMethodsData(const QList<MethodData>& methods, unsigned int** data, - QLinkedList<QByteArray>& strings, + QByteArrayList& strings, int* prtIndex, int nullIndex, int flags) @@ -680,7 +666,7 @@ void DynamicQMetaObject::parsePythonType(PyTypeObject *type) Allocate the meta data table. Returns the index in the table corresponding to the header fields count. */ -int DynamicQMetaObject::DynamicQMetaObjectPrivate::createMetaData(QMetaObject* metaObj, QLinkedList<QByteArray> &strings) +int DynamicQMetaObject::DynamicQMetaObjectPrivate::createMetaData(QMetaObject* metaObj) { const int n_methods = m_methods.size(); const int n_properties = m_properties.size(); @@ -720,17 +706,16 @@ int DynamicQMetaObject::DynamicQMetaObjectPrivate::createMetaData(QMetaObject* m // The struct consists of an array of QByteArrayData, followed by a char array // containing the actual strings. This format must match the one produced by // moc (see generator.cpp). -void DynamicQMetaObject::DynamicQMetaObjectPrivate::writeStringData(char *out, QLinkedList<QByteArray> &strings) +void DynamicQMetaObject::DynamicQMetaObjectPrivate::writeStringData(char *out, + const QByteArrayList& strings) const { Q_ASSERT(!(reinterpret_cast<quintptr>(out) & (Q_ALIGNOF(QByteArrayData)-1))); - int offsetOfStringdataMember = strings.size() * sizeof(QByteArrayData); + const int size = strings.size(); + const int offsetOfStringdataMember = size * int(sizeof(QByteArrayData)); int stringdataOffset = 0; - int i = 0; - foreach(const QByteArray& str, strings) { - writeString(out, i, str, offsetOfStringdataMember, stringdataOffset); - i++; - } + for (int i = 0; i < size; ++i) + writeString(out, i, strings.at(i), offsetOfStringdataMember, stringdataOffset); } QList<MethodData>::iterator is_sorted_until(QList<MethodData>::iterator first, @@ -757,18 +742,16 @@ bool is_sorted(QList<MethodData>::iterator first, QList<MethodData>::iterator la void DynamicQMetaObject::DynamicQMetaObjectPrivate::updateMetaObject(QMetaObject* metaObj) { Q_ASSERT(!m_updated); - uint *data = const_cast<uint*>(metaObj->d.data); - int index = 0; - QLinkedList<QByteArray> strings; m_dataSize = 0; // Recompute the size and reallocate memory // index is set after the last header field. - index = createMetaData(metaObj, strings); - data = const_cast<uint*>(metaObj->d.data); + int index = createMetaData(metaObj); + uint *data = const_cast<uint*>(metaObj->d.data); - registerString(m_className, strings); // register class string - m_nullIndex = registerString("", strings); // register a null string + QByteArrayList strings; + strings.append(m_className); // register class string + m_nullIndex = registerString(QByteArrayLiteral(""), strings); // register a null string // Write class info. if (!m_info.isEmpty()) { |