コード例 #1
0
        public void RegisteredBooleanTypeProcedureDoesExist()
        {
            var engine   = new Engine();
            var captured = default(Object);

            TypeProcedures.Register <Boolean>(_ => (args, value) => { captured = value; });
            engine.Interpret("true(3) = 5");
            TypeFunctions.Unregister <Boolean>();
            Assert.AreEqual(5.0, captured);
        }
コード例 #2
0
        public void Invoke(IExecutionContext context)
        {
            var value     = context.Pop();
            var obj       = context.Pop();
            var function  = default(Procedure);
            var arguments = new Object[_length];

            for (var i = 0; i < arguments.Length; i++)
            {
                arguments[i] = context.Pop();
            }

            if (obj != null && TypeProcedures.TryFind(obj, out function))
            {
                function.Invoke(arguments, value);
            }

            context.Push(value);
        }