Solved, missed something from the previous page
Code:
struct NumArray{
int size;
};
static int newarray(lua_State l){
int n = lua_tonumber(l, 1);
NumArray *a = (NumArray *)lua_newuserdata(l, sizeof(NumArray));
luaL_getmetatable(L, "LuaBook.array");
lua_setmetatable(L, -2);
a->size = n;
return 1;
}
static int printarray(lua_State l)
{
NumArray *a = (NumArray*)lua_touserdata(l, 1);
printf("%d", a->size);
return 0;
}
luaL_Reg arraylib_f[] =
{
{ "new", newarray },
{ NULL, NULL }
};
luaL_Reg arraylib_m[] =
{
{ "print", printarray },
{ NULL, NULL }
};
int luaopen_array (lua_State *L) {
luaL_newmetatable(l, "LuaBook.array");
lua_pushstring(l, "__index");
lua_pushvalue(l, -2);
lua_settable(l, -3);
luaL_openlib(l, NULL, arraylib_m, 0);
luaL_openlib(l, "array", arraylib_f, 0);
}
Now this works!
Code:
a = array.new(1)
a:print();