File indexing completed on 2024-12-08 09:42:38
0001 /* This file is part of the KDE libraries 0002 Copyright (C) 2005, 2006 Ian Reinhart Geiser <geiseri@kde.org> 0003 Copyright (C) 2005, 2006 Matt Broadstone <mbroadst@gmail.com> 0004 Copyright (C) 2005, 2006 Richard J. Moore <rich@kde.org> 0005 Copyright (C) 2005, 2006 Erik L. Bunce <kde@bunce.us> 0006 0007 This library is free software; you can redistribute it and/or 0008 modify it under the terms of the GNU Library General Public 0009 License as published by the Free Software Foundation; either 0010 version 2 of the License, or (at your option) any later version. 0011 0012 This library is distributed in the hope that it will be useful, 0013 but WITHOUT ANY WARRANTY; without even the implied warranty of 0014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0015 Library General Public License for more details. 0016 0017 You should have received a copy of the GNU Library General Public License 0018 along with this library; see the file COPYING.LIB. If not, write to 0019 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 0020 Boston, MA 02110-1301, USA. 0021 */ 0022 0023 #ifndef SLOTPROXY_H 0024 #define SLOTPROXY_H 0025 0026 #include <QObject> 0027 #include <QByteRef> 0028 #include <QVariant> 0029 #include <kjs/object.h> 0030 #include "kjsembed.h" 0031 0032 namespace KJS 0033 { 0034 class Interpreter; 0035 class Value; 0036 class List; 0037 class ExecState; 0038 } 0039 0040 namespace KJSEmbed 0041 { 0042 class KJSEMBED_EXPORT SlotProxy : public QObject 0043 { 0044 public: 0045 SlotProxy(KJS::JSObject *obj, KJS::Interpreter *interpreter, QObject *parent, const QByteArray &signature); 0046 ~SlotProxy() override; 0047 //Meta object stuff 0048 QMetaObject staticMetaObject; 0049 const QMetaObject *metaObject() const override; 0050 void *qt_metacast(const char *_clname) override; 0051 int qt_metacall(QMetaObject::Call _c, int _id, void **_a) override; 0052 0053 private: 0054 KJS::JSValue *callMethod(const QByteArray &methodName, void **_a); 0055 KJS::List convertArguments(KJS::ExecState *exec, void **_a); 0056 QByteArray m_signature; 0057 uint m_data[16]; 0058 QByteArray m_stringData; 0059 KJS::Interpreter *m_interpreter; 0060 KJS::JSObject *m_object; 0061 QVariant m_tmpResult; 0062 }; 0063 } 0064 #endif 0065