[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: set a Lua table as metatable of a userdata?
- From: Javier Guerra <javier@...>
- Date: Wed, 16 Aug 2006 15:50:48 -0500
On Wednesday 16 August 2006 2:56 pm, lists@grahamwakefield.net wrote:
> I want to create a fulluserdata, but assign a Lua table to it as
> metatable (mt1), and in turn assign a C++ created metatable (mt2) to
> the first (mt1)
> Essentially, I want to be able to interact with a fulluserdata as if
> it were a table by treating mt1 as a proxy, and yet still inherit
> class methods from C functions in mt2.
your C code seems to be roughly equivalent to this in Lua:
function newInstance ()
local mt1 = {half = 0.5}
local mt2 = getclasstable()
local udata=newuserdata()
setmetatable (udata,mt1)
setmetatable (udata,mt2)
end
but what you want should be something like this:
function newInstance ()
local innerstorage = {half =0.5}
local mt1 = {__index = innerstorage}
local mt2 = getclasstable()
local udata=newuserdata()
setmetatable (udata,mt1)
setmetatable (udata,mt2)
end
i guess you should also put a setter function in mt1.__newindex, that is left
as an exercise.
--
Javier
Attachment:
pgpdH4G51OuZc.pgp
Description: PGP signature