using System; namespace HeuristicLab.Problems.ProgramSynthesis.Push.Attributes { using HeuristicLab.Problems.ProgramSynthesis.Push.Stack; [AttributeUsage(AttributeTargets.Class)] public class PushExpressionAttribute : Attribute { public readonly StackTypes StackType; public readonly StackTypes AdditionalStackDependencies; public readonly string ExpressionName; public readonly bool ManipulatesExec; public PushExpressionAttribute(StackTypes stackType, string expressionName, StackTypes additionalStackDependencies = default(StackTypes)) { StackType = stackType; AdditionalStackDependencies = additionalStackDependencies; ExpressionName = expressionName; ManipulatesExec = stackType == StackTypes.Exec || AdditionalStackDependencies.HasFlag(StackTypes.Exec); } } }