[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: question: userdata cross references ?
- From: Francesco Abbate <gslshell@...>
- Date: Fri, 18 Dec 2009 23:39:38 +0100
2009/12/18 Sam Roberts <email@example.com>:
> On Fri, Dec 18, 2009 at 2:06 PM, Francesco Abbate <firstname.lastname@example.org> wrote:
>> I was thinking that it would be nice if the userdata could store one
>> or more reference to other userdata objects in order to ensure that
>> the GC does not free the main object that own the resource if other
>> objects that need the same resource are still alive. In my idea the C
>> API could be something like:
> Use lua_setfenv() to attach a table to your userdata.
> In that table, put a reference to the userdata you want to not be available
> for garbage collection while this new userdata exists.
Seems to be a nice solution! I was not aware that you can attach an
environment to a table. I think I'm going to stick with this solution
since it offers the same thing that I was suppose to achieve with
lua_setusedataref. I guess that in term of performance is still
reasonable... wait, is it really reasonable? to create a new
*environment* for each object ??? I guess yes since a new environment
it turns out to be just a Lua ordinary table.
In any case thank you very much for the help!