[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Interfacing lua with C
- From: "jimmyp_gr <jimmyp@...>" <jimmyp@...>
- Date: Fri, 17 Jan 2003 00:19:59 -0000
> You should probably model C structures with Lua tables (or the
> as-yet-undocumented proxies, which look to be quite nice). Then the
problem
> is much simpler because you can define metamethods for the proxy
> tables/proxies without worrying about the global namespace at all.
No,no... I was to structs internal to C containing data about exported
(scalar) C vars,like memory pointer,type,flags etc.Regarding those
proxies though:I looked in google for lua and proxies,and having found
nothing, assumed they were not a lua feature.Is there any
(unofficial/incomplete/whatever) info on them?
>
> However, scalar C proxies still strike me as an interesting
question. So
> here is another solution.
>
> To pull this off, you need to at least associate a known metatable
This looks like much more trouble than it has to be to me.
I just finished with the following:
local g=getglobals()
local m={ --the new globals metatable
__newindex=function(t,k,v)
local cvar=cvartab[k];
if cvar~=nil then --a C symbol
setcvar(cvar,v)
else --a new lua symbol
rawset (t,k,v)
end
end
,
__index=function(t,k)
local cvar=cvartab[k];
if cvar~=nil then --a C symbol
return getcvar(cvar)
else --undefined symbol
return nil
end
end
}
setmetatable(g,m)
the cvartab table is created and filled via C a functions and holds
the structs with info I was talking about.getcvar/setcvar are simple C
functions to get/set the vars.This is more or less what Pter said.Will
it be slower than your method?BTW I meant to ask you guys.How are
table lookups implemented in lua.I was thinking wether it would be
(significantly)faster to store the info about cvars in an internal C
hash table for the lookups.Would there be any difference?I don't
think so.
Dimitris