Added calling interface to binding.
authorRui Guo <firemeteor.guo@gmail.com>
Sat, 6 Jun 2009 08:03:41 +0000 (6 16:03 +0800)
committerRui Guo <firemeteor.guo@gmail.com>
Sat, 6 Jun 2009 08:03:41 +0000 (6 16:03 +0800)
1. Added bd_call() interface to binding.
2. Tuned LuaCall() and fill it in the calling interface.
3. Do not directly call LuaCall anymore.

src/lua.c
src/script.c
src/script.h

index c734653..a6c01da 100644 (file)
--- a/src/lua.c
+++ b/src/lua.c
@@ -697,14 +697,14 @@ int LuaFinit(void)
   return 0;
 }
 
-int LuaCall(char **argv)
+int LuaCall(char *func, char **argv)
 {
   int argc;
   if (!L)
     return 0;
 
-  lua_getfield(L, LUA_GLOBALSINDEX, *argv);
-  for (argc = 0, argv++; *argv; argv++, argc++)
+  lua_getfield(L, LUA_GLOBALSINDEX, func);
+  for (argc = 0; *argv; argv++, argc++)
     {
       lua_pushstring(L, *argv);
     }
@@ -778,6 +778,7 @@ struct binding lua_binding =
     0,     /*registered*/
     LuaInit,
     LuaFinit,
+    LuaCall,
     LuaSource,
     0,     /*b_next*/
     &LuaFuncs
index 1ff127b..b2b3ccd 100644 (file)
@@ -103,13 +103,20 @@ ScriptSource(int argc, const char **argv)
     LMsg(1, "Could not source specified script %s", script);
 }
 
+int
+ScriptCall(const char *func, const char **argv)
+{
+  /*TODO*/
+  return LuaCall(func, argv);
+}
+
 void
 ScriptCmd(int argc, const char **argv)
 {
   const char * sub = *argv;
   argv++;argc--;
   if (!strcmp(sub, "call"))
-    LuaCall(argv);
+    ScriptCall(*argv, argv+1);
   else if (!strcmp(sub, "source"))
     ScriptSource(argc, argv);
 }
index 2a23e83..2492984 100644 (file)
@@ -38,6 +38,7 @@ struct binding
   int registered;
   int (*bd_Init) __P((void));
   int (*bd_Finit) __P((void));
+  int (*bd_call) __P((char *func, char **argv));
   /*Returns zero on failure, non zero on success*/
   int (*bd_Source) __P((const char *, int));
   struct binding *b_next;