added two lua tutorials

git-svn-id: svn://anubis/misc/lua@130 bd8a9e45-a331-0410-811e-c64571078777
This commit is contained in:
josh 2009-09-12 15:17:53 +00:00
parent 78032af165
commit e74bc7d391
6 changed files with 134 additions and 0 deletions

9
tut/Makefile Normal file
View File

@ -0,0 +1,9 @@
TARGET := tut
CPPFLAGS := -I/usr/include/lua5.1
LDFLAGS := -llua5.1
all: $(TARGET)
$(TARGET): $(TARGET).cc
$(CXX) -o $@ $(CPPFLAGS) $(CXXFLAGS) $^ $(LDFLAGS)

3
tut/hello_world.lua Normal file
View File

@ -0,0 +1,3 @@
-- The first program in every language
io.write("Hello world, from", _VERSION, "!\n")

48
tut/tut.cc Normal file
View File

@ -0,0 +1,48 @@
#include <iostream>
#include <lua.hpp>
using namespace std;
void report_errors(lua_State * L, int status)
{
if ( status != 0 )
{
cerr << "-- " << lua_tostring(L, -1) << endl;
lua_pop(L, 1); // remove error message
}
}
int main(int argc, char ** argv)
{
for ( int n = 1; n < argc; ++n )
{
const char * file = argv[n];
lua_State * L = lua_open();
luaL_openlibs(L);
#if 0
luaopen_io(L); // provides io.*
luaopen_base(L);
luaopen_table(L);
luaopen_string(L);
luaopen_math(L);
#endif
cerr << "-- Loading file: " << file << endl;
int s = luaL_loadfile(L, file);
if ( s == 0 )
{
// execute Lua program
s = lua_pcall(L, 0, LUA_MULTRET, 0);
}
report_errors(L, s);
lua_close(L);
cerr << endl;
}
return 0;
}

9
tut2/Makefile Normal file
View File

@ -0,0 +1,9 @@
TARGET := tut
CPPFLAGS := -I/usr/include/lua5.1
LDFLAGS := -llua5.1
all: $(TARGET)
$(TARGET): $(TARGET).cc
$(CXX) -o $@ $(CPPFLAGS) $(CXXFLAGS) $^ $(LDFLAGS)

4
tut2/test.lua Normal file
View File

@ -0,0 +1,4 @@
io.write("Running ", _VERSION, "\n")
a = my_function(1, 2, 3, "abc", "def")
io.write("my_function() returned ", a, "\n")

61
tut2/tut.cc Normal file
View File

@ -0,0 +1,61 @@
#include <iostream>
#include <lua.hpp>
using namespace std;
int my_function(lua_State * L)
{
int argc = lua_gettop(L);
cerr << "-- my_function() called with " << argc
<< " arguments:" << endl;
for ( int n = 1; n <= argc; ++n )
{
cerr << "-- argument " << n << ": "
<< lua_tostring(L, n) << endl;
}
lua_pushnumber(L, 123); // return value
return 1; // number of return values
}
void report_errors(lua_State *L, int status)
{
if ( status!=0 )
{
cerr << "-- " << lua_tostring(L, -1) << endl;
lua_pop(L, 1); // remove error message
}
}
int main(int argc, char ** argv)
{
for ( int n = 1; n < argc; ++n )
{
const char * file = argv[n];
lua_State * L = lua_open();
luaL_openlibs(L);
// make my_function() available to Lua programs
lua_register(L, "my_function", my_function);
cerr << "-- Loading file: " << file << endl;
int s = luaL_loadfile(L, file);
if ( s == 0 )
{
// execute Lua program
s = lua_pcall(L, 0, LUA_MULTRET, 0);
}
report_errors(L, s);
lua_close(L);
cerr << endl;
}
return 0;
}