Changeset 3407 for trunk/sources/HeuristicLab.Operators
- Timestamp:
- 04/19/10 03:28:16 (15 years ago)
- Location:
- trunk/sources/HeuristicLab.Operators/3.3
- Files:
-
- 2 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj
r3404 r3407 91 91 <Compile Include="Assigner.cs" /> 92 92 <Compile Include="AlgorithmOperator.cs" /> 93 <Compile Include="Multi pleCallsOperator.cs" />93 <Compile Include="MultiOperator.cs" /> 94 94 <Compile Include="Operator.cs" /> 95 95 <Compile Include="Placeholder.cs" /> -
trunk/sources/HeuristicLab.Operators/3.3/MultiOperator.cs
r3401 r3407 31 31 namespace HeuristicLab.Operators { 32 32 /// <summary> 33 /// A base class for operators which apply multiple user-defined operators.33 /// A base class for operators which apply arbitrary many other operators of a specific type. 34 34 /// </summary> 35 [Item("Multi pleCallsOperator", "A base class for operators which apply multiple user-defined operators.")]35 [Item("MultiOperator<T>", "A base class for operators which apply arbitrary many other operators of a specific type.")] 36 36 [StorableClass] 37 public abstract class Multi pleCallsOperator : SingleSuccessorOperator {38 private List<IValueParameter< IOperator>> operatorParameters;37 public abstract class MultiOperator<T> : SingleSuccessorOperator where T : class, IOperator { 38 private List<IValueParameter<T>> operatorParameters; 39 39 40 40 [Storable] 41 private OperatorListoperators;42 public OperatorListOperators {41 private ItemList<T> operators; 42 public ItemList<T> Operators { 43 43 get { return operators; } 44 44 } 45 45 46 public Multi pleCallsOperator()46 public MultiOperator() 47 47 : base() { 48 operators = new OperatorList();48 operators = new ItemList<T>(); 49 49 Initialize(); 50 50 } 51 51 [StorableConstructor] 52 protected Multi pleCallsOperator(bool deserializing) : base(deserializing) { }52 protected MultiOperator(bool deserializing) : base(deserializing) { } 53 53 54 54 [StorableHook(HookType.AfterDeserialization)] 55 55 private void Initialize() { 56 56 if (operators != null) RegisterOperatorsEvents(); 57 operatorParameters = new List<IValueParameter< IOperator>>();57 operatorParameters = new List<IValueParameter<T>>(); 58 58 for (int i = 0; i < Operators.Count; i++) { 59 IValueParameter< IOperator> opParam = (IValueParameter<IOperator>)Parameters[i.ToString()];59 IValueParameter<T> opParam = (IValueParameter<T>)Parameters[i.ToString()]; 60 60 operatorParameters.Add(opParam); 61 61 opParam.ValueChanged += new EventHandler(opParam_ValueChanged); … … 64 64 65 65 public override IDeepCloneable Clone(Cloner cloner) { 66 Multi pleCallsOperator clone = (MultipleCallsOperator)base.Clone(cloner);67 clone.operators = ( OperatorList)cloner.Clone(operators);66 MultiOperator<T> clone = (MultiOperator<T>)base.Clone(cloner); 67 clone.operators = (ItemList<T>)cloner.Clone(operators); 68 68 clone.Initialize(); 69 69 return clone; … … 71 71 72 72 private void UpdateOperatorParameters() { 73 foreach (IValueParameter< IOperator> opParam in operatorParameters) {73 foreach (IValueParameter<T> opParam in operatorParameters) { 74 74 opParam.ValueChanged -= new EventHandler(opParam_ValueChanged); 75 75 Parameters.Remove(opParam.Name); … … 77 77 operatorParameters.Clear(); 78 78 for (int i = 0; i < Operators.Count; i++) { 79 IValueParameter< IOperator> opParam = new ValueParameter<IOperator>(i.ToString(), string.Empty, Operators[i]);79 IValueParameter<T> opParam = new ValueParameter<T>(i.ToString(), string.Empty, Operators[i]); 80 80 opParam.ValueChanged += new EventHandler(opParam_ValueChanged); 81 81 Parameters.Add(opParam); … … 86 86 #region Events 87 87 private void RegisterOperatorsEvents() { 88 operators.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem< IOperator>>(operators_ItemsAdded);89 operators.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem< IOperator>>(operators_ItemsRemoved);90 operators.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedItem< IOperator>>(operators_ItemsReplaced);91 operators.ItemsMoved += new CollectionItemsChangedEventHandler<IndexedItem< IOperator>>(operators_ItemsMoved);92 operators.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem< IOperator>>(operators_CollectionReset);88 operators.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<T>>(operators_ItemsAdded); 89 operators.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem<T>>(operators_ItemsRemoved); 90 operators.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedItem<T>>(operators_ItemsReplaced); 91 operators.ItemsMoved += new CollectionItemsChangedEventHandler<IndexedItem<T>>(operators_ItemsMoved); 92 operators.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<T>>(operators_CollectionReset); 93 93 } 94 94 private void DeregisterOperatorsEvents() { 95 operators.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem< IOperator>>(operators_ItemsAdded);96 operators.ItemsRemoved -= new CollectionItemsChangedEventHandler<IndexedItem< IOperator>>(operators_ItemsRemoved);97 operators.ItemsReplaced -= new CollectionItemsChangedEventHandler<IndexedItem< IOperator>>(operators_ItemsReplaced);98 operators.ItemsMoved -= new CollectionItemsChangedEventHandler<IndexedItem< IOperator>>(operators_ItemsMoved);99 operators.CollectionReset -= new CollectionItemsChangedEventHandler<IndexedItem< IOperator>>(operators_CollectionReset);95 operators.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(operators_ItemsAdded); 96 operators.ItemsRemoved -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(operators_ItemsRemoved); 97 operators.ItemsReplaced -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(operators_ItemsReplaced); 98 operators.ItemsMoved -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(operators_ItemsMoved); 99 operators.CollectionReset -= new CollectionItemsChangedEventHandler<IndexedItem<T>>(operators_CollectionReset); 100 100 } 101 private void operators_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem< IOperator>> e) {101 private void operators_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) { 102 102 UpdateOperatorParameters(); 103 103 } 104 private void operators_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem< IOperator>> e) {104 private void operators_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) { 105 105 UpdateOperatorParameters(); 106 106 } 107 private void operators_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem< IOperator>> e) {108 foreach (IndexedItem< IOperator> item in e.Items)107 private void operators_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) { 108 foreach (IndexedItem<T> item in e.Items) 109 109 operatorParameters[item.Index].Value = item.Value; 110 110 } 111 private void operators_ItemsMoved(object sender, CollectionItemsChangedEventArgs<IndexedItem< IOperator>> e) {112 foreach (IndexedItem< IOperator> item in e.Items)111 private void operators_ItemsMoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) { 112 foreach (IndexedItem<T> item in e.Items) 113 113 operatorParameters[item.Index].Value = item.Value; 114 114 } 115 private void operators_CollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedItem< IOperator>> e) {115 private void operators_CollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedItem<T>> e) { 116 116 UpdateOperatorParameters(); 117 117 } 118 118 private void opParam_ValueChanged(object sender, EventArgs e) { 119 IValueParameter< IOperator> opParam = (IValueParameter<IOperator>)sender;119 IValueParameter<T> opParam = (IValueParameter<T>)sender; 120 120 operators[operatorParameters.IndexOf(opParam)] = opParam.Value; 121 121 } -
trunk/sources/HeuristicLab.Operators/3.3/SubScopesProcessor.cs
r3376 r3407 32 32 [Item("SubScopesProcessor", "An operator which contains multiple operators of which each is applied on one sub-scope of the current scope. The first operator is applied on the first sub-scope, the second on the second, and so on.")] 33 33 [StorableClass] 34 public sealed class SubScopesProcessor : Multi pleCallsOperator{34 public sealed class SubScopesProcessor : MultiOperator<IOperator> { 35 35 public ValueLookupParameter<BoolValue> ParallelParameter { 36 36 get { return (ValueLookupParameter<BoolValue>)Parameters["Parallel"]; }
Note: See TracChangeset
for help on using the changeset viewer.