/* * 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 { /// /// Represents Scope. Scopes are used to store variables, types and functions /// public interface IScriptScope : IDisposable { /// /// Parent scope /// IScriptScope Parent { get; } /// /// Returns Item: variable, type or function /// /// id of item /// throws exception if item not found /// value of given ID object GetItem(string id, bool throwException); /// /// Sets Item: variable, type or function /// /// item's id /// value void SetItem(string id, object value); /// /// Create a new variable in this scope /// /// /// void CreateVariable(string id, object value); /// /// Returns true if excatly this scope has variable with given id /// /// /// bool HasVariable(string id); /// /// Creates reference to item with name id for caching. /// Note: It should not be called directly, only through ScriptContext /// /// /// IValueReference Ref(string id); /// /// Gets Invokable object (Function) by a given name /// /// Name /// IInvokable GetFunctionDefinition(string name); } }