Exemplo n.º 1
0
        public static DynValue setmetatable(ScriptExecutionContext executionContext, CallbackArguments args)
        {
            var table     = args.AsType(0, "setmetatable", DataType.Table);
            var metatable = args.AsType(1, "setmetatable", DataType.Table, true);

            var curmeta = executionContext.GetMetamethod(table, "__metatable");

            if (curmeta != null)
            {
                throw new ScriptRuntimeException("cannot change a protected metatable");
            }

            table.Table.MetaTable = metatable.Table;
            return(table);
        }
Exemplo n.º 2
0
		public static DynValue setmetatable(ScriptExecutionContext executionContext, CallbackArguments args)  
		{
			DynValue table = args.AsType(0, "setmetatable", DataType.Table);
			DynValue metatable = args.AsType(1, "setmetatable", DataType.Table, true);

			DynValue curmeta = executionContext.GetMetamethod(table, "__metatable");

			if (curmeta != null)
			{
				throw new ScriptRuntimeException("cannot change a protected metatable");
			}

			table.Table.MetaTable = metatable.Table;
			return table;
		}
Exemplo n.º 3
0
        private static int GetTableLength(ScriptExecutionContext executionContext, DynValue vlist)
        {
            var __len = executionContext.GetMetamethod(vlist, "__len");

            if (__len != null)
            {
                var lenv = executionContext.GetScript().Call(__len, vlist);

                var len = lenv.CastToNumber();

                if (len == null)
                {
                    throw new ScriptRuntimeException("object length is not a number");
                }

                return((int)len);
            }

            return(vlist.Table.Length);
        }
Exemplo n.º 4
0
        private static int GetTableLength(ScriptExecutionContext executionContext, DynValue vlist)
        {
            DynValue __len = executionContext.GetMetamethod(vlist, "__len");

            if (__len.IsValid)
            {
                DynValue lenv = executionContext.GetScript().Call(__len, vlist);

                double len;

                if (lenv.TryCastToNumber(out len))
                {
                    return((int)len);
                }

                throw new ScriptRuntimeException("object length is not a number");
            }
            else
            {
                return((int)vlist.Table.Length);
            }
        }
Exemplo n.º 5
0
        private static int GetTableLength(ScriptExecutionContext executionContext, DynValue vlist)
        {
            var __len = executionContext.GetMetamethod(vlist, "__len");

            if (__len != null)
            {
                var lenv = executionContext.GetScript().Call(__len, vlist);

                var len = lenv.CastToNumber();

                if (len == null)
                    throw new ScriptRuntimeException("object length is not a number");

                return (int) len;
            }
            return vlist.Table.Length;
        }