- Timestamp:
- 07/30/14 15:02:27 (10 years ago)
- Location:
- trunk/sources/HeuristicLab.Core/3.3/Collections/DirectedGraph
- Files:
-
- 1 added
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Core/3.3/Collections/DirectedGraph/DirectedGraph.cs
r11239 r11241 25 25 using System.Linq; 26 26 using HeuristicLab.Common; 27 using HeuristicLab.Co re;27 using HeuristicLab.Common.Resources; 28 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 29 30 namespace HeuristicLab. Problems.DataAnalysis.Symbolic{30 namespace HeuristicLab.Core { 31 31 [Item("DirectedGraph", "Generic class representing a directed graph with custom vertices and content")] 32 32 [StorableClass] 33 33 public class DirectedGraph : Item, IDirectedGraph { 34 protected HashSet<IVertex> vertices; 34 public override Image ItemImage { get { return VSImageLibrary.Graph; } } 35 36 private HashSet<IVertex> vertices; 35 37 [Storable] 36 38 public IEnumerable<IVertex> Vertices { … … 39 41 } 40 42 41 pr otectedHashSet<IArc> arcs;43 private HashSet<IArc> arcs; 42 44 [Storable] 43 45 public IEnumerable<IArc> Arcs { 44 46 get { return arcs; } 45 47 private set { arcs = new HashSet<IArc>(value); } 48 } 49 50 public DirectedGraph() { 51 vertices = new HashSet<IVertex>(); 52 arcs = new HashSet<IArc>(); 53 } 54 55 protected DirectedGraph(DirectedGraph original, Cloner cloner) 56 : base(original, cloner) { 57 vertices = new HashSet<IVertex>(original.vertices.Select(cloner.Clone)); 58 arcs = new HashSet<IArc>(original.arcs.Select(cloner.Clone)); 59 } 60 61 public override IDeepCloneable Clone(Cloner cloner) { 62 return new DirectedGraph(this, cloner); 46 63 } 47 64 … … 64 81 target.AddArc(arc); 65 82 } 66 }67 68 public DirectedGraph() {69 vertices = new HashSet<IVertex>();70 arcs = new HashSet<IArc>();71 }72 73 protected DirectedGraph(DirectedGraph original, Cloner cloner)74 : base(original, cloner) {75 vertices = new HashSet<IVertex>(original.vertices.Select(cloner.Clone));76 arcs = new HashSet<IArc>(original.arcs.Select(cloner.Clone));77 }78 79 public override IDeepCloneable Clone(Cloner cloner) {80 return new DirectedGraph(this, cloner);81 83 } 82 84 … … 104 106 } 105 107 106 public IArc AddArc(IVertex source, IVertex target) {108 public virtual IArc AddArc(IVertex source, IVertex target) { 107 109 var arc = new Arc(source, target); 108 110 AddArc(arc); … … 110 112 } 111 113 112 public v oid AddArc(IArc arc) {114 public virtual void AddArc(IArc arc) { 113 115 var source = (Vertex)arc.Source; 114 116 var target = (Vertex)arc.Target; … … 118 120 } 119 121 120 public v oid RemoveArc(IArc arc) {122 public virtual void RemoveArc(IArc arc) { 121 123 arcs.Remove(arc); 122 124 var source = (Vertex)arc.Source; … … 126 128 } 127 129 130 public event EventHandler ArcAdded; 128 131 protected virtual void OnArcAdded(object sender, EventArgs<IArc> args) { 129 132 var arc = args.Value; … … 135 138 } 136 139 140 141 public event EventHandler ArcRemoved; 137 142 protected virtual void OnArcRemoved(object sender, EventArgs<IArc> args) { 138 143 var arc = args.Value; … … 141 146 } 142 147 143 public override Image ItemImage {144 get { return Common.Resources.VSImageLibrary.Graph; }145 }146 147 148 // events 148 149 public event EventHandler VertexAdded; 149 150 public event EventHandler VertexRemoved; 150 public event EventHandler ArcAdded;151 public event EventHandler ArcRemoved;152 151 } 153 152 }
Note: See TracChangeset
for help on using the changeset viewer.