CallbackFunction *CallbackFunction::create_from_stack(lua_State *L, int pos) { if (lua_type(L, pos) == LUA_TUSERDATA) { return checkarg<CallbackFunction>(L, pos); } else if (lua_type(L, pos) == LUA_TNIL) { return NULL; } else { LuaFunction *f = create<LuaFunction>(L); f->hold(pos, "lua_callback"); return f; } }