}
}
-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");
+#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
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)
{
self->priv = priv = IBUS_ENGINE_PLUGIN_GET_PRIVATE (self);
- priv->L = NULL;
- priv->lua_commands = NULL;
+ memset(priv, 0, sizeof(IBusEnginePluginPrivate));
}
#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;
*/
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