Beispiel #1
0
        public static void LoadString()
        {
            StackState s = RunEnvironment.Instance.LocalStack;

            ScriptObject arg1 = s.GetStackVar(0);

            if (arg1.Type == ScriptInterpreter.RunTime.ValueType.STRING)
            {
                Expression e = RunEnvironment.Instance.CompilationUnit(arg1.Value.RefPartHandle.StringValue);

                Func <ScriptObject> a = Expression.Lambda <Func <ScriptObject> >(e).Compile();

                ScriptObject resoult = a();

                if (resoult == null)
                {
                    s.SetReturnVoid();
                }

                else
                {
                    s.SetReturn(resoult);
                }

                return;
            }
            s.SetReturnVoid();
        }
Beispiel #2
0
        public static void SetMetatable()
        {
            StackState s = RunEnvironment.Instance.LocalStack;

            ScriptObject arg1 = s.GetStackVar(0);

            ScriptObject arg2 = s.GetStackVar(1);

            if (arg1.Type != ScriptInterpreter.RunTime.ValueType.TABLE || arg2.Type != ScriptInterpreter.RunTime.ValueType.TABLE)
            {
                return;
            }

            TablePart table = arg1.Value.RefPartHandle.ConverToTablePart();

            table.MetaTable = arg2;
        }
Beispiel #3
0
        public static void GetTypeOf()
        {
            StackState s = RunEnvironment.Instance.LocalStack;

            ScriptObject arg1 = s.GetStackVar(0);

            ScriptObject resoult = ScriptObject.CreateString(arg1.GetTypeof());

            s.SetReturn(resoult);
        }
Beispiel #4
0
        public static void Error()
        {
            StackState s = RunEnvironment.Instance.LocalStack;

            ScriptObject arg1 = s.GetStackVar(0);

            if (arg1.Type == ScriptInterpreter.RunTime.ValueType.STRING)
            {
                string message = arg1.GetString();

                throw new ScriptRunTimeException(message);
            }
            s.SetReturnVoid();
        }
Beispiel #5
0
        public static void OutPut()
        {
            StackState s = RunEnvironment.Instance.LocalStack;
            //获得第一个参数
            ScriptObject arg1 = s.GetStackVar(0);

            TablePart tablePart = arg1.Value.RefPartHandle.ConverToTablePart();

            for (int i = 0; i < tablePart.Count; i++)
            {
                Console.Write(tablePart.ArrayPart[i].GetString() + " ");
            }

            s.SetReturnVoid();
        }
Beispiel #6
0
        public static void GetMetatable()
        {
            StackState s = RunEnvironment.Instance.LocalStack;

            ScriptObject arg1 = s.GetStackVar(0);

            if (arg1.Type == ScriptInterpreter.RunTime.ValueType.TABLE)
            {
                ScriptObject metaTable = arg1.Value.RefPartHandle.ConverToTablePart().MetaTable;

                if (metaTable != null)
                {
                    s.SetReturn(metaTable);
                }
            }
            s.SetReturnVoid();
        }