[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Pushing a UserData pointer?
- From: Chris Marrin <chris@...>
- Date: Mon, 16 May 2005 21:03:26 -0700
Rici Lake wrote:
...
Is there another way to avoid the GC problem?
One of us is not being clear :)
You said:
This leaves the userdata on the stack, so my Object ctor fiddles with
it (gives it a common metatable and refs it so it doesn't get GC'ed).
Then it gets popped.
I assumed you meant by "refs it" that you used luaL_ref to create a
reference to it so that it *wouldn't* be collected. Now you seem to be
saying that you *want* it to be collected.
You could do either of those things, as Mark points out, by using both a
weak and a strong table with the weak table backing the strong table via
an __index meta
But perhaps I still don't understand...
You would not be the first to accuse me of obfuscation :-)
What I failed to say is that this ref I add to the object is temporary.
It is there long enough to pop out of all the C++ creation logic and get
back a fully initialized object. This is then handed off to Lua as a
global object or a member of some other table. Then the ref is removed.
After that, I want it to be under GC control like anything else.
Sorry about the confusion...
--
chris marrin ,""$,
cmarrin@arch.sel.sony.com b` $ ,,.
(408) 955-3049 mP b' , 1$'
Sony ,.` ,b` ,` :$$'
,|` mP ,` ,mm
,b" b" ,` ,mm m$$ ,m ,`P$$
m$` ,b` .` ,mm ,'|$P ,|"1$` ,b$P ,` :$1
b$` ,$: :,`` |$$ ,` $$` ,|` ,$$,,`"$$ .` :$|
b$| _m$`,:` :$1 ,` ,$Pm|` ` :$$,..;"' |$:
P$b, _;b$$b$1" |$$ ,` ,$$" ``' $$
```"```'" `"` `""` ""` ,P`
"As a general rule,don't solve puzzles that open portals to Hell"'