diff options
author | Erik Verbruggen <erik.verbruggen@qt.io> | 2016-06-29 15:06:08 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@qt.io> | 2016-07-13 08:16:39 +0000 |
commit | 9109d15398f8c869e401aa9aacc578c96200e217 (patch) | |
tree | a304ea0c5aabb46f3f306e7a5f444d224c918b59 /src/qml/qml/ftw | |
parent | b55485bd4ad6d9084e15e982e457a835aeda831d (diff) |
V4: allow for String::createHashValue to be inlined
Notably into QHashedString(Ref)::computeHash.
Change-Id: Icf8487ed3da0f117cb0911f20c9b88498f61510a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/qml/ftw')
-rw-r--r-- | src/qml/qml/ftw/qhashedstring.cpp | 23 | ||||
-rw-r--r-- | src/qml/qml/ftw/qhashedstring_p.h | 35 |
2 files changed, 32 insertions, 26 deletions
diff --git a/src/qml/qml/ftw/qhashedstring.cpp b/src/qml/qml/ftw/qhashedstring.cpp index 5c5d2a31ac..117670dbfc 100644 --- a/src/qml/qml/ftw/qhashedstring.cpp +++ b/src/qml/qml/ftw/qhashedstring.cpp @@ -39,30 +39,7 @@ #include "qhashedstring_p.h" -inline quint32 stringHash(const QChar* data, int length) -{ - return QV4::String::createHashValue(data, length, Q_NULLPTR); -} -inline quint32 stringHash(const char *data, int length) -{ - return QV4::String::createHashValue(data, length, Q_NULLPTR); -} - -void QHashedString::computeHash() const -{ - m_hash = stringHash(constData(), length()); -} - -void QHashedStringRef::computeHash() const -{ - m_hash = stringHash(m_data, m_length); -} - -void QHashedCStringRef::computeHash() const -{ - m_hash = stringHash(m_data, m_length); -} /* A QHash has initially around pow(2, MinNumBits) buckets. For diff --git a/src/qml/qml/ftw/qhashedstring_p.h b/src/qml/qml/ftw/qhashedstring_p.h index 03361f47f7..9ee50ec931 100644 --- a/src/qml/qml/ftw/qhashedstring_p.h +++ b/src/qml/qml/ftw/qhashedstring_p.h @@ -85,11 +85,15 @@ public: static bool compare(const QChar *lhs, const QChar *rhs, int length); static inline bool compare(const QChar *lhs, const char *rhs, int length); static inline bool compare(const char *lhs, const char *rhs, int length); + + static inline quint32 stringHash(const QChar* data, int length); + static inline quint32 stringHash(const char *data, int length); + private: friend class QHashedStringRef; friend class QStringHashNode; - void computeHash() const; + inline void computeHash() const; mutable quint32 m_hash; }; @@ -136,7 +140,7 @@ public: private: friend class QHashedString; - void computeHash() const; + inline void computeHash() const; const QChar *m_data; int m_length; @@ -163,7 +167,7 @@ public: private: friend class QHashedStringRef; - void computeHash() const; + inline void computeHash() const; const char *m_data; int m_length; @@ -1214,6 +1218,11 @@ bool QHashedStringRef::isLatin1() const return true; } +void QHashedStringRef::computeHash() const +{ + m_hash = QHashedString::stringHash(m_data, m_length); +} + bool QHashedStringRef::startsWithUpper() const { if (m_length < 1) return false; @@ -1280,6 +1289,11 @@ void QHashedCStringRef::writeUtf16(quint16 *output) const *output++ = *d++; } +void QHashedCStringRef::computeHash() const +{ + m_hash = QHashedString::stringHash(m_data, m_length); +} + bool QHashedString::compare(const QChar *lhs, const char *rhs, int length) { Q_ASSERT(lhs && rhs); @@ -1295,6 +1309,21 @@ bool QHashedString::compare(const char *lhs, const char *rhs, int length) return 0 == ::memcmp(lhs, rhs, length); } +quint32 QHashedString::stringHash(const QChar *data, int length) +{ + return QV4::String::createHashValue(data, length, Q_NULLPTR); +} + +quint32 QHashedString::stringHash(const char *data, int length) +{ + return QV4::String::createHashValue(data, length, Q_NULLPTR); +} + +void QHashedString::computeHash() const +{ + m_hash = stringHash(constData(), length()); +} + QT_END_NAMESPACE #endif // QHASHEDSTRING_P_H |