コード例 #1
0
        internal void push(IntPtr l, object o, bool checkReflect, bool isArray = false)
        {
            if (o == null)
            {
                LuaDLL.lua_pushnil(l);
                return;
            }

            int index = -1;

            bool gco   = isGcObject(o);
            bool found = gco && objMap.TryGetValue(o, out index);

            if (found)
            {
                if (LuaDLL.luaS_getcacheud(l, index, udCacheRef) == 1)
                {
                    return;
                }
            }

            index = add(o);
#if SLUA_CHECK_REFLECTION
            int isReflect = LuaDLL.luaS_pushobject(l, index, isArray ? "LuaArray" : getAQName(o), gco, udCacheRef);
            if (isReflect != 0 && checkReflect && !isArray)
            {
                Logger.LogWarning(string.Format("{0} not exported, using reflection instead", o.ToString()));
            }
#else
            LuaDLL.luaS_pushobject(l, index, isArray?"LuaArray":getAQName(o), gco, udCacheRef);
#endif
        }
コード例 #2
0
        public static string GetLuaAddr(IntPtr l, int objIndex, int cref)
        {
            string luaAddr = string.Empty;

            if (LuaDLL.luaS_getcacheud(l, objIndex, cref) == 1)
            {
                IntPtr p = LuaDLL.lua_topointer(l, -1);
                LuaDLL.lua_pop(l, 1);
                luaAddr = string.Format("{0:x8}", p.ToInt64());
            }
            return(luaAddr);
        }
コード例 #3
0
        /// <summary>
        /// push o to cache list
        /// </summary>
        /// <param name="l"></param>
        /// <param name="o"></param>
        /// <returns></returns>
		internal int allocID(IntPtr l,object o) {

			int index = -1;

			if (o == null)
			{
				LuaDLL.lua_pushnil(l);
				return index;
			}

			bool gco = isGcObject(o);
			bool found = gco && objMap.TryGetValue(o, out index);
			if (found)
			{
                //already found, do not need to add again
				if (LuaDLL.luaS_getcacheud(l, index, udCacheRef) == 1)
					return -1;
			}

			index = add(o);
			return index;
		}
コード例 #4
0
ファイル: ObjectCache.cs プロジェクト: 372784535/ResConfig
        internal int allocID(IntPtr l, object o)
        {
            int index = -1;

            if (o == null)
            {
                LuaDLL.lua_pushnil(l);
                return(index);
            }

            bool gco   = isGcObject(o);
            bool found = gco && objMap.TryGetValue(o, out index);

            if (found)
            {
                if (LuaDLL.luaS_getcacheud(l, index, udCacheRef) == 1)
                {
                    return(-1);
                }
            }

            index = add(o);
            return(index);
        }
コード例 #5
0
ファイル: ObjectCache.cs プロジェクト: moto2002/hugula
        internal void push(IntPtr l, object o)
        {
            if (o == null)
            {
                LuaDLL.lua_pushnil(l);
                return;
            }

            int index = -1;

            bool gco   = isGcObject(o);
            bool found = gco && objMap.TryGetValue(o, out index);

            if (found)
            {
                if (LuaDLL.luaS_getcacheud(l, index, udCacheRef) == 1)
                {
                    return;
                }
            }

            index = add(o);
            LuaDLL.luaS_pushobject(l, index, getAQName(o), gco, udCacheRef);
        }