[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: table deep copy in C/CPP
- From: Asko Kauppi <askok@...>
- Date: Sun, 21 Mar 2010 13:41:17 +0200
Mark Hamburg kirjoitti 20.3.2010 kello 19:27:
On Mar 20, 2010, at 1:54 AM, Asko Kauppi wrote:
If you are interested in copying functions, the Lanes code can do
that. It also copies upvalues.
Does it also copy the environment? How does it decide where to stop?
For example, if I stick math.sin into a local variable math_sin and
reference this as an upvalue in the function I'm passing, what does
I think it did not copy the environment, though that could actually be
implemented if needed.
It would copy the function given as upvalue. It only stops when
there's a recursion (i.e. it cannot copy a function which has itself
as upvalue, though even this could possibly be implemented, if needed).
One reason I made it was to see just how far one can go with existing
Lua API. Quite far, actually.
The responsibility of not overusing it (since any copying would
naturally have a runtime penalty) is up to the application programmer.
Naturally, once the copying has been done the two upvalues in the two
separate Lua states are completely detached. There is a separate
concept of shared states for inter-state communications.