[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: question: userdata cross references ?
- From: Francesco Abbate <gslshell@...>
- Date: Sat, 19 Dec 2009 00:13:20 +0100
2009/12/19 Javier Guerra <javier@guerrag.com>:
> On Fri, Dec 18, 2009 at 5:06 PM, Francesco Abbate <gslshell@gmail.com> 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.
>
> wouldn't it be much lighter to add a refcount field to your C data?
> increment when you add a Lua userdata, decrement on __gc, dispose if
> reaches zero.
this is what I've done but it forced me to add a stupid
unsigned ref_count
on all my C++ classes with a couple of ref and unref methods. Ideally
I would have liked to not touch the beautiful structures of my C++
classes and let Lua GC be aware of the cross-references.
For the other side I agree that it is the most efficient solution.
Francesco