void lua_pushusertag(void *u, int32 tag) { if (tag < 0 && tag != LUA_ANYTAG) luaT_realtag(tag); // error if tag is not valid tsvalue(lua_state->stack.top) = luaS_createudata(u, tag); ttype(lua_state->stack.top) = LUA_T_USERDATA; incr_top; luaC_checkGC(); }
void lua_pushusertag(int32 u, int32 tag) { if (tag < 0 && tag != LUA_ANYTAG) luaT_realtag(tag); // error if tag is not valid lua_state->stack.top->value.ud.id = u; lua_state->stack.top->value.ud.tag = tag; ttype(lua_state->stack.top) = LUA_T_USERDATA; incr_top; luaC_checkGC(); }
LUA_API void lua_settag (lua_State *L, int tag) { luaT_realtag(L, tag); switch (ttype(L->top-1)) { case LUA_TTABLE: hvalue(L->top-1)->htag = tag; break; case LUA_TUSERDATA: tsvalue(L->top-1)->u.d.tag = tag; break; default: luaO_verror(L, "cannot change the tag of a %.20s", luaO_typename(L->top-1)); } }
void lua_settag(int32 tag) { checkCparams(1); luaT_realtag(tag); switch (ttype(lua_state->stack.top - 1)) { case LUA_T_ARRAY: (lua_state->stack.top - 1)->value.a->htag = tag; break; case LUA_T_USERDATA: (lua_state->stack.top - 1)->value.ud.tag = tag; break; default: luaL_verror("cannot change the tag of a %.20s", luaO_typenames[-ttype((lua_state->stack.top - 1))]); } lua_state->stack.top--; }