Getting Values From Lua

lua-users home
wiki

Showing revision 5

Return values from dostring

Question: How can I get the return value of the Lua chunk executed by lua_dostring from the C side, i.e. like getting the result returned by the Lua dostring function?

(lhf) Just like the return values of any function. Here is an example:

lua_State *L=lua_open(0);
printf( "%d\n", lua_gettop(L) );
lua_dostring(L, "return 1,'a'" );
printf( "%d\n", lua_gettop(L) );
printf( "%s\n", lua_tostring(L,-2) );
printf( "%s\n", lua_tostring(L,-1) );
In general, you should take the k top values in the stack, where k is the difference between lua_gettop(L) before calling lua_dostring and lua_gettop(L) after calling it, that is, for indices from -1 to -k.


Note: These examples are for Lua 4.0. VersionNotice


Example code for Lua 5.0:

returnone.c:

#include <lua.h>
#include <lualib.h>

int main(int argc, char** argv)
{
  lua_State *L=lua_open();
  printf( "%d\n", lua_gettop(L) );
  lua_dostring(L, "return 1,'a'" );
  printf( "%d\n", lua_gettop(L) );
  printf( "%s\n", lua_tostring(L,-2) );
  printf( "%s\n", lua_tostring(L,-1) );
}

Build:

gcc -o returnone returnone.c -I/usr/include/lua50 -llua50 -llualib50

Run: # ./returnone

0
2
1
a

RecentChanges · preferences
edit · history · current revision
Edited January 6, 2007 6:21 pm GMT (diff)