QskMetaInvokable improved

This commit is contained in:
Uwe Rathmann 2018-03-09 16:20:33 +01:00
parent b788f7da2c
commit c109b170f1
2 changed files with 41 additions and 9 deletions

View File

@ -10,6 +10,7 @@
#include <QMetaMethod>
#include <QVector>
#include <QObject>
#include <QThread>
namespace
{
@ -39,8 +40,16 @@ static void qskInvokeSetProperty( QObject* object,
const QMetaObject* metaObject, int propertyIndex,
void* args[], Qt::ConnectionType connectionType )
{
int invokeType = connectionType & 0x3;
if ( invokeType == Qt::AutoConnection )
{
invokeType = ( object->thread() != QThread::currentThread() )
? Qt::QueuedConnection : Qt::DirectConnection;
}
#if 1
if ( connectionType != Qt::DirectConnection )
if ( invokeType != Qt::DirectConnection )
return; // TODO ...
#endif
@ -48,14 +57,10 @@ static void qskInvokeSetProperty( QObject* object,
{
int status = -1;
int flags = 0;
void *argv[] = { args[1], nullptr, &status, &flags };
void* argv[] = { args[1], nullptr, &status, &flags };
#if 1
QMetaObject::metacall( object,
QMetaObject::WriteProperty, propertyIndex, argv );
#else
metaObject->d.static_metacall(object, QMetaObject::WriteProperty, idx, argv);
#endif
}
}
@ -286,6 +291,31 @@ int QskMetaInvokable::returnType() const
}
}
QByteArray QskMetaInvokable::name() const
{
switch( m_type )
{
case MetaMethod:
{
return method().name();
}
case MetaProperty:
{
return property().name();
}
case MetaFunction:
{
// what to do here ???
return QByteArray();
}
default:
{
return QByteArray();
}
}
}
QMetaMethod QskMetaInvokable::method() const
{
if ( m_type == MetaMethod && m_metaData.metaObject )

View File

@ -68,9 +68,11 @@ public:
void reset();
QMetaMethod method() const;
QMetaProperty property() const;
QskMetaFunction function() const;
QByteArray name() const;
QMetaMethod method() const;
QMetaProperty property() const;
QskMetaFunction function() const;
private:
struct FunctionData