Exemple #1
0
        public static bool PushObjFromCache(IntPtr l, object obj)
        {
            if (LuaObjCacheSlim.TryPush(l, obj))
            {
                return(true);
            }

            var cache = GetObjCache(l);

            if (cache != null)
            {
                IntPtr h;
                if (cache._Map.TryGetValue(obj, out h))
                {
                    l.checkstack(5);
                    PushObjCacheReg(l); // reg
                    if (!l.istable(-1))
                    {
                        l.pop(1);
                        return(false);
                    }
                    l.pushlightuserdata(h); // reg h
                    l.gettable(-2);         // reg ud
                    if (l.isnoneornil(-1))
                    {
                        l.pop(2); // X
                        return(false);
                    }
                    l.remove(-2); // ud
                    return(true);
                }
            }
            return(false);
        }