#region License Information
/* HeuristicLab
* Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
*
* This file is part of HeuristicLab.
*
* HeuristicLab is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* HeuristicLab is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with HeuristicLab. If not, see .
*/
#endregion
using System;
using System.Collections;
using System.Collections.Generic;
using System.Dynamic;
using System.IO;
using System.Text;
using HeuristicLab.Common;
namespace HeuristicLab.Scripting {
public abstract class UserScriptBase {
protected dynamic vars;
private readonly EventWriter console;
protected EventWriter Console {
get { return console; }
}
protected UserScriptBase() {
console = new EventWriter(this);
}
public abstract void Main();
private void Execute(VariableStore variableStore) {
vars = new Variables(variableStore);
Main();
}
protected internal event EventHandler> ConsoleOutputChanged;
private void OnConsoleOutputChanged(string args) {
var handler = ConsoleOutputChanged;
if (handler != null) handler(null, new EventArgs(args));
}
protected class Variables : DynamicObject, IEnumerable> {
private readonly VariableStore variableStore;
public ICollection Keys {
get { return variableStore.Keys; }
}
public ICollection