2018-08-22 21:33:38 +02:00
|
|
|
/*****************************************************************************
|
|
|
|
* luaEngine Lua Engine for Qt
|
2019-09-20 03:24:32 +02:00
|
|
|
* Copyright (C) 2018-2019 Syping
|
2018-08-22 21:33:38 +02:00
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*****************************************************************************/
|
|
|
|
|
|
|
|
#ifndef LUAENGINE_H
|
|
|
|
#define LUAENGINE_H
|
|
|
|
|
|
|
|
#include "LuaEngine_global.h"
|
|
|
|
#include <QVariantList>
|
|
|
|
#include <QByteArray>
|
|
|
|
#include <QIODevice>
|
|
|
|
#include <QVariant>
|
|
|
|
#include <QString>
|
|
|
|
#include <QObject>
|
|
|
|
extern "C" {
|
|
|
|
#include "../lua/lua.h"
|
|
|
|
#include "../lua/lualib.h"
|
|
|
|
#include "../lua/lauxlib.h"
|
2019-10-14 21:19:14 +02:00
|
|
|
#include "../lua/llimits.h"
|
2018-08-22 21:33:38 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
class LUAENGINESHARED_EXPORT LuaEngine : public QObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
LuaEngine(QObject *parent = nullptr, bool loadBaseLibraries = true);
|
|
|
|
~LuaEngine();
|
|
|
|
lua_State* luaState();
|
|
|
|
void loadBaseLibraries();
|
2019-10-14 21:19:14 +02:00
|
|
|
QByteArray dumpLuaScript();
|
|
|
|
bool loadLuaScript(const QByteArray &data);
|
|
|
|
bool loadLuaScript(QIODevice *device, bool closeDevice = true);
|
2018-08-22 21:33:38 +02:00
|
|
|
bool executeLuaScript(const QByteArray &data);
|
|
|
|
bool executeLuaScript(QIODevice *device, bool closeDevice = true);
|
|
|
|
bool executeLuaFunction(const char *name, bool requireReturn = false);
|
|
|
|
static bool executeLuaFunction(lua_State *L_p, const char *name, bool requireReturn = false);
|
|
|
|
bool executeLuaFunction(const char *name, const QVariant &argument, bool requireReturn = false);
|
|
|
|
static bool executeLuaFunction(lua_State *L_p, const char *name, const QVariant &argument, bool requireReturn = false);
|
|
|
|
bool executeLuaFunction(const char *name, const QVariantList &args, bool requireReturn = false);
|
|
|
|
static bool executeLuaFunction(lua_State *L_p, const char *name, const QVariantList &args, bool requireReturn = false);
|
|
|
|
void pushFunction(const char *name, lua_CFunction function);
|
|
|
|
static void pushFunction(lua_State *L_p, const char *name, lua_CFunction function);
|
|
|
|
void pushPointer(const char *name, void *pointer);
|
|
|
|
static void pushPointer(lua_State *L_p, const char *name, void *pointer);
|
|
|
|
void pushPointer(void *pointer);
|
|
|
|
static void pushPointer(lua_State *L_p, void *pointer);
|
|
|
|
void pushVariant(const char *name, const QVariant &variant);
|
|
|
|
static void pushVariant(lua_State *L_p, const char *name, const QVariant &variant);
|
|
|
|
void pushVariant(const QVariant &variant);
|
|
|
|
static void pushVariant(lua_State *L_p, const QVariant &variant);
|
|
|
|
QVariant getVariant(const char *name);
|
|
|
|
static QVariant getVariant(lua_State *L_p, const char *name);
|
|
|
|
QVariant getVariant(int index);
|
|
|
|
static QVariant getVariant(lua_State *L_p, int index);
|
|
|
|
void* returnPointer();
|
|
|
|
static void* returnPointer(lua_State *L_p);
|
|
|
|
void* getPointer(const char* name);
|
|
|
|
static void* getPointer(lua_State *L_p, const char* name);
|
|
|
|
void* getPointer(int index);
|
|
|
|
static void* getPointer(lua_State *L_p, int index);
|
|
|
|
QVariant returnVariant();
|
|
|
|
static QVariant returnVariant(lua_State *L_p);
|
|
|
|
static QVariantList getArguments(lua_State *L_p);
|
|
|
|
static int getArgumentCount(lua_State *L_p);
|
|
|
|
|
|
|
|
private:
|
|
|
|
lua_State *L;
|
2019-10-14 21:19:14 +02:00
|
|
|
static int luaEngineWriter_p(lua_State *L_p, const void *buffer, size_t size, void *array);
|
2018-08-22 21:33:38 +02:00
|
|
|
static int luaEngineVersion_p(lua_State *L_p);
|
2018-09-14 04:45:57 +02:00
|
|
|
static int luaEnginePlatform_p(lua_State *L_p);
|
2018-09-15 01:56:50 +02:00
|
|
|
static int luaObjectDelete_p(lua_State *L_p);
|
2020-05-19 20:50:03 +02:00
|
|
|
static int luaObjectGetParent_p(lua_State *L_p);
|
|
|
|
static int luaObjectSetParent_p(lua_State *L_p);
|
2018-08-23 16:09:44 +02:00
|
|
|
static int luaTriggerConnect_p(lua_State *L_p);
|
2018-08-23 16:58:28 +02:00
|
|
|
static int luaTriggerDisconnect_p(lua_State *L_p);
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void luaTriggerSlot_p();
|
2018-08-22 21:33:38 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // LUAENGINE_H
|