Cleanup QMetaClassInfo

Change-Id: I0b4fa4568f8479106053e0fae72fc802fca74a65
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
bb10
Lars Knoll 2019-04-30 11:50:57 +02:00 committed by Fabian Kosmale
parent 630c7b4811
commit f5e8f9c814
2 changed files with 14 additions and 5 deletions

View File

@ -1163,7 +1163,7 @@ QMetaClassInfo QMetaObject::classInfo(int index) const
QMetaClassInfo result;
if (i >= 0 && i < priv(d.data)->classInfoCount) {
result.mobj = this;
result.handle = priv(d.data)->classInfoData + 2*i;
result.data = { d.data + priv(d.data)->classInfoData + i * QMetaClassInfo::Data::Size };
}
return result;
}
@ -3554,7 +3554,7 @@ const char *QMetaClassInfo::name() const
{
if (!mobj)
return nullptr;
return rawStringData(mobj, mobj->d.data[handle]);
return rawStringData(mobj, data.name());
}
/*!
@ -3566,7 +3566,7 @@ const char* QMetaClassInfo::value() const
{
if (!mobj)
return nullptr;
return rawStringData(mobj, mobj->d.data[handle + 1]);
return rawStringData(mobj, data.value());
}
/*!

View File

@ -351,13 +351,22 @@ private:
class Q_CORE_EXPORT QMetaClassInfo
{
public:
Q_DECL_CONSTEXPR inline QMetaClassInfo() : mobj(nullptr), handle(0) {}
Q_DECL_CONSTEXPR inline QMetaClassInfo() : mobj(nullptr), data({ nullptr }) {}
const char *name() const;
const char *value() const;
inline const QMetaObject *enclosingMetaObject() const { return mobj; }
private:
struct Data {
enum { Size = 2 };
uint name() const { return d[0]; }
uint value() const { return d[1]; }
const uint *d;
};
const QMetaObject *mobj;
uint handle;
Data data;
friend struct QMetaObject;
};
Q_DECLARE_TYPEINFO(QMetaClassInfo, Q_MOVABLE_TYPE);