summaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorPeng Wu <epico@dhcp-65-116.nay.redhat.com>2010-04-11 15:10:41 +0800
committerPeng Wu <alexepico@gmail.com>2010-05-19 10:09:32 +0800
commit83ae73bf667347973ce53f8124a64310b00b0805 (patch)
tree177acaebf4e76eaa53d69d73495caa20cf6b9ab2 /lua
parent7505cd8f7c7298f6db1dc1ad665b082810234944 (diff)
downloadibus-libpinyin-83ae73bf667347973ce53f8124a64310b00b0805.tar.gz
ibus-libpinyin-83ae73bf667347973ce53f8124a64310b00b0805.tar.xz
ibus-libpinyin-83ae73bf667347973ce53f8124a64310b00b0805.zip
refactor lua-plugin gobject interface.
Diffstat (limited to 'lua')
-rw-r--r--lua/lua-plugin-init.c35
-rw-r--r--lua/lua-plugin.c49
-rw-r--r--lua/lua-plugin.h10
3 files changed, 49 insertions, 45 deletions
diff --git a/lua/lua-plugin-init.c b/lua/lua-plugin-init.c
index 403be44..42c6f5c 100644
--- a/lua/lua-plugin-init.c
+++ b/lua/lua-plugin-init.c
@@ -29,41 +29,6 @@ void lua_plugin_openlibs (lua_State *L) {
}
}
-int lua_plugin_init(IBusEnginePluginPrivate * plugin){
- g_assert(NULL == plugin->L);
- /* initialize Lua */
- plugin->L = lua_open();
-
- /* enable libs in sandbox */
- lua_plugin_openlibs(plugin->L);
-
- if ( NULL == plugin->lua_commands )
- plugin->lua_commands = g_array_new(TRUE, TRUE, sizeof(lua_command_t));
-
- return 0;
-}
-
-int lua_plugin_fini(IBusEnginePluginPrivate * plugin){
- size_t i;
- lua_command_t * command;
-
- if ( plugin->lua_commands ){
- for ( i = 0; i < plugin->lua_commands->len; ++i){
- command = &g_array_index(plugin->lua_commands, lua_command_t, i);
- g_free((gpointer)command->command_name);
- g_free((gpointer)command->lua_function_name);
- g_free((gpointer)command->description);
- g_free((gpointer)command->leading);
- g_free((gpointer)command->help);
- }
- g_array_free(plugin->lua_commands, TRUE);
- plugin->lua_commands = NULL;
- }
-
- lua_close(plugin->L);
- return 0;
-}
-
static int ime_get_last_commit(lua_State* L){
/*TODO: not implemented. */
fprintf(stderr, "TODO: ime_get_last_commit unimplemented.\n");
diff --git a/lua/lua-plugin.c b/lua/lua-plugin.c
index db8aa43..beab34c 100644
--- a/lua/lua-plugin.c
+++ b/lua/lua-plugin.c
@@ -1,9 +1,18 @@
+#include <string.h>
#include <lua.h>
+#include <lualib.h>
+#include <lauxlib.h>
#include "lua-plugin.h"
#define IBUS_ENGINE_PLUGIN_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), IBUS_TYPE_ENGINE_PLUGIN, IBusEnginePluginPrivate))
+struct _IBusEnginePluginPrivate{
+ lua_State * L;
+ GArray * lua_commands; /* Array of lua_command_t. */
+};
+
+
G_DEFINE_TYPE (IBusEnginePlugin, ibus_engine_plugin, G_TYPE_OBJECT);
static void
@@ -37,6 +46,43 @@ ibus_engine_plugin_class_init (IBusEnginePluginClass *klass)
g_type_class_add_private (klass, sizeof (IBusEnginePluginPrivate));
}
+static int
+lua_plugin_init(IBusEnginePluginPrivate * plugin){
+ g_assert(NULL == plugin->L);
+ /* initialize Lua */
+ plugin->L = lua_open();
+
+ /* enable libs in sandbox */
+ lua_plugin_openlibs(plugin->L);
+
+ if ( NULL == plugin->lua_commands )
+ plugin->lua_commands = g_array_new(TRUE, TRUE, sizeof(lua_command_t));
+
+ return 0;
+}
+
+static int
+lua_plugin_fini(IBusEnginePluginPrivate * plugin){
+ size_t i;
+ lua_command_t * command;
+
+ if ( plugin->lua_commands ){
+ for ( i = 0; i < plugin->lua_commands->len; ++i){
+ command = &g_array_index(plugin->lua_commands, lua_command_t, i);
+ g_free((gpointer)command->command_name);
+ g_free((gpointer)command->lua_function_name);
+ g_free((gpointer)command->description);
+ g_free((gpointer)command->leading);
+ g_free((gpointer)command->help);
+ }
+ g_array_free(plugin->lua_commands, TRUE);
+ plugin->lua_commands = NULL;
+ }
+
+ lua_close(plugin->L);
+ return 0;
+}
+
static void
ibus_engine_plugin_init (IBusEnginePlugin *self)
{
@@ -44,7 +90,6 @@ ibus_engine_plugin_init (IBusEnginePlugin *self)
self->priv = priv = IBUS_ENGINE_PLUGIN_GET_PRIVATE (self);
- priv->L = NULL;
- priv->lua_commands = NULL;
+ memset(priv, 0, sizeof(IBusEnginePluginPrivate));
}
diff --git a/lua/lua-plugin.h b/lua/lua-plugin.h
index 1964101..677aab3 100644
--- a/lua/lua-plugin.h
+++ b/lua/lua-plugin.h
@@ -6,6 +6,8 @@
#define LUA_IMELIBNAME "ime"
LUALIB_API int (luaopen_ime) (lua_State * L);
+void lua_plugin_openlibs (lua_State *L);
+
typedef struct{
const char * command_name;
const char * lua_function_name;
@@ -64,12 +66,4 @@ const char * lua_plugin_ime_get_retval(IBusEnginePlugin * plugin);
*/
GArray * lua_plugin_ime_get_retvals(IBusEnginePlugin * plugin);
-/*< private >*/
-int lua_plugin_init(IBusEnginePluginPrivate * private);
-int lua_plugin_fini(IBusEnginePluginPrivate * private);
-
-struct _IBusEnginePluginPrivate{
- lua_State * L;
- GArray * lua_commands; /* Array of lua_command_t. */
-};
#endif