The method for calling Lua functions from C has already been covered in the Loading a Lua file section of this chapter—it's lua_pcall. This time around, we will be using the second and third arguments of the function. As a reminder, the second argument is the number of arguments on the stack for Lua to consume, and the third argument is the number of values we expect Lua to leave on the stack for us.
Let's make an example function in Lua that takes two numbers and returns a linear index into a matrix. Only the Lua code will know the width of the matrix. The Lua code for finding this linear index will look something like this:
num_columns = 7
function GetIndex(row, col)
return row * num_columns + col
end
The preceding Lua function expects two variables to be on the stack: row and col. It will leave one value on the stack. Next, let...