[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Need for help...
- From: Asko Kauppi <Asko.Kauppi@...>
- Date: Tue, 18 Feb 2003 12:34:14 +0200
Does anyone know what 'lua_newuserdata()' really is and why / where it
should be used?
I'm doing an (experimental) gluax compatibility cover over old-style C API.
The following extract is from 'luasocket.c':
    /* declare new Lua tags for used userdata values */
    p_tags tags = (p_tags) lua_newuserdata(L, sizeof(t_tags));
    tags->client = lua_newtag(L);
    tags->server = lua_newtag(L);
    tags->table = lua_newtag(L);
    tags->udp = lua_newtag(L);
'p_tags' is simply (same source file):
	typedef struct t_tags {
	    int client, server, table, udp;
	} t_tags;
	typedef t_tags *p_tags;
Question is, what is really the importance / need for 'lua_newuserdata()'?
It's not documented in 4.0 PDF and in my understanding, is just a fancy
'alloc'. I must be missing something...?
Declaration in 'luaapi.c':
	LUA_API void *lua_newuserdata (lua_State *L, size_t size) {
	  TString *ts = luaS_newudata(L, size, NULL);
	  tsvalue(L->top) = ts;
	  ttype(L->top) = LUA_TUSERDATA;
	  api_incr_top(L);
	  return ts->u.d.value;
	}
-ak
###########################################
This message has been scanned by F-Secure Anti-Virus for Microsoft Exchange.