OSDN Git Service

imported
[tdcgexplorer/tso2mqo.git] / VertexHeap.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 \r
5 namespace Tso2MqoGui\r
6 {\r
7     public class VertexHeap\r
8     {\r
9         public Dictionary<UVertex, ushort>  map    = new Dictionary<UVertex, ushort>();\r
10         public List<UVertex>                verts  = new List<UVertex>();\r
11 \r
12         public void Clear()\r
13         {\r
14             map.Clear();\r
15             verts.Clear();\r
16         }\r
17 \r
18         public ushort Add(UVertex v)\r
19         {\r
20             ushort n;\r
21 \r
22             if(map.TryGetValue(v, out n))\r
23                 return n;\r
24 \r
25             n   = (ushort)verts.Count;\r
26             map.Add(v, n);\r
27             verts.Add(v);\r
28             return n;\r
29         }\r
30 \r
31         public int      Count               { get { return verts.Count;   } }\r
32         public ushort   this[UVertex index] { get { return map[index];    } }\r
33         public UVertex  this[int index]     { get { return verts[index];  } }\r
34     }\r
35 \r
36     public class VertexHeap<T>\r
37     {\r
38         public Dictionary<T, ushort>  map    = new Dictionary<T, ushort>();\r
39         public List<T>                verts  = new List<T>();\r
40 \r
41         public void Clear()\r
42         {\r
43             map.Clear();\r
44             verts.Clear();\r
45         }\r
46 \r
47         public ushort Add(T v)\r
48         {\r
49             ushort n;\r
50 \r
51             if(map.TryGetValue(v, out n))\r
52                 return n;\r
53 \r
54             n   = (ushort)verts.Count;\r
55             map.Add(v, n);\r
56             verts.Add(v);\r
57             return n;\r
58         }\r
59 \r
60         public int      Count           { get { return verts.Count;   } }\r
61         public ushort   this[T index]   { get { return map[index];    } }\r
62         public T        this[int index] { get { return verts[index];  } }\r
63     }\r
64 }\r