void luaL_checknewid(lua_State *L, int numArg, lua_ID *id);
luaL_checknewid() can
be used from functions that add a new Hollywood object to a user-defined object
list registered using the hw_RegisterUserObject()
function. See hw_RegisterUserObject for details.
As you might know, the Hollywood standard for functions that create new Hollywood
objects is that the user can either pass a numerical value that the object should
use or he can pass Nil to make the function choose a vacant identifier for the
new object on its own. See Object identifiers for details. What luaL_checknewid()
does is simply to see if a numerical value is on the stack or Nil. In case Nil
is at the specified stack index, luaL_checknewid() will set the ptr member of
the lua_ID structure to (void *) 1. This is of course not a valid
identifier. It is only a temporary set up to tell your function that the user
has passed Nil. Your function then has to set the ptr member to the real object
identifier and push it into the stack using lua_pushlightuserdata(). If ptr
is NULL, however, your function simply has to use the identifier passed in the
num member of the lua_ID structure and return nothing.
See Object identifiers for details.
lua_Statelua_ID to receive the object identifier passed by the user