-using System;\r
-using System.Collections.Generic;\r
-using System.Text;\r
-\r
-namespace NMeCab.Core\r
-{\r
- public class PriorityQueue<T>\r
- where T : IComparable<T>\r
- {\r
- private readonly List<T> list = new List<T>();\r
-\r
- public int Count\r
- {\r
- get { return this.list.Count; }\r
- }\r
-\r
- public void Clear()\r
- {\r
- this.list.Clear();\r
- }\r
-\r
- public void Push(T item)\r
- {\r
- int currentPos = this.list.Count;\r
- this.list.Add(default(T));\r
-\r
- while (currentPos != 0)\r
- {\r
- int parentPos = (currentPos - 1) / 2;\r
- T parent = this.list[parentPos];\r
-\r
- if (parent.CompareTo(item) <= 0) break;\r
-\r
- this.list[currentPos] = parent;\r
- currentPos = parentPos;\r
- }\r
- this.list[currentPos] = item;\r
- }\r
-\r
- public T Pop()\r
- {\r
- if (this.Count == 0) throw new InvalidOperationException("Empty");\r
-\r
- T ret = this.list[0];\r
- this.DeleteRoot();\r
- return ret;\r
- }\r
-\r
- private void DeleteRoot()\r
- {\r
- int tailPos = this.list.Count - 1;\r
- T current = this.list[tailPos]; // final\r
- this.list.RemoveAt(tailPos);\r
- if (tailPos == 0) return; // empty\r
- tailPos--;\r
-\r
- int currentPos = 0;\r
- while (true)\r
- {\r
- int childPos = currentPos * 2 + 1; // left child\r
- if (childPos > tailPos) break;\r
- T child = this.list[childPos];\r
-\r
- int wrkPos = childPos + 1; // right child\r
- if (wrkPos <= tailPos)\r
- {\r
- T wrk = this.list[wrkPos];\r
- if (child.CompareTo(wrk) > 0)\r
- {\r
- childPos = wrkPos;\r
- child = wrk;\r
- }\r
- }\r
-\r
- if (current.CompareTo(child) < 0) break;\r
-\r
- this.list[currentPos] = child;\r
- currentPos = childPos;\r
- }\r
- this.list[currentPos] = current;\r
- }\r
- }\r
-}\r
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace NMeCab.Core
+{
+ public class PriorityQueue<T>
+ where T : IComparable<T>
+ {
+ private readonly List<T> list = new List<T>();
+
+ public int Count
+ {
+ get { return this.list.Count; }
+ }
+
+ public void Clear()
+ {
+ this.list.Clear();
+ }
+
+ public void Push(T item)
+ {
+ if (item == null) throw new ArgumentNullException("item");
+
+ int currentPos = this.list.Count;
+ this.list.Add(default(T));
+
+ while (currentPos != 0)
+ {
+ int parentPos = (currentPos - 1) / 2;
+ T parent = this.list[parentPos];
+
+ if (parent.CompareTo(item) <= 0) break;
+
+ this.list[currentPos] = parent;
+ currentPos = parentPos;
+ }
+ this.list[currentPos] = item;
+ }
+
+ public T Pop()
+ {
+ if (this.Count == 0) throw new InvalidOperationException("Empty");
+
+ T ret = this.list[0];
+
+ int tailPos = this.list.Count - 1;
+ T current = this.list[tailPos]; // final
+ this.list.RemoveAt(tailPos);
+ if (tailPos == 0) return ret; // empty
+ tailPos--;
+
+ int currentPos = 0;
+ while (true)
+ {
+ int childPos = currentPos * 2 + 1; // left child
+ if (childPos > tailPos) break;
+ T child = this.list[childPos];
+
+ int wrkPos = childPos + 1; // right child
+ if (wrkPos <= tailPos)
+ {
+ T wrk = this.list[wrkPos];
+ if (child.CompareTo(wrk) > 0)
+ {
+ childPos = wrkPos;
+ child = wrk;
+ }
+ }
+
+ if (current.CompareTo(child) < 0) break;
+
+ this.list[currentPos] = child;
+ currentPos = childPos;
+ }
+ this.list[currentPos] = current;
+
+ return ret;
+ }
+ }
+}
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual C# Express 2010
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Express 2013 for Windows Desktop
+VisualStudioVersion = 12.0.30110.0
+MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibNMeCab", "LibNMeCab\LibNMeCab.csproj", "{3EE156E1-FEDE-4EC5-B64A-3287EC3AB2E3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsFormsSample", "WindowsFormsSample\WindowsFormsSample.csproj", "{BAB9F854-1C9A-4BF6-83C0-DE3F516547E1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PerformanceTestMMF", "PerformanceTestMMF\PerformanceTestMMF.csproj", "{7553B430-D001-419D-B137-3A87FC1DE3C3}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibNMeCabTest", "LibNMeCabTest\LibNMeCabTest.csproj", "{59B69A5D-B54E-4659-9CD6-502FCD7B0881}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
{7553B430-D001-419D-B137-3A87FC1DE3C3}.Release|Mixed Platforms.Build.0 = Release|x86
{7553B430-D001-419D-B137-3A87FC1DE3C3}.Release|x86.ActiveCfg = Release|x86
{7553B430-D001-419D-B137-3A87FC1DE3C3}.Release|x86.Build.0 = Release|x86
+ {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Release|Any CPU.Build.0 = Release|Any CPU
+ {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {59B69A5D-B54E-4659-9CD6-502FCD7B0881}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE