--Lua Stack content (execute to pop statement) stack address <--EXECUTE statementSpace_name[name] = T1--(2B8)--Lua_rawset (L,-4);--T1[__GC] = destroyer<t>--(2D8)--Lua_rawset (L,-3);--destroyer<t>--(2F8)--Lua_pushcclosure (L, Destroyer<t>, 0);--__gc--(2e8)--lua_pushstring (L, "__gc");--T1[__newindex] = meta_set--(2D8)--Lua_rawset (L,-3);--Meta_set--(2F8)--Lua_pushcclosure (L, Meta_set, 0);--__newindex--(2e8)--lua_pushstring (L, "__newindex");--T1[__index] = meta_get--(2D8)--Lua_rawset (L,-3);--Meta_get--(2F8)--Lua_pushcclosure (L, meta_get, 0);--__index--(2e8)--lua_pushstring (L, "__index");--T1[__name] = name--(2D8)--Lua_rawset (L,-3);--name--(2F8)--lua_pushstring (L, name);--__name--(2e8)--lua_pushstring (L, "__name");--setmetatable (T1, T2)--(2D8)--lua_setmetatable (L,-2);--T2[__index] = static_meta_get--(2e8)--Lua_rawset (L,-3);--Static_meta_get--(308)--Lua_pushcclosure (L, static_meta_get, 0);--__index--(2F8)--lua_pushstring (L, "__index");--T2--(2e8)--lua_newtable (L);--T1--(2D8)--lua_newtable (L);--name--(2C8)--lua_pushstring (L, name);--Space_name[name]--(2B8)--Lua_rawget (L,-2);--name--(2B8)--lua_pushstring (L, name);Space_name--(2A8)--Push_meta (L, space_name::name);L--(298)--Initial state
--C + + Class Registration function (Luatinker)--supports registering to a namespace namespace
Template<typename t>voidClass_addex (lua_state* L,Const Char*name) {Push_meta (L, Space_name::name ()); if(Lua_istable (L,-1) ) {class_name<T>:: Name (name); Lua_pushstring (L, name); Lua_rawget (L,-2); if(!lua_istable (L,-1) {lua_pushstring (L, name); Lua_newtable (L); Lua_newtable (L); Lua_pushstring (L,"__index"); Lua_pushcclosure (L, Static_meta_get,0); Lua_rawset (L,-3); Lua_setmetatable (L,-2); Lua_pushstring (L,"__name"); Lua_pushstring (L, name); Lua_rawset (L,-3); Lua_pushstring (L,"__index"); Lua_pushcclosure (L, Meta_get,0); Lua_rawset (L,-3); Lua_pushstring (L,"__newindex"); Lua_pushcclosure (L, Meta_set,0); Lua_rawset (L,-3); Lua_pushstring (L,"__gc"); Lua_pushcclosure (L, destroyer<t>,0); Lua_rawset (L,-3); Lua_rawset (L,-4); }} lua_pop (L,2);}
LUA-stack operations for LUA and C + + interaction--an example of registering C + + classes in Luatinker