aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppInvokable.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-02-08 12:40:07 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2012-02-08 12:40:07 +0000
commit5a4de11e9bac8c6fe1e8826f2df9c27fda29d22f (patch)
tree5db6295f236fd576bd1176ef80e4d7031259486f /src/QXmppInvokable.cpp
parent21acd67e9b65bea87902032b12709675905aa922 (diff)
downloadqxmpp-5a4de11e9bac8c6fe1e8826f2df9c27fda29d22f.tar.gz
reorganise
Diffstat (limited to 'src/QXmppInvokable.cpp')
-rw-r--r--src/QXmppInvokable.cpp133
1 files changed, 0 insertions, 133 deletions
diff --git a/src/QXmppInvokable.cpp b/src/QXmppInvokable.cpp
deleted file mode 100644
index 10815734..00000000
--- a/src/QXmppInvokable.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2008-2011 The QXmpp developers
- *
- * Authors:
- * Ian Reinhart Geiser
- *
- * Source:
- * http://code.google.com/p/qxmpp
- *
- * This file is a part of QXmpp library.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- */
-
-#include "QXmppInvokable.h"
-
-#include <QVariant>
-#include <QMetaMethod>
-#include <QStringList>
-
-#include <qdebug.h>
-
-/// Constructs a QXmppInvokable with the specified \a parent.
-///
-/// \param parent
-
-QXmppInvokable::QXmppInvokable(QObject *parent)
- : QObject(parent)
-{
-}
-
-/// Destroys a QXmppInvokable.
-
-QXmppInvokable::~QXmppInvokable()
-{
-}
-
-QVariant QXmppInvokable::dispatch( const QByteArray & method, const QList< QVariant > & args )
-{
- buildMethodHash();
-
- if( !m_methodHash.contains(method))
- return QVariant();
-
- int idx = m_methodHash[method];
- if( paramTypes( args) != metaObject()->method(idx).parameterTypes ())
- return QVariant();
-
- const char *typeName = metaObject()->method(idx).typeName();
- int resultType = QMetaType::type(typeName);
- void *result = QMetaType::construct(resultType, 0);
-
- QGenericReturnArgument ret( typeName, result );
- QList<QGenericArgument> genericArgs;
- QList<QVariant>::ConstIterator iter = args.begin();
- while( iter != args.end())
- {
- const void *data = iter->data();
- const char *name = iter->typeName();
- genericArgs << QGenericArgument(name,data);
- ++iter;
- }
-
- if( QMetaObject::invokeMethod ( this, method.constData(), ret,
- genericArgs.value(0, QGenericArgument() ),
- genericArgs.value(1, QGenericArgument() ),
- genericArgs.value(2, QGenericArgument() ),
- genericArgs.value(3, QGenericArgument() ),
- genericArgs.value(4, QGenericArgument() ),
- genericArgs.value(5, QGenericArgument() ),
- genericArgs.value(6, QGenericArgument() ),
- genericArgs.value(7, QGenericArgument() ),
- genericArgs.value(8, QGenericArgument() ),
- genericArgs.value(9, QGenericArgument() )) )
- {
- QVariant returnValue( resultType, result);
- QMetaType::destroy(resultType, result);
- return returnValue;
- }
- else
- {
- qDebug("No such method '%s'", method.constData() );
- return QVariant();
- }
-}
-
-QList< QByteArray > QXmppInvokable::paramTypes( const QList< QVariant > & params )
-{
- QList<QByteArray> types;
- foreach( QVariant variant, params)
- types << variant.typeName();
- return types;
-}
-
-void QXmppInvokable::buildMethodHash( )
-{
- QWriteLocker locker(&m_lock);
- if( m_methodHash.size() > 0 )
- return;
-
- int methodCount = metaObject()->methodCount ();
- for( int idx = 0; idx < methodCount; ++idx)
- {
- QByteArray signature = metaObject()->method(idx).signature();
- m_methodHash[signature.left(signature.indexOf('('))] = idx;
-// qDebug() << metaObject()->method(idx).parameterTypes();
- }
-}
-
-QStringList QXmppInvokable::interfaces( ) const
-{
- QStringList results;
- int methodCount = metaObject()->methodCount ();
- for( int idx = 0; idx < methodCount; ++idx)
- {
- if( metaObject()->method(idx).methodType() == QMetaMethod::Slot )
- {
- QByteArray signature = metaObject()->method(idx).signature();
- results << signature.left(signature.indexOf('('));
- }
- }
- return results;
-}
-