유저 데이터 다루기
void *lua_newuserdata (lua_State *L, size_t size);
해당하는 크기의 메모리를 가진 full userdata를 생성해서 스택의 맨 위에다 푸쉬한 다음, 그 메모리 블록의 주소를 반환한다.
void lua_pushlightuserdata (lua_State *L, void *p);
스택에다 light userdata, 즉 포인터를 푸쉬한다.
int lua_isuserdata (lua_State *L, int index); int lua_islightuserdata (lua_State *L, int index);
해당하는 인덱스의 아이템이 full 또는 light userdata인지의 여부를 반환한다.
void *lua_touserdata (lua_State *L, int index);
해당하는 인덱스의 아이템이 full userdata인 경우 메모리 블럭의 주소를 반환하고, light userdata인 경우, 포인터 값을 반환한다. 인덱스가 잘못되었거나, 해당 인덱스의 아이템이 userdata가 아닌 경우에는 NULL을 반환한다.