// Copyright 2010 Simon Edwards <simon@simonzone.com>

//                 Generated by twine2

// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License as
// published by the Free Software Foundation; either version 2, or
// (at your option) any later version.

// This program 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 General Public License for more details

// You should have received a copy of the GNU Library General Public
// License along with this program; if not, write to the
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

namespace KParts
{
class ScriptableExtension : QObject
{
%TypeHeaderCode
#include <kparts/scriptableextension.h>
%End

protected:
                            ScriptableExtension (QObject* parent /TransferThis/);
public:
    virtual ~ScriptableExtension ();
    static KParts::ScriptableExtension*  childObject (QObject* obj);
    static KParts::ScriptableExtension*  adapterFromLiveConnect (QObject* parentObj, KParts::LiveConnectExtension* oldApi);
    void                    setHost (KParts::ScriptableExtension* host);
    KParts::ScriptableExtension*  host () const;
    virtual QVariant        rootObject ();
    QVariant                enclosingObject ();
    typedef QList<QVariant> ArgList;
    virtual QVariant        callAsFunction (KParts::ScriptableExtension* callerPrincipal, quint64 objId, const KParts::ScriptableExtension::ArgList& args);
    virtual QVariant        callFunctionReference (KParts::ScriptableExtension* callerPrincipal, quint64 objId, const QString& f, const KParts::ScriptableExtension::ArgList& args);
    virtual QVariant        callAsConstructor (KParts::ScriptableExtension* callerPrincipal, quint64 objId, const KParts::ScriptableExtension::ArgList& args);
    virtual bool            hasProperty (KParts::ScriptableExtension* callerPrincipal, quint64 objId, const QString& propName);
    virtual QVariant        get (KParts::ScriptableExtension* callerPrincipal, quint64 objId, const QString& propName);
    virtual bool            put (KParts::ScriptableExtension* callerPrincipal, quint64 objId, const QString& propName, const QVariant& value);
    virtual bool            removeProperty (KParts::ScriptableExtension* callerPrincipal, quint64 objId, const QString& propName);
    virtual bool            enumerateProperties (KParts::ScriptableExtension* callerPrincipal, quint64 objId, QStringList* result);
    virtual bool            setException (KParts::ScriptableExtension* callerPrincipal, const QString& message);
    enum ScriptLanguage
    {
        ECMAScript,
        EnumLimit
    };
    virtual QVariant        evaluateScript (KParts::ScriptableExtension* callerPrincipal, quint64 contextObjectId, const QString& code, KParts::ScriptableExtension::ScriptLanguage language = KParts::ScriptableExtension::ECMAScript);
    virtual bool            isScriptLanguageSupported (KParts::ScriptableExtension::ScriptLanguage lang) const;
    virtual void            acquire (quint64 objid);
    virtual void            release (quint64 objid);
    static QVariant         acquireValue (const QVariant& v);
    static QVariant         releaseValue (const QVariant& v);
};
//ig unsigned int            qHash (const KParts::ScriptableExtension::Object& o);
//ig unsigned int            qHash (const KParts::ScriptableExtension::FunctionRef& f);
};
