using System; using System.Collections.Generic; namespace HeuristicLab.Problems.ProgramSynthesis.Push.Configuration { using HeuristicLab.Core; using HeuristicLab.Problems.ProgramSynthesis.Push.Expressions; using HeuristicLab.Problems.ProgramSynthesis.Push.Stack; public class EnabledExpressionsChangedEventArgs : EventArgs { public IEnumerable AddedExpressions { get; private set; } public IEnumerable RemovedExpressions { get; private set; } public EnabledExpressionsChangedEventArgs(IEnumerable addedExpressions, IEnumerable removedExpressions) { AddedExpressions = addedExpressions; RemovedExpressions = removedExpressions; } } public interface IReadOnlyExpressionsConfiguration : INamedItem { int InExpressionCount { get; } IReadOnlyList EnabledExpressions { get; } IReadOnlyDictionary ExpressionsPerStackCount { get; } } public interface IExpressionsConfiguration : IReadOnlyExpressionsConfiguration { event EventHandler EnabledExpressionsChanged; void EnableStack(StackTypes types, bool enableDependencies = false); void DisableStack(StackTypes type, bool enableDependencies = false); void SetStack(StackTypes type, bool state, bool setDependencies = false); void EnableExpressionOfStack(StackTypes types); void DisableExpressionsOfStack(StackTypes types); void EnableExpression(string name); void DisableExpression(string name); void SetExpression(string name, bool state); void SetExpression(bool state) where T : Expression; void EnableExpression() where T : Expression; void DisableExpression() where T : Expression; } }