|
I have been looking at this page from the wiki http://lua-users.org/wiki/UserDataExample
I got this working OK, then thought I would extend it a bit to prove I understood things. I think I just proved I didn't understand things :( If have another example of using the C API for userdata where instead of having a table of functions I could manipulate items directly, for example a = myNewThing() a. fred = 123 -- uses __newindex print(a.fred) -- uses __index So I tried to extend the wiki page example to allow me to call functions on the userdata but also access items directly typedef struct Foo { int x; int y; int fred; <-- my new item I added } Foo; local a = Foo.new() a:setx(3) -- this works as per the example a.fred = 123 <-- how do I get this to work print(a.fred) <-- how do I get this to work Any tips please on how I would change the C api code to make this work in the above example. My failed attempt I added a __newindex and __index into the Foo_meta table, and some associated C code. The __newindex worked but the __index didn't work as I had overlooked the fact it was already pointing at the methods table. Thanks for any help Geoff |