using System;
using System.Collections.Generic;
namespace ScriptNET.Runtime
{
///
/// Represents Scope. Scopes are used to store variables, types and functions
///
public interface IScriptScope
{
///
/// 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);
///
/// Returns true if excatly this scope has variable with given id
///
///
///
bool HasVariable(string id);
///
/// Cleans Scope (Removes items)
///
/// Type of cleanup
void Clean();
///
/// Gets Invokable object (Function) by a given name
///
/// Name
///
IInvokable GetFunctionDefinition(string name);
}
}