/* * Copyright © 2011, Petro Protsyk, Denys Vuika * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; namespace Scripting.SSharp.Runtime { /// /// Handle operator execution. Objects implementing this /// interface may provide custom implementation for standard /// operators. /// /// Operator handlers may be registered through RuntimeHost /// public interface IOperatorHandler { /// /// Process HandleOperatorArgs and yields the result of executing operator /// /// an instance of HandleOperatorArgs /// result of handling operator object Process(HandleOperatorArgs args); } /// /// Is a class containing information for operator handlers /// public class HandleOperatorArgs : EventArgs { /// /// Operator symbol /// public string Symbol { get; private set; } /// /// Opertor Arguments /// public object[] Arguments { get; private set; } /// /// Result of operator execution /// public object Result { get; set; } /// /// Current execution context /// public IScriptContext Context { get; private set; } /// /// Flag which is used to cancel default behavior /// public bool Cancel { get; set; } public HandleOperatorArgs(IScriptContext context, string symbol, object[] arguments) { Symbol = symbol; Arguments = arguments; Context = context; Cancel = false; } } }