QMetaMethodBuilder: limit the bits of attribute()/setAttribute()
Pick-to: 6.8 Change-Id: I2d680563e65be28666f5fffd6aac927fd40c6b5d Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
This commit is contained in:
parent
5624060865
commit
d0580a231c
@ -1707,7 +1707,7 @@ int QMetaMethodBuilder::attributes() const
|
|||||||
{
|
{
|
||||||
QMetaMethodBuilderPrivate *d = d_func();
|
QMetaMethodBuilderPrivate *d = d_func();
|
||||||
if (d)
|
if (d)
|
||||||
return (d->attributes >> 4);
|
return (d->attributes >> 4) & 0x7;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1720,8 +1720,10 @@ int QMetaMethodBuilder::attributes() const
|
|||||||
void QMetaMethodBuilder::setAttributes(int value)
|
void QMetaMethodBuilder::setAttributes(int value)
|
||||||
{
|
{
|
||||||
QMetaMethodBuilderPrivate *d = d_func();
|
QMetaMethodBuilderPrivate *d = d_func();
|
||||||
if (d)
|
if (d) {
|
||||||
d->attributes = ((d->attributes & 0x0f) | (value << 4));
|
d->attributes &= ~0x70;
|
||||||
|
d->attributes |= (value & 0x7) << 4;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -258,7 +258,7 @@ void tst_QMetaObjectBuilder::method()
|
|||||||
method1.setParameterNames(QList<QByteArray>() << "a" << "b");
|
method1.setParameterNames(QList<QByteArray>() << "a" << "b");
|
||||||
method1.setTag("tag");
|
method1.setTag("tag");
|
||||||
method1.setAccess(QMetaMethod::Private);
|
method1.setAccess(QMetaMethod::Private);
|
||||||
method1.setAttributes(42);
|
method1.setAttributes(QMetaMethod::Cloned);
|
||||||
method1.setRevision(123);
|
method1.setRevision(123);
|
||||||
|
|
||||||
// Check that method1 is changed, but method2 is not.
|
// Check that method1 is changed, but method2 is not.
|
||||||
@ -269,7 +269,7 @@ void tst_QMetaObjectBuilder::method()
|
|||||||
QCOMPARE(method1.parameterNames(), QList<QByteArray>() << "a" << "b");
|
QCOMPARE(method1.parameterNames(), QList<QByteArray>() << "a" << "b");
|
||||||
QCOMPARE(method1.tag(), QByteArray("tag"));
|
QCOMPARE(method1.tag(), QByteArray("tag"));
|
||||||
QCOMPARE(method1.access(), QMetaMethod::Private);
|
QCOMPARE(method1.access(), QMetaMethod::Private);
|
||||||
QCOMPARE(method1.attributes(), 42);
|
QCOMPARE(method1.attributes(), QMetaMethod::Cloned);
|
||||||
QCOMPARE(method1.revision(), 123);
|
QCOMPARE(method1.revision(), 123);
|
||||||
QCOMPARE(method1.index(), 0);
|
QCOMPARE(method1.index(), 0);
|
||||||
QCOMPARE(method2.signature(), QByteArray("bar(QString)"));
|
QCOMPARE(method2.signature(), QByteArray("bar(QString)"));
|
||||||
@ -289,7 +289,7 @@ void tst_QMetaObjectBuilder::method()
|
|||||||
method2.setParameterNames(QList<QByteArray>() << "c");
|
method2.setParameterNames(QList<QByteArray>() << "c");
|
||||||
method2.setTag("Q_FOO");
|
method2.setTag("Q_FOO");
|
||||||
method2.setAccess(QMetaMethod::Protected);
|
method2.setAccess(QMetaMethod::Protected);
|
||||||
method2.setAttributes(24);
|
method2.setAttributes(QMetaMethod::Scriptable);
|
||||||
method2.setRevision(321);
|
method2.setRevision(321);
|
||||||
|
|
||||||
// This time check that only method2 changed.
|
// This time check that only method2 changed.
|
||||||
@ -300,7 +300,7 @@ void tst_QMetaObjectBuilder::method()
|
|||||||
QCOMPARE(method1.parameterNames(), QList<QByteArray>() << "a" << "b");
|
QCOMPARE(method1.parameterNames(), QList<QByteArray>() << "a" << "b");
|
||||||
QCOMPARE(method1.tag(), QByteArray("tag"));
|
QCOMPARE(method1.tag(), QByteArray("tag"));
|
||||||
QCOMPARE(method1.access(), QMetaMethod::Private);
|
QCOMPARE(method1.access(), QMetaMethod::Private);
|
||||||
QCOMPARE(method1.attributes(), 42);
|
QCOMPARE(method1.attributes(), QMetaMethod::Cloned);
|
||||||
QCOMPARE(method1.revision(), 123);
|
QCOMPARE(method1.revision(), 123);
|
||||||
QCOMPARE(method1.index(), 0);
|
QCOMPARE(method1.index(), 0);
|
||||||
QCOMPARE(method2.signature(), QByteArray("bar(QString)"));
|
QCOMPARE(method2.signature(), QByteArray("bar(QString)"));
|
||||||
@ -310,7 +310,7 @@ void tst_QMetaObjectBuilder::method()
|
|||||||
QCOMPARE(method2.parameterNames(), QList<QByteArray>() << "c");
|
QCOMPARE(method2.parameterNames(), QList<QByteArray>() << "c");
|
||||||
QCOMPARE(method2.tag(), QByteArray("Q_FOO"));
|
QCOMPARE(method2.tag(), QByteArray("Q_FOO"));
|
||||||
QCOMPARE(method2.access(), QMetaMethod::Protected);
|
QCOMPARE(method2.access(), QMetaMethod::Protected);
|
||||||
QCOMPARE(method2.attributes(), 24);
|
QCOMPARE(method2.attributes(), QMetaMethod::Scriptable);
|
||||||
QCOMPARE(method2.revision(), 321);
|
QCOMPARE(method2.revision(), 321);
|
||||||
QCOMPARE(method2.index(), 1);
|
QCOMPARE(method2.index(), 1);
|
||||||
QCOMPARE(builder.methodCount(), 2);
|
QCOMPARE(builder.methodCount(), 2);
|
||||||
@ -326,7 +326,7 @@ void tst_QMetaObjectBuilder::method()
|
|||||||
QCOMPARE(method2.parameterNames(), QList<QByteArray>() << "c");
|
QCOMPARE(method2.parameterNames(), QList<QByteArray>() << "c");
|
||||||
QCOMPARE(method2.tag(), QByteArray("Q_FOO"));
|
QCOMPARE(method2.tag(), QByteArray("Q_FOO"));
|
||||||
QCOMPARE(method2.access(), QMetaMethod::Protected);
|
QCOMPARE(method2.access(), QMetaMethod::Protected);
|
||||||
QCOMPARE(method2.attributes(), 24);
|
QCOMPARE(method2.attributes(), QMetaMethod::Scriptable);
|
||||||
QCOMPARE(method2.revision(), 321);
|
QCOMPARE(method2.revision(), 321);
|
||||||
QCOMPARE(method2.index(), 0);
|
QCOMPARE(method2.index(), 0);
|
||||||
|
|
||||||
@ -461,7 +461,7 @@ void tst_QMetaObjectBuilder::constructor()
|
|||||||
ctor1.setParameterNames(QList<QByteArray>() << "a" << "b");
|
ctor1.setParameterNames(QList<QByteArray>() << "a" << "b");
|
||||||
ctor1.setTag("tag");
|
ctor1.setTag("tag");
|
||||||
ctor1.setAccess(QMetaMethod::Private);
|
ctor1.setAccess(QMetaMethod::Private);
|
||||||
ctor1.setAttributes(42);
|
ctor1.setAttributes(QMetaMethod::Scriptable);
|
||||||
|
|
||||||
// Check that ctor1 is changed, but ctor2 is not.
|
// Check that ctor1 is changed, but ctor2 is not.
|
||||||
QCOMPARE(ctor1.signature(), QByteArray("foo(QString,int)"));
|
QCOMPARE(ctor1.signature(), QByteArray("foo(QString,int)"));
|
||||||
@ -471,7 +471,7 @@ void tst_QMetaObjectBuilder::constructor()
|
|||||||
QCOMPARE(ctor1.parameterNames(), QList<QByteArray>() << "a" << "b");
|
QCOMPARE(ctor1.parameterNames(), QList<QByteArray>() << "a" << "b");
|
||||||
QCOMPARE(ctor1.tag(), QByteArray("tag"));
|
QCOMPARE(ctor1.tag(), QByteArray("tag"));
|
||||||
QCOMPARE(ctor1.access(), QMetaMethod::Private);
|
QCOMPARE(ctor1.access(), QMetaMethod::Private);
|
||||||
QCOMPARE(ctor1.attributes(), 42);
|
QCOMPARE(ctor1.attributes(), QMetaMethod::Scriptable);
|
||||||
QCOMPARE(ctor1.index(), 0);
|
QCOMPARE(ctor1.index(), 0);
|
||||||
QCOMPARE(ctor2.signature(), QByteArray("bar(QString)"));
|
QCOMPARE(ctor2.signature(), QByteArray("bar(QString)"));
|
||||||
QCOMPARE(ctor2.methodType(), QMetaMethod::Constructor);
|
QCOMPARE(ctor2.methodType(), QMetaMethod::Constructor);
|
||||||
@ -489,7 +489,7 @@ void tst_QMetaObjectBuilder::constructor()
|
|||||||
ctor2.setParameterNames(QList<QByteArray>() << "c");
|
ctor2.setParameterNames(QList<QByteArray>() << "c");
|
||||||
ctor2.setTag("Q_FOO");
|
ctor2.setTag("Q_FOO");
|
||||||
ctor2.setAccess(QMetaMethod::Protected);
|
ctor2.setAccess(QMetaMethod::Protected);
|
||||||
ctor2.setAttributes(24);
|
ctor2.setAttributes(QMetaMethod::Compatibility);
|
||||||
|
|
||||||
// This time check that only ctor2 changed.
|
// This time check that only ctor2 changed.
|
||||||
QCOMPARE(ctor1.signature(), QByteArray("foo(QString,int)"));
|
QCOMPARE(ctor1.signature(), QByteArray("foo(QString,int)"));
|
||||||
@ -499,7 +499,7 @@ void tst_QMetaObjectBuilder::constructor()
|
|||||||
QCOMPARE(ctor1.parameterNames(), QList<QByteArray>() << "a" << "b");
|
QCOMPARE(ctor1.parameterNames(), QList<QByteArray>() << "a" << "b");
|
||||||
QCOMPARE(ctor1.tag(), QByteArray("tag"));
|
QCOMPARE(ctor1.tag(), QByteArray("tag"));
|
||||||
QCOMPARE(ctor1.access(), QMetaMethod::Private);
|
QCOMPARE(ctor1.access(), QMetaMethod::Private);
|
||||||
QCOMPARE(ctor1.attributes(), 42);
|
QCOMPARE(ctor1.attributes(), QMetaMethod::Scriptable);
|
||||||
QCOMPARE(ctor1.index(), 0);
|
QCOMPARE(ctor1.index(), 0);
|
||||||
QCOMPARE(ctor2.signature(), QByteArray("bar(QString)"));
|
QCOMPARE(ctor2.signature(), QByteArray("bar(QString)"));
|
||||||
QCOMPARE(ctor2.methodType(), QMetaMethod::Constructor);
|
QCOMPARE(ctor2.methodType(), QMetaMethod::Constructor);
|
||||||
@ -508,7 +508,7 @@ void tst_QMetaObjectBuilder::constructor()
|
|||||||
QCOMPARE(ctor2.parameterNames(), QList<QByteArray>() << "c");
|
QCOMPARE(ctor2.parameterNames(), QList<QByteArray>() << "c");
|
||||||
QCOMPARE(ctor2.tag(), QByteArray("Q_FOO"));
|
QCOMPARE(ctor2.tag(), QByteArray("Q_FOO"));
|
||||||
QCOMPARE(ctor2.access(), QMetaMethod::Protected);
|
QCOMPARE(ctor2.access(), QMetaMethod::Protected);
|
||||||
QCOMPARE(ctor2.attributes(), 24);
|
QCOMPARE(ctor2.attributes(), QMetaMethod::Compatibility);
|
||||||
QCOMPARE(ctor2.index(), 1);
|
QCOMPARE(ctor2.index(), 1);
|
||||||
QCOMPARE(builder.constructorCount(), 2);
|
QCOMPARE(builder.constructorCount(), 2);
|
||||||
|
|
||||||
@ -523,7 +523,7 @@ void tst_QMetaObjectBuilder::constructor()
|
|||||||
QCOMPARE(ctor2.parameterNames(), QList<QByteArray>() << "c");
|
QCOMPARE(ctor2.parameterNames(), QList<QByteArray>() << "c");
|
||||||
QCOMPARE(ctor2.tag(), QByteArray("Q_FOO"));
|
QCOMPARE(ctor2.tag(), QByteArray("Q_FOO"));
|
||||||
QCOMPARE(ctor2.access(), QMetaMethod::Protected);
|
QCOMPARE(ctor2.access(), QMetaMethod::Protected);
|
||||||
QCOMPARE(ctor2.attributes(), 24);
|
QCOMPARE(ctor2.attributes(), QMetaMethod::Compatibility);
|
||||||
QCOMPARE(ctor2.index(), 0);
|
QCOMPARE(ctor2.index(), 0);
|
||||||
|
|
||||||
// Perform index-based lookup again.
|
// Perform index-based lookup again.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user