require("import") -- the import fn import("smart_pointer_multi") -- import lib into global spm=smart_pointer_multi --alias -- catching undefined variables local env = _ENV -- Lua 5.2 if not env then env = getfenv () end -- Lua 5.1 setmetatable(env, {__index=function (t,i) error("undefined global variable `"..i.."'",2) end}) foo = spm.Foo() foo.x = 5 assert( foo:getx() == 5 ) bar = spm.Bar(foo) spam = spm.Spam(bar) grok = spm.Grok(bar) assert( bar:getx() == 5 ) assert( spam:getx() == 5 ) spam.x = 7 assert( grok:getx() == 7 ) grok.x = 10 assert( foo:getx() == 10 )