On sábado, 7 de dezembro de 2013 13:36:35, Kurt Pattyn wrote: > "-Wsign-conversion" > "-Wsign-promo" > "-Wsign-compare"
Oh, man. These three are extremely annoying. I now remember why we don't like unsigned types in our API... So why are we using uint in a few member variables, like in QMetaType? Here's what I've got for QtCore, without fixing the Q_DECLARE_METATYPE_TEMPLATE_2ARG macro. Do we want apply this? -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center
diff --git i/src/corelib/global/qendian.h w/src/corelib/global/qendian.h
index 9b939fe..2b02ff7 100644
--- i/src/corelib/global/qendian.h
+++ w/src/corelib/global/qendian.h
@@ -331,17 +331,17 @@ template <> inline quint16 qbswap<quint16>(quint16 source)
// signed specializations
template <> inline qint64 qbswap<qint64>(qint64 source)
{
- return qbswap<quint64>(quint64(source));
+ return qint64(qbswap<quint64>(quint64(source)));
}
template <> inline qint32 qbswap<qint32>(qint32 source)
{
- return qbswap<quint32>(quint32(source));
+ return qint32(qbswap<quint32>(quint32(source)));
}
template <> inline qint16 qbswap<qint16>(qint16 source)
{
- return qbswap<quint16>(quint16(source));
+ return qint16(qbswap<quint16>(quint16(source)));
}
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
diff --git i/src/corelib/io/qdatastream.h w/src/corelib/io/qdatastream.h
index f107e80..032a6a8 100644
--- i/src/corelib/io/qdatastream.h
+++ w/src/corelib/io/qdatastream.h
@@ -228,10 +228,10 @@ template <typename T>
QDataStream& operator>>(QDataStream& s, QList<T>& l)
{
l.clear();
- quint32 c;
+ qint32 c;
s >> c;
l.reserve(c);
- for(quint32 i = 0; i < c; ++i)
+ for(qint32 i = 0; i < c; ++i)
{
T t;
s >> t;
diff --git i/src/corelib/itemmodels/qabstractitemmodel.h w/src/corelib/itemmodels/qabstractitemmodel.h
index 95b9d27..fe18a9f 100644
--- i/src/corelib/itemmodels/qabstractitemmodel.h
+++ w/src/corelib/itemmodels/qabstractitemmodel.h
@@ -500,7 +500,7 @@ inline Qt::ItemFlags QModelIndex::flags() const
{ return m ? m->flags(*this) : Qt::ItemFlags(0); }
inline uint qHash(const QModelIndex &index)
-{ return uint((index.row() << 4) + index.column() + index.internalId()); }
+{ return uint((index.row() << 4) + uint(index.column()) + index.internalId()); }
QT_END_NAMESPACE
diff --git i/src/corelib/json/qjsonvalue.h w/src/corelib/json/qjsonvalue.h
index aecbabb..883dbf6 100644
--- i/src/corelib/json/qjsonvalue.h
+++ w/src/corelib/json/qjsonvalue.h
@@ -141,9 +141,9 @@ class Q_CORE_EXPORT QJsonValueRef
{
public:
QJsonValueRef(QJsonArray *array, int idx)
- : a(array), is_object(false), index(idx) {}
+ : a(array), is_object(false), index(uint(idx)) {}
QJsonValueRef(QJsonObject *object, int idx)
- : o(object), is_object(true), index(idx) {}
+ : o(object), is_object(true), index(uint(idx)) {}
inline operator QJsonValue() const { return toValue(); }
QJsonValueRef &operator = (const QJsonValue &val);
diff --git i/src/corelib/kernel/qmetatype.h w/src/corelib/kernel/qmetatype.h
index fc1d21b..72a967d0 100644
--- i/src/corelib/kernel/qmetatype.h
+++ w/src/corelib/kernel/qmetatype.h
@@ -628,7 +628,7 @@ private:
const QMetaObject *metaObject);
QMetaType(const QMetaType &other);
QMetaType &operator =(const QMetaType &);
- inline bool isExtended(const ExtensionFlag flag) const { return m_extensionFlags & flag; }
+ inline bool isExtended(const ExtensionFlag flag) const { return int(m_extensionFlags) & flag; }
// Methods used for future binary compatible extensions
void ctor(const QMetaTypeInterface *info);
@@ -2000,8 +2000,8 @@ inline void QMetaType::destruct(void *data) const
inline int QMetaType::sizeOf() const
{
if (Q_UNLIKELY(isExtended(SizeEx)))
- return sizeExtended();
- return m_size;
+ return int(sizeExtended());
+ return int(m_size);
}
inline QMetaType::TypeFlags QMetaType::flags() const
diff --git i/src/corelib/tools/qalgorithms.h w/src/corelib/tools/qalgorithms.h
index c6eede0..fa9ab5f 100644
--- i/src/corelib/tools/qalgorithms.h
+++ w/src/corelib/tools/qalgorithms.h
@@ -535,7 +535,7 @@ QT_DEPRECATED Q_OUTOFLINE_TEMPLATE RandomAccessIterator qBinaryFindHelper(Random
Q_DECL_CONSTEXPR inline uint qPopulationCount(quint32 v)
{
#ifdef QALGORITHMS_USE_BUILTIN_POPCOUNT
- return __builtin_popcount(v);
+ return uint(__builtin_popcount(v));
#else
// See http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel
return
@@ -548,7 +548,7 @@ Q_DECL_CONSTEXPR inline uint qPopulationCount(quint32 v)
Q_DECL_CONSTEXPR inline uint qPopulationCount(quint8 v)
{
#ifdef QALGORITHMS_USE_BUILTIN_POPCOUNT
- return __builtin_popcount(v);
+ return uint(__builtin_popcount(v));
#else
return
(((v ) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f;
@@ -558,7 +558,7 @@ Q_DECL_CONSTEXPR inline uint qPopulationCount(quint8 v)
Q_DECL_CONSTEXPR inline uint qPopulationCount(quint16 v)
{
#ifdef QALGORITHMS_USE_BUILTIN_POPCOUNT
- return __builtin_popcount(v);
+ return uint(__builtin_popcount(v));
#else
return
(((v ) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f +
@@ -569,7 +569,7 @@ Q_DECL_CONSTEXPR inline uint qPopulationCount(quint16 v)
Q_DECL_CONSTEXPR inline uint qPopulationCount(quint64 v)
{
#ifdef QALGORITHMS_USE_BUILTIN_POPCOUNT
- return __builtin_popcountll(v);
+ return uint(__builtin_popcountll(v));
#else
return
(((v ) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f +
diff --git i/src/corelib/tools/qbitarray.h w/src/corelib/tools/qbitarray.h
index eaf9b2f..893bffa 100644
--- i/src/corelib/tools/qbitarray.h
+++ w/src/corelib/tools/qbitarray.h
@@ -139,7 +139,7 @@ inline bool QBitArray::toggleBit(int i)
uchar c = uchar(*p&b); *p^=b; return c!=0; }
inline bool QBitArray::operator[](int i) const { return testBit(i); }
-inline bool QBitArray::operator[](uint i) const { return testBit(i); }
+inline bool QBitArray::operator[](uint i) const { return testBit(int(i)); }
inline bool QBitArray::at(int i) const { return testBit(i); }
class Q_CORE_EXPORT QBitRef
@@ -159,7 +159,7 @@ public:
inline QBitRef QBitArray::operator[](int i)
{ Q_ASSERT(i >= 0); return QBitRef(*this, i); }
inline QBitRef QBitArray::operator[](uint i)
-{ return QBitRef(*this, i); }
+{ return QBitRef(*this, int(i)); }
#ifndef QT_NO_DATASTREAM
diff --git i/src/corelib/tools/qbytearray.h w/src/corelib/tools/qbytearray.h
index a3b80fc..dbfca9a 100644
--- i/src/corelib/tools/qbytearray.h
+++ w/src/corelib/tools/qbytearray.h
@@ -478,7 +478,7 @@ public:
inline QByteRef QByteArray::operator[](int i)
{ Q_ASSERT(i >= 0); return QByteRef(*this, i); }
inline QByteRef QByteArray::operator[](uint i)
-{ return QByteRef(*this, i); }
+{ return QByteRef(*this, int(i)); }
inline QByteArray::iterator QByteArray::begin()
{ return data(); }
inline QByteArray::const_iterator QByteArray::begin() const
@@ -518,7 +518,7 @@ inline bool QByteArray::contains(const QByteArray &a) const
inline bool QByteArray::contains(char c) const
{ return indexOf(c) != -1; }
inline bool operator==(const QByteArray &a1, const QByteArray &a2)
-{ return (a1.size() == a2.size()) && (memcmp(a1.constData(), a2.constData(), a1.size())==0); }
+{ return (a1.size() == a2.size()) && (memcmp(a1.constData(), a2.constData(), size_t(a1.size()))==0); }
inline bool operator==(const QByteArray &a1, const char *a2)
{ return a2 ? qstrcmp(a1,a2) == 0 : a1.isEmpty(); }
inline bool operator==(const char *a1, const QByteArray &a2)
@@ -568,11 +568,11 @@ inline const QByteArray operator+(char a1, const QByteArray &a2)
inline bool QByteArray::contains(const char *c) const
{ return indexOf(c) != -1; }
inline QByteArray &QByteArray::replace(char before, const char *c)
-{ return replace(&before, 1, c, qstrlen(c)); }
+{ return replace(&before, 1, c, int(qstrlen(c))); }
inline QByteArray &QByteArray::replace(const QByteArray &before, const char *c)
-{ return replace(before.constData(), before.size(), c, qstrlen(c)); }
+{ return replace(before.constData(), before.size(), c, int(qstrlen(c))); }
inline QByteArray &QByteArray::replace(const char *before, const char *after)
-{ return replace(before, qstrlen(before), after, qstrlen(after)); }
+{ return replace(before, int(qstrlen(before)), after, int(qstrlen(after))); }
inline QByteArray &QByteArray::setNum(short n, int base)
{ return base == 10 ? setNum(qlonglong(n), base) : setNum(qulonglong(ushort(n)), base); }
diff --git i/src/corelib/tools/qhash.h w/src/corelib/tools/qhash.h
index 9dd0e61..be362f7 100644
--- i/src/corelib/tools/qhash.h
+++ w/src/corelib/tools/qhash.h
@@ -924,7 +924,7 @@ Q_OUTOFLINE_TEMPLATE typename QHash<Key, T>::Node **QHash<Key, T>::findNode(cons
*ahp = h;
}
if (d->numBuckets) {
- node = reinterpret_cast<Node **>(&d->buckets[h % d->numBuckets]);
+ node = reinterpret_cast<Node **>(&d->buckets[h % uint(d->numBuckets)]);
Q_ASSERT(*node == e || (*node)->next);
while (*node != e && !(*node)->same_key(h, akey))
node = &(*node)->next;
diff --git i/src/corelib/tools/qlist.h w/src/corelib/tools/qlist.h
index 333ce72..1a38c92 100644
--- i/src/corelib/tools/qlist.h
+++ w/src/corelib/tools/qlist.h
@@ -414,7 +414,7 @@ Q_INLINE_TEMPLATE void QList<T>::node_copy(Node *from, Node *to, Node *src)
}
} else {
if (src != from && to - from > 0)
- memcpy(from, src, (to - from) * sizeof(Node));
+ memcpy(from, src, size_t(to - from) * sizeof(Node));
}
}
diff --git i/src/corelib/tools/qmap.h w/src/corelib/tools/qmap.h
index db0cd6a..d950881 100644
--- i/src/corelib/tools/qmap.h
+++ w/src/corelib/tools/qmap.h
@@ -99,8 +99,8 @@ struct Q_CORE_EXPORT QMapNodeBase
QMapNodeBase *previousNode() { return const_cast<QMapNodeBase *>(const_cast<const QMapNodeBase *>(this)->previousNode()); }
Color color() const { return Color(p & 1); }
- void setColor(Color c) { if (c == Black) p |= Black; else p &= ~Black; }
- QMapNodeBase *parent() const { return reinterpret_cast<QMapNodeBase *>(p & ~Mask); }
+ void setColor(Color c) { if (c == Black) p |= uint(Black); else p &= uint(~Black); }
+ QMapNodeBase *parent() const { return reinterpret_cast<QMapNodeBase *>(p & uint(~Mask)); }
void setParent(QMapNodeBase *pp) { p = (p & Mask) | quintptr(pp); }
QMapNodeBase *minimumNode() { QMapNodeBase *n = this; while (n->left) n = n->left; return n; }
diff --git i/src/corelib/tools/qstring.h w/src/corelib/tools/qstring.h
index 10d4d9b..ea112c1 100644
--- i/src/corelib/tools/qstring.h
+++ w/src/corelib/tools/qstring.h
@@ -89,7 +89,7 @@ class QLatin1String
public:
Q_DECL_CONSTEXPR inline explicit QLatin1String(const char *s) : m_size(s ? int(strlen(s)) : 0), m_data(s) {}
Q_DECL_CONSTEXPR inline explicit QLatin1String(const char *s, int sz) : m_size(sz), m_data(s) {}
- inline explicit QLatin1String(const QByteArray &s) : m_size(int(qstrnlen(s.constData(), s.size()))), m_data(s.constData()) {}
+ inline explicit QLatin1String(const QByteArray &s) : m_size(int(qstrnlen(s.constData(), uint(s.size())))), m_data(s.constData()) {}
inline const char *latin1() const { return m_data; }
inline int size() const { return m_size; }
@@ -507,11 +507,11 @@ public:
return fromLocal8Bit_helper(str, (str && size == -1) ? int(strlen(str)) : size);
}
static inline QString fromLatin1(const QByteArray &str)
- { return fromLatin1(str.data(), qstrnlen(str.constData(), str.size())); }
+ { return fromLatin1(str.data(), int(qstrnlen(str.constData(), uint(str.size())))); }
static inline QString fromUtf8(const QByteArray &str)
- { return fromUtf8(str.data(), qstrnlen(str.constData(), str.size())); }
+ { return fromUtf8(str.data(), int(qstrnlen(str.constData(), uint(str.size())))); }
static inline QString fromLocal8Bit(const QByteArray &str)
- { return fromLocal8Bit(str.data(), qstrnlen(str.constData(), str.size())); }
+ { return fromLocal8Bit(str.data(), int(qstrnlen(str.constData(), uint(str.size())))); }
static QString fromUtf16(const ushort *, int size = -1);
static QString fromUcs4(const uint *, int size = -1);
static QString fromRawData(const QChar *, int size);
@@ -861,7 +861,7 @@ inline QString QString::section(QChar asep, int astart, int aend, SectionFlags a
inline int QString::toWCharArray(wchar_t *array) const
{
if (sizeof(wchar_t) == sizeof(QChar)) {
- memcpy(array, data(), sizeof(QChar) * size());
+ memcpy(array, data(), sizeof(QChar) * uint(size()));
return size();
}
return toUcs4_helper(reinterpret_cast<const ushort *>(data()), size(), reinterpret_cast<uint *>(array));
@@ -982,7 +982,7 @@ inline QString &QString::setUtf16(const ushort *autf16, int asize)
inline QCharRef QString::operator[](int i)
{ Q_ASSERT(i >= 0); return QCharRef(*this, i); }
inline QCharRef QString::operator[](uint i)
-{ return QCharRef(*this, i); }
+{ return QCharRef(*this, int(i)); }
inline QString::iterator QString::begin()
{ detach(); return reinterpret_cast<QChar*>(d.b); }
inline QString::const_iterator QString::begin() const
@@ -1015,20 +1015,20 @@ inline bool operator!=(QString::Null, const QString &s) { return !s.isNull(); }
inline bool operator!=(const QString &s, QString::Null) { return !s.isNull(); }
inline bool operator==(QLatin1String s1, QLatin1String s2)
-{ return (s1.size() == s2.size() && !memcmp(s1.latin1(), s2.latin1(), s1.size())); }
+{ return (s1.size() == s2.size() && !memcmp(s1.latin1(), s2.latin1(), size_t(s1.size()))); }
inline bool operator!=(QLatin1String s1, QLatin1String s2)
-{ return (s1.size() != s2.size() || memcmp(s1.latin1(), s2.latin1(), s1.size())); }
+{ return (s1.size() != s2.size() || memcmp(s1.latin1(), s2.latin1(), size_t(s1.size()))); }
inline bool operator<(QLatin1String s1, QLatin1String s2)
-{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size()));
+{ int r = memcmp(s1.latin1(), s2.latin1(), size_t(qMin(s1.size(), s2.size())));
return (r < 0) || (r == 0 && s1.size() < s2.size()); }
inline bool operator<=(QLatin1String s1, QLatin1String s2)
-{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size()));
+{ int r = memcmp(s1.latin1(), s2.latin1(), size_t(qMin(s1.size(), s2.size())));
return (r < 0) || (r == 0 && s1.size() <= s2.size()); }
inline bool operator>(QLatin1String s1, QLatin1String s2)
-{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size()));
+{ int r = memcmp(s1.latin1(), s2.latin1(), size_t(qMin(s1.size(), s2.size())));
return (r > 0) || (r == 0 && s1.size() > s2.size()); }
inline bool operator>=(QLatin1String s1, QLatin1String s2)
-{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size()));
+{ int r = memcmp(s1.latin1(), s2.latin1(), size_t(qMin(s1.size(), s2.size())));
return (r > 0) || (r == 0 && s1.size() >= s2.size()); }
inline bool QLatin1String::operator==(const QString &s) const
@@ -1180,7 +1180,7 @@ inline QT_ASCII_CAST_WARN const QString operator+(const QString &s, const QByteA
#endif // QT_USE_QSTRINGBUILDER
inline std::string QString::toStdString() const
-{ const QByteArray asc = toUtf8(); return std::string(asc.constData(), asc.length()); }
+{ const QByteArray asc = toUtf8(); return std::string(asc.constData(), size_t(asc.length())); }
inline QString QString::fromStdString(const std::string &s)
{ return fromUtf8(s.data(), int(s.size())); }
@@ -1188,7 +1188,7 @@ inline QString QString::fromStdString(const std::string &s)
inline std::wstring QString::toStdWString() const
{
std::wstring str;
- str.resize(length());
+ str.resize(size_t(length()));
#if defined(_MSC_VER) && _MSC_VER >= 1400
// VS2005 crashes if the string is empty
@@ -1196,7 +1196,7 @@ inline std::wstring QString::toStdWString() const
return str;
#endif
- str.resize(toWCharArray(&(*str.begin())));
+ str.resize(size_t(toWCharArray(&(*str.begin()))));
return str;
}
diff --git i/src/corelib/tools/qstringbuilder.h w/src/corelib/tools/qstringbuilder.h
index 23d61d6..4838624 100644
--- i/src/corelib/tools/qstringbuilder.h
+++ w/src/corelib/tools/qstringbuilder.h
@@ -252,7 +252,7 @@ template <> struct QConcatenable<QString> : private QAbstractConcatenable
static inline void appendTo(const QString &a, QChar *&out)
{
const int n = a.size();
- memcpy(out, reinterpret_cast<const char*>(a.constData()), sizeof(QChar) * n);
+ memcpy(out, reinterpret_cast<const char*>(a.constData()), sizeof(QChar) * uint(n));
out += n;
}
};
@@ -270,7 +270,7 @@ template <> struct QConcatenable<QStringRef> : private QAbstractConcatenable
static inline void appendTo(const QStringRef &a, QChar *&out)
{
const int n = a.size();
- memcpy(out, reinterpret_cast<const char*>(a.constData()), sizeof(QChar) * n);
+ memcpy(out, reinterpret_cast<const char*>(a.constData()), sizeof(QChar) * uint(n));
out += n;
}
};
@@ -318,7 +318,7 @@ template <> struct QConcatenable<const char *> : private QAbstractConcatenable
typedef char const *type;
typedef QByteArray ConvertTo;
enum { ExactSize = false };
- static int size(const char *a) { return qstrlen(a); }
+ static int size(const char *a) { return int(qstrlen(a)); }
#ifndef QT_NO_CAST_FROM_ASCII
static inline void QT_ASCII_CAST_WARN appendTo(const char *a, QChar *&out)
{ QAbstractConcatenable::convertFromAscii(a, -1, out); }
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
