public Dictionary <object, object> GetDictionary(LuaState luaState, int stackPos) { LuaTable table = GetTable(luaState, stackPos); Dictionary <object, object> dict = new Dictionary <object, object>(); int oldTop = LuaLib.LuaGetTop(luaState); Push(luaState, table); LuaLib.LuaPushNil(luaState); while (LuaLib.LuaNext(luaState, -2) != 0) { var key = GetObject(luaState, -2); var value = GetObject(luaState, -1); if (key is LuaTable) { key = GetDictionary(luaState, -2); } if (value is LuaTable) { value = GetDictionary(luaState, -1); } LuaLib.LuaSetTop(luaState, -2); dict[key] = value; } LuaLib.LuaSetTop(luaState, oldTop); return(dict); }
public Dictionary <object, object> GetTableDict(LuaTable table) { var dict = new Dictionary <object, object> (); int oldTop = LuaLib.LuaGetTop(luaState); translator.Push(luaState, table); LuaLib.LuaPushNil(luaState); while (LuaLib.LuaNext(luaState, -2) != 0) { dict [translator.GetObject(luaState, -2)] = translator.GetObject(luaState, -1); LuaLib.LuaSetTop(luaState, -2); } LuaLib.LuaSetTop(luaState, oldTop); return(dict); }