summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lua-plugin.cc43
-rw-r--r--src/lua-plugin.h9
-rw-r--r--src/plugin-luaconfigfiles.cc9
-rw-r--r--src/plugin-luaftgl.cc9
-rw-r--r--src/plugin-luagl.cc10
-rw-r--r--src/plugin-luahandle.cc12
-rw-r--r--src/plugin-luahttp.cc9
-rw-r--r--src/plugin-lualibs.cc9
-rw-r--r--src/plugin-luaocci.cc9
-rw-r--r--src/plugin-luaregex.cc9
-rw-r--r--src/plugin-luasql.cc9
-rw-r--r--src/plugin-luatask.cc9
-rw-r--r--src/plugin-luaxml.cc10
13 files changed, 156 insertions, 0 deletions
diff --git a/src/lua-plugin.cc b/src/lua-plugin.cc
new file mode 100644
index 0000000..79968a6
--- /dev/null
+++ b/src/lua-plugin.cc
@@ -0,0 +1,43 @@
+#include <lua-plugin.h>
+
+typedef void(*init_ptr_t)(Lua *);
+
+#ifdef _WIN32
+#include <windows.h>
+
+void LuaLoadPlugin(const String & _fname, Lua * L) throw (GeneralException) {
+ HMODULE handle;
+ String fname = _fname + ".dll";
+
+ if (!(handle = LoadLibraryEx(fname.to_charp(), NULL, LOAD_WITH_ALTERED_SEARCH_PATH)) &&
+ !(handle = LoadLibraryEx(fname.to_charp(), NULL, NULL))) {
+ throw GeneralException("File not found or error loading shared object file: " + fname + "; Error #" + String((int) GetLastError()));
+ }
+
+ init_ptr_t init_ptr = (init_ptr_t) GetProcAddress(handle, "init_plugin");
+
+ if (!init_ptr) {
+ throw GeneralException("No init pointer on plugin " + fname);
+ }
+
+ init_ptr(L);
+}
+#else
+#include <dlfcn.h>
+
+void LuaLoadPlugin(const String & fname, Lua * L) throw (GeneralException) {
+ void * handle = dlopen(("./" + fname + ".so").to_charp(), RTLD_NOW | RTLD_GLOBAL);
+
+ if (!handle) {
+ throw GeneralException("File not found or error loading shared object file: " + fname + "; " + dlerror());
+ }
+
+ init_ptr_t init_ptr = (init_ptr_t) dlsym(handle, "init_plugin");
+
+ if (!init_ptr) {
+ throw GeneralException("No init pointer on plugin " + fname);
+ }
+
+ init_ptr(L);
+}
+#endif
diff --git a/src/lua-plugin.h b/src/lua-plugin.h
new file mode 100644
index 0000000..dba8518
--- /dev/null
+++ b/src/lua-plugin.h
@@ -0,0 +1,9 @@
+#ifndef __LUA_PLUGIN_H__
+#define __LUA_PLUGIN_H__
+
+#include <BLua.h>
+#include <Exceptions.h>
+
+void LuaLoadPlugin(const String & fname, Lua * L) throw (GeneralException);
+
+#endif
diff --git a/src/plugin-luaconfigfiles.cc b/src/plugin-luaconfigfiles.cc
new file mode 100644
index 0000000..a174f6a
--- /dev/null
+++ b/src/plugin-luaconfigfiles.cc
@@ -0,0 +1,9 @@
+#include <LuaConfigFile.h>
+
+extern "C" {
+
+void init_plugin(Lua * L) {
+ LuaConfigFile::pushstatics(L);
+}
+
+}
diff --git a/src/plugin-luaftgl.cc b/src/plugin-luaftgl.cc
new file mode 100644
index 0000000..cd577b6
--- /dev/null
+++ b/src/plugin-luaftgl.cc
@@ -0,0 +1,9 @@
+#include <LuaFTGL.h>
+
+extern "C" {
+
+void init_plugin(Lua * L) {
+ LuaFTFont::pushstatics(L);
+}
+
+}
diff --git a/src/plugin-luagl.cc b/src/plugin-luagl.cc
new file mode 100644
index 0000000..2f0b55c
--- /dev/null
+++ b/src/plugin-luagl.cc
@@ -0,0 +1,10 @@
+#include <LuaGL.h>
+
+extern "C" {
+
+void init_plugin(Lua * L) {
+ luaopen_opengl(L);
+ L->pop();
+}
+
+}
diff --git a/src/plugin-luahandle.cc b/src/plugin-luahandle.cc
new file mode 100644
index 0000000..d2002af
--- /dev/null
+++ b/src/plugin-luahandle.cc
@@ -0,0 +1,12 @@
+#include <LuaHandle.h>
+
+extern "C" {
+
+void init_plugin(Lua * L) {
+ LuaInput::pushconstruct(L);
+ LuaOutput::pushconstruct(L);
+ LuaBuffer::pushconstruct(L);
+ LuaHandle::pushconstruct(L);
+}
+
+}
diff --git a/src/plugin-luahttp.cc b/src/plugin-luahttp.cc
new file mode 100644
index 0000000..819a2f3
--- /dev/null
+++ b/src/plugin-luahttp.cc
@@ -0,0 +1,9 @@
+#include <LuaHttp.h>
+
+extern "C" {
+
+void init_plugin(Lua * L) {
+ LuaHttpResponse::pushstatics(L);
+}
+
+}
diff --git a/src/plugin-lualibs.cc b/src/plugin-lualibs.cc
new file mode 100644
index 0000000..e364d9b
--- /dev/null
+++ b/src/plugin-lualibs.cc
@@ -0,0 +1,9 @@
+#include <loadlualibs.h>
+
+extern "C" {
+
+void init_plugin(Lua * L) {
+ LoadLuaLibs(L);
+}
+
+}
diff --git a/src/plugin-luaocci.cc b/src/plugin-luaocci.cc
new file mode 100644
index 0000000..8d9377e
--- /dev/null
+++ b/src/plugin-luaocci.cc
@@ -0,0 +1,9 @@
+#include <LuaOCCI.h>
+
+extern "C" {
+
+void init_plugin(Lua * L) {
+ LuaOCCI_pushstatics(L);
+}
+
+}
diff --git a/src/plugin-luaregex.cc b/src/plugin-luaregex.cc
new file mode 100644
index 0000000..694738c
--- /dev/null
+++ b/src/plugin-luaregex.cc
@@ -0,0 +1,9 @@
+#include <LuaRegex.h>
+
+extern "C" {
+
+void init_plugin(Lua * L) {
+ LuaRegex::pushstatics(L);
+}
+
+}
diff --git a/src/plugin-luasql.cc b/src/plugin-luasql.cc
new file mode 100644
index 0000000..c891942
--- /dev/null
+++ b/src/plugin-luasql.cc
@@ -0,0 +1,9 @@
+#include <LuaSQL.h>
+
+extern "C" {
+
+void init_plugin(Lua * L) {
+ LuaSQLConnection::pushstatics(L);
+}
+
+}
diff --git a/src/plugin-luatask.cc b/src/plugin-luatask.cc
new file mode 100644
index 0000000..b97e273
--- /dev/null
+++ b/src/plugin-luatask.cc
@@ -0,0 +1,9 @@
+#include <LuaTask.h>
+
+extern "C" {
+
+void init_plugin(Lua * L) {
+ LuaTaskMan::pushstatics(L);
+}
+
+}
diff --git a/src/plugin-luaxml.cc b/src/plugin-luaxml.cc
new file mode 100644
index 0000000..2cec871
--- /dev/null
+++ b/src/plugin-luaxml.cc
@@ -0,0 +1,10 @@
+#include <LuaXML.h>
+
+extern "C" {
+
+void init_plugin(Lua * L) {
+ luaopen_xml(L);
+ L->pop();
+}
+
+}