Changeset 11238 for branches/HeuristicLab.BottomUpTreeDistance/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/DirectedGraph/Vertex.cs
- Timestamp:
- 07/30/14 13:06:52 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.BottomUpTreeDistance/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/DirectedGraph/Vertex.cs
r11234 r11238 30 30 [StorableClass] 31 31 public class Vertex : Item, IVertex { 32 // use the same event to signal a change in the content, weight or label33 public event EventHandler Changed;34 protected virtual void OnChanged(object sender, EventArgs args) {35 var changed = Changed;36 if (changed != null)37 changed(sender, args);38 }39 40 public event EventHandler<EventArgs<IArc>> ArcAdded;41 protected virtual void OnArcAdded(object sender, EventArgs<IArc> args) {42 var added = ArcAdded;43 if (added != null)44 added(sender, args);45 }46 47 public event EventHandler<EventArgs<IArc>> ArcRemoved;48 protected virtual void OnArcRemoved(object sender, EventArgs<IArc> args) {49 var removed = ArcRemoved;50 if (removed != null)51 removed(sender, args);52 }53 54 32 [Storable] 55 33 protected string label; … … 57 35 get { return label; } 58 36 set { 37 if (label.Equals(value)) return; 59 38 label = value; 60 39 OnChanged(this, EventArgs.Empty); … … 67 46 get { return weight; } 68 47 set { 48 if (weight.Equals(value)) return; 69 49 weight = value; 70 50 OnChanged(this, EventArgs.Empty); … … 77 57 get { return content; } 78 58 set { 59 if (content == value) return; 79 60 content = value; 80 61 OnChanged(this, EventArgs.Empty); … … 92 73 } 93 74 75 public int InDegree { get { return InArcs.Count(); } } 76 public int OutDegree { get { return OutArcs.Count(); } } 77 public int Degree { get { return InDegree + OutDegree; } } 78 94 79 [StorableConstructor] 95 80 public Vertex(bool deserializing) : base(deserializing) { } … … 98 83 private void AfterDeserialization() { } 99 84 100 private Vertex() { } 101 102 public Vertex(object content) 103 : this() { 85 public Vertex(object content) { 104 86 this.content = content; 105 87 } … … 126 108 if (outArcs == null) 127 109 outArcs = new List<IArc>(); 128 else if (outArcs.Contains(arc) || outArcs.Any(a => a.Target == arc.Target))110 else if (outArcs.Contains(arc)) 129 111 throw new InvalidOperationException("Arc already added."); 130 112 outArcs.Add(arc); … … 132 114 if (inArcs == null) 133 115 inArcs = new List<IArc>(); 134 else if (inArcs.Contains(arc) || inArcs.Any(a => a.Source == arc.Source))116 else if (inArcs.Contains(arc)) 135 117 throw new InvalidOperationException("Arc already added."); 136 118 inArcs.Add(arc); 137 119 } 138 120 OnArcAdded(this, new EventArgs<IArc>(arc)); 139 }140 141 public void RemoveArc(IVertex vertex) {142 try {143 var arc = inArcs.Concat(outArcs).SingleOrDefault(x => x.Target == vertex || x.Source == vertex);144 RemoveArc(arc);145 }146 catch (Exception) {147 throw new InvalidOperationException("Only one arc allowed between two vertices");148 }149 121 } 150 122 … … 163 135 } 164 136 165 public int InDegree { get { return InArcs.Count(); } } 166 public int OutDegree { get { return OutArcs.Count(); } } 167 public int Degree { get { return InDegree + OutDegree; } } 137 #region events 138 // use the same event to signal a change in the content, weight or label 139 public event EventHandler Changed; 140 protected virtual void OnChanged(object sender, EventArgs args) { 141 var changed = Changed; 142 if (changed != null) 143 changed(sender, args); 144 } 145 146 public event EventHandler<EventArgs<IArc>> ArcAdded; 147 protected virtual void OnArcAdded(object sender, EventArgs<IArc> args) { 148 var added = ArcAdded; 149 if (added != null) 150 added(sender, args); 151 } 152 153 public event EventHandler<EventArgs<IArc>> ArcRemoved; 154 protected virtual void OnArcRemoved(object sender, EventArgs<IArc> args) { 155 var removed = ArcRemoved; 156 if (removed != null) 157 removed(sender, args); 158 } 159 #endregion 168 160 } 169 161
Note: See TracChangeset
for help on using the changeset viewer.