예제 #1
0
int get_signal_index()
{
    static auto senderMetaObject = &QHostInfoResult::staticMetaObject;
    static auto signal = &QHostInfoResult::resultsReady;
    int signal_index = -1;
    void *args[] = { &signal_index, &signal };
    senderMetaObject->static_metacall(QMetaObject::IndexOfMethod, 0, args);
    return signal_index + QMetaObjectPrivate::signalOffset(senderMetaObject);
}
예제 #2
0
template <typename Func> int indexOfMethod(Func method)
{
   using FuncType = QtPrivate::FunctionPointer<Func>;
   int methodIndex = -1;
   void *metaArgs[] = {&methodIndex, reinterpret_cast<void **>(&method)};
   auto mo = FuncType::Object::staticMetaObject;
   mo.static_metacall(QMetaObject::IndexOfMethod, 0, metaArgs);
   return methodIndex;
}
예제 #3
0
PlastiQObject *PlastiQMetaObject::createInstanceFromData(void *data)
{
#ifdef PQDEBUG
    PQDBG_LVL_START(__FUNCTION__);
    PQDBGLPUP(QString("objectId: %1").arg(reinterpret_cast<quint64>(data)));
#endif

    PMOGStack stack = new PMOGStackItem[2];

    PlastiQObject *object = Q_NULLPTR;
    stack[0].s_voidpp = reinterpret_cast<void**>(&object);
    stack[1].s_voidp = data;

    static_metacall(PlastiQMetaObject::CreateDataInstance, 0, stack);

    delete [] stack;

    PQDBG_LVL_DONE();
    return object;
}
예제 #4
0
PlastiQObject *PlastiQMetaObject::newInstance(const QByteArray &signature, const PMOGStack &stack)
{
#ifdef PQDEBUG
    PQDBG_LVL_START(__FUNCTION__);
    PQDBGLPUP(QString("PlastiQMetaObject::d.className = %1").arg(d.className));
#endif

    int cid = constructorId(signature);

    PlastiQObject *object = Q_NULLPTR;

    stack[0].s_voidpp = reinterpret_cast<void**>(&object);

    if(cid < 0) {
        PQDBG_LVL_DONE();
        return object;
    }

    static_metacall(PlastiQMetaObject::CreateInstance, cid, stack);

    PQDBG_LVL_DONE();
    return object;
}