LeechCraft 0.6.70-14794-g33744ae6ce
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
iscriptloader.h
Go to the documentation of this file.
1/**********************************************************************
2 * LeechCraft - modular cross-platform feature rich internet client.
3 * Copyright (C) 2006-2014 Georg Rudoy
4 *
5 * Distributed under the Boost Software License, Version 1.0.
6 * (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7 **********************************************************************/
8
9#ifndef INTERFACES_ISCRIPTLOADER_H
10#define INTERFACES_ISCRIPTLOADER_H
11#include <memory>
12#include <QVariant>
13
19class Q_DECL_EXPORT IScript
20{
21public:
22 virtual ~IScript () {}
23
28 virtual QObject* GetQObject () = 0;
29
47 virtual QVariant InvokeMethod (const QString& name,
48 const QVariantList& args = {}) = 0;
49
64 virtual void AddQObject (QObject *object, const QString& name) = 0;
65
76 virtual void Execute () = 0;
77};
78
79typedef std::shared_ptr<IScript> IScript_ptr;
80
113class Q_DECL_EXPORT IScriptLoaderInstance
114{
115public:
117
122 virtual QObject* GetQObject () = 0;
123
130 virtual void AddGlobalPrefix () = 0;
131
136 virtual void AddLocalPrefix (QString prefix = QString ()) = 0;
137
146 virtual QStringList EnumerateScripts () const = 0;
147
150 virtual QVariantMap GetScriptInfo (const QString& script) = 0;
151
168 virtual IScript_ptr LoadScript (const QString& script) = 0;
169};
170
171typedef std::shared_ptr<IScriptLoaderInstance> IScriptLoaderInstance_ptr;
172
186class Q_DECL_EXPORT IScriptLoader
187{
188public:
189 virtual ~IScriptLoader () {}
190
206 virtual IScriptLoaderInstance_ptr CreateScriptLoaderInstance (const QString& relPath) = 0;
207};
208
209Q_DECLARE_INTERFACE (IScript, "org.Deviant.LeechCraft.IScript/1.0")
210Q_DECLARE_INTERFACE (IScriptLoaderInstance, "org.Deviant.LeechCraft.IScriptLoaderInstance/1.0")
211Q_DECLARE_INTERFACE (IScriptLoader, "org.Deviant.LeechCraft.IScriptLoader/1.0")
212
213#endif
Interface for objects representing scripts.
Definition: iscriptloader.h:20
virtual QVariant InvokeMethod(const QString &name, const QVariantList &args={})=0
Runs the given function and returns its value.
virtual ~IScript()
Definition: iscriptloader.h:22
virtual QObject * GetQObject()=0
Returns this script object as a QObject.
virtual void AddQObject(QObject *object, const QString &name)=0
Adds the given object to the script context.
virtual void Execute()=0
Executes the script.
Interface for plugins providing scripting.
virtual IScriptLoaderInstance_ptr CreateScriptLoaderInstance(const QString &relPath)=0
Creates an instance of the script loader.
virtual ~IScriptLoader()
Interface for script loaders.
virtual void AddGlobalPrefix()=0
Adds a global load prefix.
virtual IScript_ptr LoadScript(const QString &script)=0
Loads the given script.
virtual ~IScriptLoaderInstance()
virtual QObject * GetQObject()=0
Returns this loader instance as a QObject.
virtual void AddLocalPrefix(QString prefix=QString())=0
Adds a local load prefix.
virtual QVariantMap GetScriptInfo(const QString &script)=0
Returns the metadata of the given script.
virtual QStringList EnumerateScripts() const =0
Lists all available scripts.
std::shared_ptr< IScriptLoaderInstance > IScriptLoaderInstance_ptr
std::shared_ptr< IScript > IScript_ptr
Definition: iscriptloader.h:79