|
|
||
|
You should probably model C structures with Lua tables (or the as-yet-undocumented proxies, which look to be quite nice). Then theproblemis 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 interestingquestion. Sohere is another solution. To pull this off, you need to at least associate a known metatableThis 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