summaryrefslogtreecommitdiffstats
path: root/lua/lua-plugin-init.c
diff options
context:
space:
mode:
Diffstat (limited to 'lua/lua-plugin-init.c')
-rw-r--r--lua/lua-plugin-init.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/lua/lua-plugin-init.c b/lua/lua-plugin-init.c
index 42c6f5c..996b314 100644
--- a/lua/lua-plugin-init.c
+++ b/lua/lua-plugin-init.c
@@ -29,6 +29,25 @@ void lua_plugin_openlibs (lua_State *L) {
}
}
+void lua_plugin_store_plugin(lua_State * L, IBusEnginePlugin * plugin){
+ luaL_newmetatable(L, LUA_IMELIBNAME);
+ lua_pushliteral(L, LUA_IMELIB_CONTEXT);
+ lua_pushlightuserdata(L, plugin);
+ lua_rawset(L, -3);
+ lua_pop(L, 1);
+}
+
+IBusEnginePlugin * lua_plugin_retrieve_plugin(lua_State * L) {
+ luaL_newmetatable(L, LUA_IMELIBNAME);
+ lua_pushliteral(L, LUA_IMELIB_CONTEXT);
+ lua_rawget(L, -2);
+ luaL_checktype(L, -1, LUA_TLIGHTUSERDATA);
+ IBusEnginePlugin * plugin = lua_touserdata(L, -1);
+ g_assert(IBUS_IS_ENGINE_PLUGIN(plugin));
+ lua_pop(L, 2);
+ return plugin;
+}
+
static int ime_get_last_commit(lua_State* L){
/*TODO: not implemented. */
fprintf(stderr, "TODO: ime_get_last_commit unimplemented.\n");