Calling Lua functions from C
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's create a C wrapper function that has a similar name and signature. This wrapper function is expected to run in a valid Lua context...