namespace HeuristicLab.Problems.ProgramSynthesis.Push.Erc { using HeuristicLab.Common; using HeuristicLab.Core; using HeuristicLab.Data; using HeuristicLab.Parameters; using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; using HeuristicLab.Problems.ProgramSynthesis.Push.Erc.Interfaces; [StorableClass] public class ErcOptions : ParameterizedNamedItem, IReadOnlyErcOptions { public const string ProbabilityParameterName = "Probability"; public const string IntegerParameterName = "Integer"; public const string FloatParameterName = "Float"; public const string CharParameterName = "Char"; public const string BooleanParameterName = "Boolean"; public const string StringParameterName = "String"; public const string NameParameterName = "Name"; public ErcOptions() { Name = "ERC Options"; Parameters.Add(new FixedValueParameter(ProbabilityParameterName)); Parameters.Add(new FixedValueParameter(IntegerParameterName)); Parameters.Add(new FixedValueParameter(FloatParameterName)); Parameters.Add(new FixedValueParameter(CharParameterName)); Parameters.Add(new FixedValueParameter(BooleanParameterName)); Parameters.Add(new FixedValueParameter(StringParameterName)); Parameters.Add(new FixedValueParameter(NameParameterName)); } [StorableConstructor] public ErcOptions(bool deserializing) : base(deserializing) { } public ErcOptions(ErcOptions origin, Cloner cloner) : base(origin, cloner) { } public IValueParameter ErcProbabilityParameter { get { return (IValueParameter)Parameters[ProbabilityParameterName]; } } public double ErcProbability { get { return ErcProbabilityParameter.Value.Value; } set { ErcProbabilityParameter.Value.Value = value; } } public IValueParameter IntegerErcOptionsParameter { get { return (IValueParameter)Parameters[IntegerParameterName]; } } public IntegerErcOptions IntegerErcOptions { get { return this.IntegerErcOptionsParameter.Value; } set { this.IntegerErcOptionsParameter.Value = value; } } IReadOnlyIntegerErcOptions IReadOnlyErcOptions.IntegerErcOptions { get { return IntegerErcOptions; } } public IValueParameter FloatErcOptionsParameter { get { return (IValueParameter)Parameters[FloatParameterName]; } } public FloatErcOptions FloatErcOptions { get { return this.FloatErcOptionsParameter.Value; } set { this.FloatErcOptionsParameter.Value = value; } } IReadOnlyFloatErcOptions IReadOnlyErcOptions.FloatErcOptions { get { return FloatErcOptions; } } /// /// Integer represents ASCII value /// public IValueParameter CharErcOptionsParameter { get { return (IValueParameter)Parameters[CharParameterName]; } } public CharErcOptions CharErcOptions { get { return CharErcOptionsParameter.Value; } set { CharErcOptionsParameter.Value = value; } } IReadOnlyCharErcOptions IReadOnlyErcOptions.CharErcOptions { get { return CharErcOptions; } } public IValueParameter BooleanErcOptionsParameter { get { return (IValueParameter)Parameters[BooleanParameterName]; } } public BooleanErcOptions BooleanErcOptions { get { return BooleanErcOptionsParameter.Value; } set { BooleanErcOptionsParameter.Value = value; } } IReadOnlyBooleanErcOptions IReadOnlyErcOptions.BooleanErcOptions { get { return BooleanErcOptions; } } public IValueParameter StringErcOptionsParameter { get { return (IValueParameter)Parameters[StringParameterName]; } } public StringErcOptions StringErcOptions { get { return StringErcOptionsParameter.Value; } set { StringErcOptionsParameter.Value = value; } } IReadOnlyStringErcOptions IReadOnlyErcOptions.StringErcOptions { get { return StringErcOptions; } } public IValueParameter NameParameter { get { return (IValueParameter)Parameters[NameParameterName]; } } public NameErcOptions NameErcOptions { get { return NameParameter.Value; } set { NameParameter.Value = value; } } IReadOnlyNameErcOptions IReadOnlyErcOptions.NameErcOptions { get { return NameErcOptions; } } public override IDeepCloneable Clone(Cloner cloner) { return new ErcOptions(this, cloner); } } }