Scorpio.Runtime.ScriptContext.ResolveOperand C# (CSharp) Method

ResolveOperand() private method

private ResolveOperand ( CodeObject value ) : ScriptObject
value Scorpio.CodeDom.CodeObject
return Scorpio.ScriptObject
        ScriptObject ResolveOperand(CodeObject value)
        {
            m_script.SetStackInfo(value.StackInfo);
            ScriptObject ret = ResolveOperand_impl(value);
            if (value.Not) {
                ret = m_script.CreateBool(!ret.LogicOperation());
            }  else if (value.Negative) {
                ScriptNumber b = ret as ScriptNumber;
                if (b == null) throw new ExecutionException(m_script, "Script Object Type [" + ret.Type + "] is cannot use [-] sign");
                ret = b.Negative();
            }
            return ret;
        }
        ScriptObject ParseScriptObject(CodeScriptObject obj)

Usage Example

Example #1
0
        void ProcessCallFor()
        {
            CodeFor       code         = (CodeFor)m_scriptInstruction.Operand0;
            ScriptContext context      = code.Context;
            ScriptContext blockContext = code.BlockContext;

            context.Initialize(this);
            context.Execute(code.BeginExecutable);
            ScriptBoolean Condition;

            for ( ; ;)
            {
                if (code.Condition != null)
                {
                    Condition = context.ResolveOperand(code.Condition) as ScriptBoolean;
                    if (Condition == null)
                    {
                        throw new ExecutionException("for 跳出条件必须是一个bool型");
                    }
                    if (!Condition.Value)
                    {
                        break;
                    }
                }
                blockContext.Initialize(context);
                blockContext.Execute();
                if (blockContext.IsBreak)
                {
                    break;
                }
                context.Execute(code.LoopExecutable);
            }
        }
All Usage Examples Of Scorpio.Runtime.ScriptContext::ResolveOperand