Changeset 9226 for branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/VariableVectorAction.cs
- Timestamp:
- 02/18/13 16:51:42 (11 years ago)
- Location:
- branches/LearningClassifierSystems
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/LearningClassifierSystems
- Property svn:ignore
-
old new 1 1 *.suo 2 bin
-
- Property svn:ignore
-
branches/LearningClassifierSystems/HeuristicLab.Encodings.VariableVector/3.3/VariableVectorAction.cs
r9204 r9226 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Drawing; 24 25 using System.Linq; 25 26 using System.Text; 26 27 using HeuristicLab.Common; 27 28 using HeuristicLab.Core; 28 using HeuristicLab.Data;29 29 using HeuristicLab.Encodings.ConditionActionEncoding; 30 30 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 33 33 [StorableClass] 34 34 [Item("VariableVectorAction", "")] 35 public class VariableVectorAction : ItemDictionary<StringValue, IActionVariable>, IAction {35 public class VariableVectorAction : Dictionary<string, IActionVariable>, IAction { 36 36 37 public IOrderedEnumerable< StringValue> Order { get { return this.Keys.OrderBy(x => x.Value); } }37 public IOrderedEnumerable<string> Order { get { return this.Keys.OrderBy(x => x); } } 38 38 39 39 public int VirtualLength { get { return this.Values.Sum(x => x.VirtualLength); } } 40 40 41 41 [StorableConstructor] 42 protected VariableVectorAction(bool deserializing) : base(deserializing) { } 43 protected VariableVectorAction(VariableVectorAction original, Cloner cloner) 44 : base(original, cloner) { 42 protected VariableVectorAction(bool deserializing) { } 43 protected VariableVectorAction(VariableVectorAction original, Cloner cloner) { 44 foreach (var item in original) { 45 Add((string)item.Key.Clone(), (IActionVariable)item.Value.Clone()); 46 } 45 47 } 46 48 public VariableVectorAction() : base() { } 47 49 public VariableVectorAction(int capacity) : base(capacity) { } 48 public VariableVectorAction(IDictionary<StringValue, IActionVariable> dictionary) : base(dictionary) { } 49 public override IDeepCloneable Clone(Cloner cloner) { 50 return new VariableVectorAction(this, cloner); 50 public VariableVectorAction(IDictionary<string, IActionVariable> dictionary) : base(dictionary) { } 51 52 //protected override void OnItemsAdded(IEnumerable<KeyValuePair<string, IActionVariable>> items) { 53 // foreach (var item in items) { 54 // if (!(item.Value is StringVariable || item.Value is IntVariable)) { 55 // throw new ArgumentException("Value has to be of type 'StringVariable' or 'IntVariable'"); 56 // } 57 // } 58 //} 59 60 public VariableVectorAction GetEmptyCopy() { 61 VariableVectorAction emptyCopy = new VariableVectorAction(this.Count); 62 foreach (var keyValuePair in this) { 63 emptyCopy.Add(keyValuePair.Key, keyValuePair.Value.GetEmptyCopy()); 64 } 65 return emptyCopy; 51 66 } 52 67 53 protected override void OnItemsAdded(IEnumerable<KeyValuePair<StringValue, IActionVariable>> items) { 54 foreach (var item in items) { 55 if (!(item.Value is StringVariable || item.Value is IntVariable)) { 56 throw new ArgumentException("Value has to be of type 'StringVariable' or 'IntVariable'"); 57 } 68 public VariableVectorAction GetSetCopy() { 69 VariableVectorAction setCopy = new VariableVectorAction(this.Count); 70 foreach (var keyValuePair in this) { 71 setCopy.Add(keyValuePair.Key, keyValuePair.Value.GetSetCopy()); 58 72 } 59 base.OnItemsAdded(items);73 return setCopy; 60 74 } 61 75 … … 63 77 var targetCast = target as VariableVectorAction; 64 78 if (targetCast == null) { return false; } 65 if ( this.Order.SequenceEqual(targetCast.Order)) { return false; }79 if (!this.Order.SequenceEqual(targetCast.Order)) { return false; } 66 80 foreach (var keyValuePair in targetCast) { 67 81 if (!this[keyValuePair.Key].MatchVariable(keyValuePair.Value)) { … … 74 88 public void Add(IEnumerable<IActionVariable> action) { 75 89 foreach (var variable in action) { 76 this.Add( new StringValue(variable.VariableName), variable);90 this.Add(variable.VariableName, variable); 77 91 } 78 92 } … … 82 96 bool first = true; 83 97 foreach (var variable in this.Values) { 84 if ( !first) {98 if (first) { 85 99 first = false; 86 100 } else { … … 98 112 } 99 113 100 public bool Identical(VariableVector Condition target) {114 public bool Identical(VariableVectorAction target) { 101 115 if (this.Order.SequenceEqual(target.Order)) { return false; } 102 116 foreach (var keyValuePair in target) { … … 107 121 return true; 108 122 } 123 124 public virtual string ItemName { 125 get { return ItemAttribute.GetName(this.GetType()); } 126 } 127 public virtual string ItemDescription { 128 get { return ItemAttribute.GetDescription(this.GetType()); } 129 } 130 public Version ItemVersion { 131 get { return ItemAttribute.GetVersion(this.GetType()); } 132 } 133 public static Image StaticItemImage { 134 get { return HeuristicLab.Common.Resources.VSImageLibrary.Class; } 135 } 136 public virtual Image ItemImage { 137 get { return ItemAttribute.GetImage(this.GetType()); } 138 } 139 140 public virtual IDeepCloneable Clone(Cloner cloner) { 141 return new VariableVectorAction(this, cloner); 142 } 143 144 public object Clone() { 145 return Clone(new Cloner()); 146 } 147 148 public event EventHandler ItemImageChanged; 149 protected virtual void OnItemImageChanged() { 150 EventHandler handler = ItemImageChanged; 151 if (handler != null) handler(this, EventArgs.Empty); 152 } 153 public event EventHandler ToStringChanged; 154 protected virtual void OnToStringChanged() { 155 EventHandler handler = ToStringChanged; 156 if (handler != null) handler(this, EventArgs.Empty); 157 } 109 158 } 110 159 }
Note: See TracChangeset
for help on using the changeset viewer.