lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

Hello Luiz,

Saturday, December 9, 2006, 7:24:33 PM, you wrote:

>> Is there any way to get a state-wide unique reference to any
>> particular object in the state?

LHdF> The value itself is a good reference. Or you can try lua_topointer.
LHdF> --lhf

Before a lua object collected, the result of lua_topointer is never
changed. Am I right?

Can you guarantee this will not be changed in future version of lua ?
;) I saw some other language may move the objects during the garbage

I have another question.
When I use lua_newuserdata(or lua_touserdata) to get a pointer to the
memory , can I save it in my C struct directly? or I should use
lua_tousedata to convert the userdata to a pointer every time I need ?

For example:

struct array {
       int n;
       int *data;

int array_create(lua_State *L)
    int n = luaL_checkint(L, 1);
    struct array* ret=(struct array*)lua_newuserdata(L,sizeof(*ret));
    return 1;

int array_set(lua_State *L)
    struct array* a=(struct array*)lua_touserdata(L, 1);
    int n = luaL_checkint(L, 2);
    int d = luaL_checkint(L, 3);
    return 0;

Best regards,