summaryrefslogtreecommitdiff
path: root/plugins/SmartAutoReplier/LuaScript.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/SmartAutoReplier/LuaScript.h')
-rw-r--r--plugins/SmartAutoReplier/LuaScript.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/plugins/SmartAutoReplier/LuaScript.h b/plugins/SmartAutoReplier/LuaScript.h
new file mode 100644
index 0000000000..73c29c0a3f
--- /dev/null
+++ b/plugins/SmartAutoReplier/LuaScript.h
@@ -0,0 +1,68 @@
+/*
+ * Smart Auto Replier (SAR) - auto replier plugin for Miranda IM
+ *
+ * Copyright (C) 2004 - 2012 by Volodymyr M. Shcherbyna <volodymyr@shcherbyna.com>
+ *
+ * This code is inspired by article of RichardS at http://www.codeproject.com/Articles/11508/Integrating-Lua-into-C
+ *
+ * This file is part of SAR.
+ *
+ * SAR is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * SAR 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 General Public License
+ * along with SAR. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "luainc.h"
+#include "LuaBridge.h"
+
+///
+#define DEFAULT_INDEX_INITIALIZER 0
+
+class CLuaScript
+{
+public:
+ CLuaScript(CLuaBridge & luaBridge);
+ virtual ~CLuaScript();
+
+public:
+
+ static int LuaCallback (lua_State *lua);
+ bool CompileScript(const char *szScript, size_t nLength);
+ int RegisterFunction(const char *szFuncName);
+ bool SelectScriptFunction(const char *szFunction);
+ bool ScriptHasFunction(const char *szFunction);
+ bool Run(int nRetValues = 0);
+
+public:
+ void AddParam(int nValue);
+ void AddParam(float fValue);
+ void AddParam(char *szValue);
+ CLuaBridge & Bridge();
+
+ int MethodsCount();
+
+public:
+ virtual int ScriptCalling(CLuaBridge & luaBridge, int nFunction) = 0;
+ virtual void HandleReturns(CLuaBridge & luaBridge, const char * szFunction) = 0;
+
+protected:
+
+ CLuaBridge & m_luaBridge;
+
+ const char * m_szFunction;
+
+ int m_nMethods,
+ m_nThisRef,
+ m_nArgs;
+}; \ No newline at end of file