Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }