Add MapGenerator component to create map mesh
This commit is contained in:
parent
b9f8695996
commit
3a6999e893
@ -6,7 +6,7 @@ namespace Assets.Common
|
||||
{
|
||||
public static Vector3 ToVector3(this Point p)
|
||||
{
|
||||
return new Vector3((float)p.x, (float)p.y);
|
||||
return new Vector3((float)p.x, 0, (float)p.y);
|
||||
}
|
||||
}
|
||||
}
|
22
Assets/Editor/MapRendererUI.cs
Normal file
22
Assets/Editor/MapRendererUI.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using Assets;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Editor
|
||||
{
|
||||
[CustomEditor(typeof (MapRenderer))]
|
||||
public class MapRendererUI : UnityEditor.Editor
|
||||
{
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
var target = this.target as MapRenderer;
|
||||
|
||||
DrawDefaultInspector();
|
||||
|
||||
if (GUILayout.Button("Generate"))
|
||||
{
|
||||
target.Generate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
3
Assets/Editor/MapRendererUI.cs.meta
Normal file
3
Assets/Editor/MapRendererUI.cs.meta
Normal file
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 90c0ce2c13234c218d78bbea9585a14d
|
||||
timeCreated: 1566929630
|
@ -7,7 +7,7 @@ Material:
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: New Material
|
||||
m_Name: LandMaterial
|
||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_ShaderKeywords:
|
||||
m_LightmapFlags: 4
|
||||
@ -40,7 +40,7 @@ Material:
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
@ -55,6 +55,10 @@ Material:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SpecGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Floats:
|
||||
- _BumpScale: 1
|
||||
- _Cutoff: 0.5
|
||||
@ -73,5 +77,6 @@ Material:
|
||||
- _UVSec: 0
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Color: {r: 1, g: 0, b: 0.95554924, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
|
||||
|
@ -1,9 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Assets.Common;
|
||||
using Assets.Voronoi;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Assets.Map
|
||||
{
|
||||
|
File diff suppressed because one or more lines are too long
@ -18,6 +18,7 @@ namespace Assets
|
||||
{
|
||||
public bool enabled = true;
|
||||
public bool displayPoints = true;
|
||||
public bool displayBoundary = true;
|
||||
public bool displayBeachLine = true;
|
||||
public bool displayParabolas = false;
|
||||
public bool displayVertices = true;
|
||||
@ -38,6 +39,7 @@ namespace Assets
|
||||
{
|
||||
public string name;
|
||||
public Color color;
|
||||
public float height = 0.0f;
|
||||
}
|
||||
|
||||
public enum GenerationStage
|
||||
@ -101,31 +103,26 @@ namespace Assets
|
||||
_locationGenerator = null;
|
||||
_locationGraph = null;
|
||||
|
||||
_locations = new List<Location>() { new Location() { Type = new LocationType() { color = Color.clear, name = "Ocean" } } };
|
||||
_locations = new List<Location>() { new Location() { Type = new LocationType() { color = Color.clear, name = "Ocean", height = -1 } } };
|
||||
_locations.AddRange(types.Select(type => new Location { Type = type }));
|
||||
}
|
||||
|
||||
public void Generate()
|
||||
{
|
||||
var thread = new Thread(() =>
|
||||
{
|
||||
var stopwatch = new Stopwatch();
|
||||
|
||||
stopwatch.Start();
|
||||
|
||||
debug.generationTime = 0;
|
||||
|
||||
while (Stage != GenerationStage.Done)
|
||||
{
|
||||
Step();
|
||||
debug.generationTime = stopwatch.ElapsedMilliseconds / 1000.0f;
|
||||
}
|
||||
|
||||
stopwatch.Stop();
|
||||
debug.generationTime = stopwatch.ElapsedMilliseconds / 1000.0f;
|
||||
});
|
||||
var stopwatch = new Stopwatch();
|
||||
|
||||
thread.Start();
|
||||
stopwatch.Start();
|
||||
|
||||
debug.generationTime = 0;
|
||||
|
||||
while (Stage != GenerationStage.Done)
|
||||
{
|
||||
Step();
|
||||
debug.generationTime = stopwatch.ElapsedMilliseconds / 1000.0f;
|
||||
}
|
||||
|
||||
stopwatch.Stop();
|
||||
debug.generationTime = stopwatch.ElapsedMilliseconds / 1000.0f;
|
||||
}
|
||||
|
||||
public void Step()
|
||||
@ -164,6 +161,16 @@ namespace Assets
|
||||
|
||||
void OnDrawGizmos()
|
||||
{
|
||||
|
||||
if (debug.displayBoundary)
|
||||
{
|
||||
Gizmos.color = Color.gray;
|
||||
|
||||
Gizmos.DrawLine(new Vector3(0, 0), new Vector3(size.x, 0));
|
||||
Gizmos.DrawLine(new Vector3(0, 0), new Vector3(0, size.y));
|
||||
Gizmos.DrawLine(new Vector3(size.x, size.y), new Vector3(size.x, 0));
|
||||
Gizmos.DrawLine(new Vector3(size.x, size.y), new Vector3(0, size.y));
|
||||
}
|
||||
|
||||
if (!debug.enabled || _voronoiGenerator == null) return;
|
||||
|
||||
@ -291,7 +298,7 @@ namespace Assets
|
||||
foreach (var (v, i) in vertices.Select((x, i) => (x, i)))
|
||||
{
|
||||
Gizmos.DrawSphere(v, 1);
|
||||
if (debug.displayLabels) Handles.Label(v + offset, $"{i}");
|
||||
if (debug.displayLabels) Handles.Label(v + offset, $"{i} at {v.x:F2}, {v.y:f2}");
|
||||
}
|
||||
}
|
||||
|
||||
|
70
Assets/Scripts/MapRenderer.cs
Normal file
70
Assets/Scripts/MapRenderer.cs
Normal file
@ -0,0 +1,70 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Assets.Common;
|
||||
using Assets.Map;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Assets
|
||||
{
|
||||
[RequireComponent(typeof(MeshFilter))]
|
||||
[RequireComponent(typeof(MeshRenderer))]
|
||||
[RequireComponent(typeof(GraphGenerator))]
|
||||
public class MapRenderer : MonoBehaviour
|
||||
{
|
||||
public float uvScale = 1.0f;
|
||||
|
||||
private List<Vector3> _vertices;
|
||||
private List<Vector3> _normals;
|
||||
private List<int> _triangles;
|
||||
private List<Color> _colors;
|
||||
|
||||
public void Generate()
|
||||
{
|
||||
var graph = GetComponent<GraphGenerator>();
|
||||
|
||||
graph.Reset();
|
||||
graph.Generate();
|
||||
|
||||
var points = graph.VoronoiGenerator.Voronoi.Vertices;
|
||||
|
||||
_vertices = new List<Vector3>();
|
||||
_normals = new List<Vector3>();
|
||||
_triangles = new List<int>();
|
||||
_colors = new List<Color>();
|
||||
|
||||
foreach (var location in graph.LocationGenerator.Result.Vertices.Skip(1))
|
||||
GenerateLocationMesh(location, points);
|
||||
|
||||
Mesh mesh = new Mesh();
|
||||
mesh.vertices = _vertices.ToArray();
|
||||
mesh.uv = _vertices.Select(v => new Vector2(v.x, v.z) / uvScale).ToArray();
|
||||
mesh.normals = _normals.ToArray();
|
||||
mesh.triangles = _triangles.ToArray();
|
||||
mesh.colors = _colors.ToArray();
|
||||
|
||||
GetComponent<MeshFilter>().sharedMesh = mesh;
|
||||
}
|
||||
|
||||
public void GenerateLocationMesh(Location location, IList<Point> points)
|
||||
{
|
||||
foreach (var vertices in location.Sites.Select(site => site.Site.Edges.Select(x => points[x.Item1]).Reverse()))
|
||||
{
|
||||
int start = _vertices.Count;
|
||||
|
||||
foreach (var vertex in vertices)
|
||||
{
|
||||
_vertices.Add(new Vector3((float)vertex.x, location.Type.height + Mathf.PerlinNoise((float)vertex.x, (float)vertex.y) * 3, (float)vertex.y));
|
||||
_normals.Add(Vector3.up);
|
||||
_colors.Add(location.Type.color);
|
||||
}
|
||||
|
||||
int end = _vertices.Count;
|
||||
|
||||
for (int i = start + 1; i < end - 1; i++)
|
||||
{
|
||||
_triangles.AddRange(new []{ start, i, i+1 });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
3
Assets/Scripts/MapRenderer.cs.meta
Normal file
3
Assets/Scripts/MapRenderer.cs.meta
Normal file
@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bb0507c9903c44dea8977198c3ecbce4
|
||||
timeCreated: 1566928600
|
8
Assets/Textures.meta
Normal file
8
Assets/Textures.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7a77d8ac04f6d3eef95f4b96b9100205
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/Textures/Ground_Dirt_006_COLOR.jpg
Normal file
BIN
Assets/Textures/Ground_Dirt_006_COLOR.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 389 KiB |
115
Assets/Textures/Ground_Dirt_006_COLOR.jpg.meta
Normal file
115
Assets/Textures/Ground_Dirt_006_COLOR.jpg.meta
Normal file
@ -0,0 +1,115 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 00a7dd31cec7a58d8b78824ab5adff0a
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 10
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/Textures/Ground_Dirt_006_DISPa.png
Normal file
BIN
Assets/Textures/Ground_Dirt_006_DISPa.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 MiB |
115
Assets/Textures/Ground_Dirt_006_DISPa.png.meta
Normal file
115
Assets/Textures/Ground_Dirt_006_DISPa.png.meta
Normal file
@ -0,0 +1,115 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e39ba085fc31cb3578d4f43b7b47c3de
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 10
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/Textures/Ground_Dirt_006_NORM.jpg
Normal file
BIN
Assets/Textures/Ground_Dirt_006_NORM.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 428 KiB |
115
Assets/Textures/Ground_Dirt_006_NORM.jpg.meta
Normal file
115
Assets/Textures/Ground_Dirt_006_NORM.jpg.meta
Normal file
@ -0,0 +1,115 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 763e2f0edd6b363538ae98a996cae149
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 10
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 0
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 1
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
BIN
Assets/Textures/Ground_Dirt_006_OCC.jpg
Normal file
BIN
Assets/Textures/Ground_Dirt_006_OCC.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 221 KiB |
91
Assets/Textures/Ground_Dirt_006_OCC.jpg.meta
Normal file
91
Assets/Textures/Ground_Dirt_006_OCC.jpg.meta
Normal file
@ -0,0 +1,91 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 65c8083e5ab1b1da7b725187831b9091
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 10
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -151,8 +151,8 @@ namespace Assets.Voronoi
|
||||
{
|
||||
var edge = node.Value.LeftEdge.Edge;
|
||||
|
||||
node.Value.Site.Edges.Insert(0, edge);
|
||||
previous?.Value.Site.Edges.Add(edge);
|
||||
node.Value.Site.Edges.Insert(0, FixEdgeDirection(node.Value, edge));
|
||||
previous?.Value.Site.Edges.Add(FixEdgeDirection(previous.Value, edge));
|
||||
|
||||
Voronoi.AddEdge(edge.Item1, edge.Item2);
|
||||
}
|
||||
@ -161,8 +161,8 @@ namespace Assets.Voronoi
|
||||
{
|
||||
var edge = node.Value.RightEdge.Edge;
|
||||
|
||||
node.Value.Site.Edges.Add(edge);
|
||||
next?.Value.Site.Edges.Insert(0, edge);
|
||||
node.Value.Site.Edges.Add(FixEdgeDirection(node.Value, edge));
|
||||
next?.Value.Site.Edges.Insert(0, FixEdgeDirection(next.Value, edge));
|
||||
|
||||
Voronoi.AddEdge(edge.Item1, edge.Item2);
|
||||
}
|
||||
@ -184,6 +184,21 @@ namespace Assets.Voronoi
|
||||
Delaunay.AddEdge(next.Value.Site.Index, previous.Value.Site.Index);
|
||||
}
|
||||
|
||||
private (int, int) FixEdgeDirection(Parabola parabola, (int, int) edge)
|
||||
{
|
||||
var center = parabola.Site.Point;
|
||||
|
||||
var a = Voronoi.Vertices[edge.Item1];
|
||||
var b = Voronoi.Vertices[edge.Item2];
|
||||
|
||||
var xa = a.x - center.x;
|
||||
var xb = b.x - center.x;
|
||||
var ya = a.y - center.y;
|
||||
var yb = b.y - center.y;
|
||||
|
||||
return xa * yb - xb * ya < 0 ? (edge.Item2, edge.Item1) : edge;
|
||||
}
|
||||
|
||||
private void HandleSiteEvent(SiteEvent @event)
|
||||
{
|
||||
var site = @event.Site;
|
||||
|
BIN
packages/OptimizedPriorityQueue.4.2.0/.signature.p7s
vendored
Executable file
BIN
packages/OptimizedPriorityQueue.4.2.0/.signature.p7s
vendored
Executable file
Binary file not shown.
BIN
packages/OptimizedPriorityQueue.4.2.0/OptimizedPriorityQueue.4.2.0.nupkg
vendored
Executable file
BIN
packages/OptimizedPriorityQueue.4.2.0/OptimizedPriorityQueue.4.2.0.nupkg
vendored
Executable file
Binary file not shown.
BIN
packages/OptimizedPriorityQueue.4.2.0/lib/net20/Priority Queue.dll
vendored
Executable file
BIN
packages/OptimizedPriorityQueue.4.2.0/lib/net20/Priority Queue.dll
vendored
Executable file
Binary file not shown.
651
packages/OptimizedPriorityQueue.4.2.0/lib/net20/Priority Queue.xml
vendored
Executable file
651
packages/OptimizedPriorityQueue.4.2.0/lib/net20/Priority Queue.xml
vendored
Executable file
@ -0,0 +1,651 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>Priority Queue</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:Priority_Queue.GenericPriorityQueue`2">
|
||||
<summary>
|
||||
A copy of StablePriorityQueue which also has generic priority-type
|
||||
</summary>
|
||||
<typeparam name="TItem">The values in the queue. Must extend the GenericPriorityQueueNode class</typeparam>
|
||||
<typeparam name="TPriority">The priority-type. Must extend IComparable<TPriority></typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32,System.Collections.Generic.IComparer{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
<param name="comparer">The comparer used to compare TPriority values.</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32,System.Comparison{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
<param name="comparer">The comparison function to use to compare TPriority values</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.Priority">
|
||||
<summary>
|
||||
The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
|
||||
Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.QueueIndex">
|
||||
<summary>
|
||||
Represents the current position in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.InsertionIndex">
|
||||
<summary>
|
||||
Represents the order the node was inserted in
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.IFixedSizePriorityQueue`2">
|
||||
<summary>
|
||||
A helper-interface only needed to make writing unit tests a bit easier (hence the 'internal' access modifier)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IFixedSizePriorityQueue`2.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IFixedSizePriorityQueue`2.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IFixedSizePriorityQueue`2.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.StablePriorityQueue`1">
|
||||
<summary>
|
||||
A copy of FastPriorityQueue which is also stable - that is, when two nodes are enqueued with the same priority, they
|
||||
are always dequeued in the same order.
|
||||
See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
|
||||
</summary>
|
||||
<typeparam name="T">The values in the queue. Must extend the StablePriorityQueueNode class</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Enqueue(`0,System.Single)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.UpdatePriority(`0,System.Single)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.FastPriorityQueue`1">
|
||||
<summary>
|
||||
An implementation of a min-Priority Queue using a heap. Has O(1) .Contains()!
|
||||
See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
|
||||
</summary>
|
||||
<typeparam name="T">The values in the queue. Must extend the FastPriorityQueueNode class</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Enqueue(`0,System.Single)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken arbitrarily.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.HasHigherOrEqualPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherOrEqualPriority(node, node) (ie. both arguments the same node) will return true
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.UpdatePriority(`0,System.Single)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
If the node is currently in the queue or belongs to another queue, the result is undefined
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueueNode.InsertionIndex">
|
||||
<summary>
|
||||
Represents the order the node was inserted in
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.IPriorityQueue`2">
|
||||
<summary>
|
||||
The IPriorityQueue interface. This is mainly here for purists, and in case I decide to add more implementations later.
|
||||
For speed purposes, it is actually recommended that you *don't* access the priority queue through this interface, since the JIT can
|
||||
(theoretically?) optimize method calls from concrete-types slightly better.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
See implementation for how duplicates are handled.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns whether the given node is in the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of a node.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IPriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IPriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueueNode.Priority">
|
||||
<summary>
|
||||
The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
|
||||
Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueueNode.QueueIndex">
|
||||
<summary>
|
||||
Represents the current position in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.SimplePriorityQueue`2">
|
||||
<summary>
|
||||
A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
|
||||
FastPriorityQueue
|
||||
Methods tagged as O(1) or O(log n) are assuming there are no duplicates. Duplicates may increase the algorithmic complexity.
|
||||
</summary>
|
||||
<typeparam name="TItem">The type to enqueue</typeparam>
|
||||
<typeparam name="TPriority">The priority-type to use for nodes. Must extend IComparable<TPriority></typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IComparer{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Comparison{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparison function to use to compare TPriority values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IComparer{`1},System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default</param>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Comparison{`1},System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparison function to use to compare TPriority values</param>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.GetExistingNode(`0)">
|
||||
<summary>
|
||||
Given an item of type T, returns the existing SimpleNode in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.AddToNodeCache(Priority_Queue.SimplePriorityQueue{`0,`1}.SimpleNode)">
|
||||
<summary>
|
||||
Adds an item to the Node-cache to allow for many methods to be O(1) or O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.RemoveFromNodeCache(Priority_Queue.SimplePriorityQueue{`0,`1}.SimpleNode)">
|
||||
<summary>
|
||||
Removes an item to the Node-cache to allow for many methods to be O(1) or O(log n) (assuming no duplicates)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.SimplePriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.SimplePriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
Throws an exception when the queue is empty.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns whether the given item is in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, throws an exception
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.EnqueueNoLockOrCache(`0,`1)">
|
||||
<summary>
|
||||
Enqueue the item with the given priority, without calling lock(_queue) or AddToNodeCache(node)
|
||||
</summary>
|
||||
<param name="item"></param>
|
||||
<param name="priority"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
This queue automatically resizes itself, so there's no concern of the queue becoming 'full'.
|
||||
Duplicates and null-values are allowed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.EnqueueWithoutDuplicates(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue if it doesn't already exist. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
This queue automatically resizes itself, so there's no concern of the queue becoming 'full'. Null values are allowed.
|
||||
Returns true if the node was successfully enqueued; false if it already exists.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes an item from the queue. The item does not need to be the head of the queue.
|
||||
If the item is not in the queue, an exception is thrown. If unsure, check Contains() first.
|
||||
If multiple copies of the item are enqueued, only the first one is removed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of an item.
|
||||
Calling this method on a item not in the queue will throw an exception.
|
||||
If the item is enqueued multiple times, only the first one will be updated.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to update all of them, please wrap your items in a wrapper class so they can be distinguished).
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.GetPriority(`0)">
|
||||
<summary>
|
||||
Returns the priority of the given item.
|
||||
Calling this method on a item not in the queue will throw an exception.
|
||||
If the item is enqueued multiple times, only the priority of the first will be returned.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryFirst(`0@)">
|
||||
Get the head of the queue, without removing it (use TryDequeue() for that).
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and First
|
||||
Returns true if successful, false otherwise
|
||||
O(1)
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryDequeue(`0@)">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and sets it to first.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and Dequeue()
|
||||
Returns true if successful; false if queue was empty
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryRemove(`0)">
|
||||
<summary>
|
||||
Attempts to remove an item from the queue. The item does not need to be the head of the queue.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and Remove()
|
||||
Returns true if the item was successfully removed, false if it wasn't in the queue.
|
||||
If multiple copies of the item are enqueued, only the first one is removed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryUpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of an item.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and UpdatePriority()
|
||||
If the item is enqueued multiple times, only the first one will be updated.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to update all of them, please wrap your items in a wrapper class so they can be distinguished).
|
||||
Returns true if the item priority was updated, false otherwise.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryGetPriority(`0,`1@)">
|
||||
<summary>
|
||||
Attempt to get the priority of the given item.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and GetPriority()
|
||||
If the item is enqueued multiple times, only the priority of the first will be returned.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
|
||||
Returns true if the item was found in the queue, false otherwise
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.SimplePriorityQueue`1">
|
||||
<summary>
|
||||
A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
|
||||
FastPriorityQueue
|
||||
This class is kept here for backwards compatibility. It's recommended you use SimplePriorityQueue<TItem, TPriority>
|
||||
</summary>
|
||||
<typeparam name="TItem">The type to enqueue</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor(System.Collections.Generic.IComparer{System.Single})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="comparer">The comparer used to compare priority values. Defaults to Comparer<float>.default</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor(System.Comparison{System.Single})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="comparer">The comparison function to use to compare priority values</param>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
BIN
packages/OptimizedPriorityQueue.4.2.0/lib/net35-unity full v3.5/Priority Queue.dll
vendored
Executable file
BIN
packages/OptimizedPriorityQueue.4.2.0/lib/net35-unity full v3.5/Priority Queue.dll
vendored
Executable file
Binary file not shown.
651
packages/OptimizedPriorityQueue.4.2.0/lib/net35-unity full v3.5/Priority Queue.xml
vendored
Executable file
651
packages/OptimizedPriorityQueue.4.2.0/lib/net35-unity full v3.5/Priority Queue.xml
vendored
Executable file
@ -0,0 +1,651 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>Priority Queue</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:Priority_Queue.FastPriorityQueue`1">
|
||||
<summary>
|
||||
An implementation of a min-Priority Queue using a heap. Has O(1) .Contains()!
|
||||
See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
|
||||
</summary>
|
||||
<typeparam name="T">The values in the queue. Must extend the FastPriorityQueueNode class</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Enqueue(`0,System.Single)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken arbitrarily.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.HasHigherOrEqualPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherOrEqualPriority(node, node) (ie. both arguments the same node) will return true
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.UpdatePriority(`0,System.Single)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
If the node is currently in the queue or belongs to another queue, the result is undefined
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueueNode.Priority">
|
||||
<summary>
|
||||
The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
|
||||
Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueueNode.QueueIndex">
|
||||
<summary>
|
||||
Represents the current position in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.GenericPriorityQueue`2">
|
||||
<summary>
|
||||
A copy of StablePriorityQueue which also has generic priority-type
|
||||
</summary>
|
||||
<typeparam name="TItem">The values in the queue. Must extend the GenericPriorityQueueNode class</typeparam>
|
||||
<typeparam name="TPriority">The priority-type. Must extend IComparable<TPriority></typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32,System.Collections.Generic.IComparer{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
<param name="comparer">The comparer used to compare TPriority values.</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32,System.Comparison{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
<param name="comparer">The comparison function to use to compare TPriority values</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.Priority">
|
||||
<summary>
|
||||
The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
|
||||
Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.QueueIndex">
|
||||
<summary>
|
||||
Represents the current position in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.InsertionIndex">
|
||||
<summary>
|
||||
Represents the order the node was inserted in
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.IFixedSizePriorityQueue`2">
|
||||
<summary>
|
||||
A helper-interface only needed to make writing unit tests a bit easier (hence the 'internal' access modifier)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IFixedSizePriorityQueue`2.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IFixedSizePriorityQueue`2.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IFixedSizePriorityQueue`2.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.IPriorityQueue`2">
|
||||
<summary>
|
||||
The IPriorityQueue interface. This is mainly here for purists, and in case I decide to add more implementations later.
|
||||
For speed purposes, it is actually recommended that you *don't* access the priority queue through this interface, since the JIT can
|
||||
(theoretically?) optimize method calls from concrete-types slightly better.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
See implementation for how duplicates are handled.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns whether the given node is in the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of a node.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IPriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IPriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.SimplePriorityQueue`2">
|
||||
<summary>
|
||||
A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
|
||||
FastPriorityQueue
|
||||
Methods tagged as O(1) or O(log n) are assuming there are no duplicates. Duplicates may increase the algorithmic complexity.
|
||||
</summary>
|
||||
<typeparam name="TItem">The type to enqueue</typeparam>
|
||||
<typeparam name="TPriority">The priority-type to use for nodes. Must extend IComparable<TPriority></typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IComparer{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Comparison{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparison function to use to compare TPriority values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IComparer{`1},System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default</param>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Comparison{`1},System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparison function to use to compare TPriority values</param>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.GetExistingNode(`0)">
|
||||
<summary>
|
||||
Given an item of type T, returns the existing SimpleNode in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.AddToNodeCache(Priority_Queue.SimplePriorityQueue{`0,`1}.SimpleNode)">
|
||||
<summary>
|
||||
Adds an item to the Node-cache to allow for many methods to be O(1) or O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.RemoveFromNodeCache(Priority_Queue.SimplePriorityQueue{`0,`1}.SimpleNode)">
|
||||
<summary>
|
||||
Removes an item to the Node-cache to allow for many methods to be O(1) or O(log n) (assuming no duplicates)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.SimplePriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.SimplePriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
Throws an exception when the queue is empty.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns whether the given item is in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, throws an exception
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.EnqueueNoLockOrCache(`0,`1)">
|
||||
<summary>
|
||||
Enqueue the item with the given priority, without calling lock(_queue) or AddToNodeCache(node)
|
||||
</summary>
|
||||
<param name="item"></param>
|
||||
<param name="priority"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
This queue automatically resizes itself, so there's no concern of the queue becoming 'full'.
|
||||
Duplicates and null-values are allowed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.EnqueueWithoutDuplicates(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue if it doesn't already exist. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
This queue automatically resizes itself, so there's no concern of the queue becoming 'full'. Null values are allowed.
|
||||
Returns true if the node was successfully enqueued; false if it already exists.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes an item from the queue. The item does not need to be the head of the queue.
|
||||
If the item is not in the queue, an exception is thrown. If unsure, check Contains() first.
|
||||
If multiple copies of the item are enqueued, only the first one is removed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of an item.
|
||||
Calling this method on a item not in the queue will throw an exception.
|
||||
If the item is enqueued multiple times, only the first one will be updated.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to update all of them, please wrap your items in a wrapper class so they can be distinguished).
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.GetPriority(`0)">
|
||||
<summary>
|
||||
Returns the priority of the given item.
|
||||
Calling this method on a item not in the queue will throw an exception.
|
||||
If the item is enqueued multiple times, only the priority of the first will be returned.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryFirst(`0@)">
|
||||
Get the head of the queue, without removing it (use TryDequeue() for that).
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and First
|
||||
Returns true if successful, false otherwise
|
||||
O(1)
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryDequeue(`0@)">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and sets it to first.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and Dequeue()
|
||||
Returns true if successful; false if queue was empty
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryRemove(`0)">
|
||||
<summary>
|
||||
Attempts to remove an item from the queue. The item does not need to be the head of the queue.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and Remove()
|
||||
Returns true if the item was successfully removed, false if it wasn't in the queue.
|
||||
If multiple copies of the item are enqueued, only the first one is removed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryUpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of an item.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and UpdatePriority()
|
||||
If the item is enqueued multiple times, only the first one will be updated.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to update all of them, please wrap your items in a wrapper class so they can be distinguished).
|
||||
Returns true if the item priority was updated, false otherwise.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryGetPriority(`0,`1@)">
|
||||
<summary>
|
||||
Attempt to get the priority of the given item.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and GetPriority()
|
||||
If the item is enqueued multiple times, only the priority of the first will be returned.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
|
||||
Returns true if the item was found in the queue, false otherwise
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.SimplePriorityQueue`1">
|
||||
<summary>
|
||||
A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
|
||||
FastPriorityQueue
|
||||
This class is kept here for backwards compatibility. It's recommended you use SimplePriorityQueue<TItem, TPriority>
|
||||
</summary>
|
||||
<typeparam name="TItem">The type to enqueue</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor(System.Collections.Generic.IComparer{System.Single})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="comparer">The comparer used to compare priority values. Defaults to Comparer<float>.default</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor(System.Comparison{System.Single})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="comparer">The comparison function to use to compare priority values</param>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.StablePriorityQueue`1">
|
||||
<summary>
|
||||
A copy of FastPriorityQueue which is also stable - that is, when two nodes are enqueued with the same priority, they
|
||||
are always dequeued in the same order.
|
||||
See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
|
||||
</summary>
|
||||
<typeparam name="T">The values in the queue. Must extend the StablePriorityQueueNode class</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Enqueue(`0,System.Single)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.UpdatePriority(`0,System.Single)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueueNode.InsertionIndex">
|
||||
<summary>
|
||||
Represents the order the node was inserted in
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
BIN
packages/OptimizedPriorityQueue.4.2.0/lib/net35-unity subset v3.5/Priority Queue.dll
vendored
Executable file
BIN
packages/OptimizedPriorityQueue.4.2.0/lib/net35-unity subset v3.5/Priority Queue.dll
vendored
Executable file
Binary file not shown.
651
packages/OptimizedPriorityQueue.4.2.0/lib/net35-unity subset v3.5/Priority Queue.xml
vendored
Executable file
651
packages/OptimizedPriorityQueue.4.2.0/lib/net35-unity subset v3.5/Priority Queue.xml
vendored
Executable file
@ -0,0 +1,651 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>Priority Queue</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:Priority_Queue.FastPriorityQueue`1">
|
||||
<summary>
|
||||
An implementation of a min-Priority Queue using a heap. Has O(1) .Contains()!
|
||||
See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
|
||||
</summary>
|
||||
<typeparam name="T">The values in the queue. Must extend the FastPriorityQueueNode class</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Enqueue(`0,System.Single)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken arbitrarily.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.HasHigherOrEqualPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherOrEqualPriority(node, node) (ie. both arguments the same node) will return true
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.UpdatePriority(`0,System.Single)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
If the node is currently in the queue or belongs to another queue, the result is undefined
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueueNode.Priority">
|
||||
<summary>
|
||||
The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
|
||||
Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueueNode.QueueIndex">
|
||||
<summary>
|
||||
Represents the current position in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.GenericPriorityQueue`2">
|
||||
<summary>
|
||||
A copy of StablePriorityQueue which also has generic priority-type
|
||||
</summary>
|
||||
<typeparam name="TItem">The values in the queue. Must extend the GenericPriorityQueueNode class</typeparam>
|
||||
<typeparam name="TPriority">The priority-type. Must extend IComparable<TPriority></typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32,System.Collections.Generic.IComparer{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
<param name="comparer">The comparer used to compare TPriority values.</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32,System.Comparison{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
<param name="comparer">The comparison function to use to compare TPriority values</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.Priority">
|
||||
<summary>
|
||||
The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
|
||||
Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.QueueIndex">
|
||||
<summary>
|
||||
Represents the current position in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.InsertionIndex">
|
||||
<summary>
|
||||
Represents the order the node was inserted in
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.IFixedSizePriorityQueue`2">
|
||||
<summary>
|
||||
A helper-interface only needed to make writing unit tests a bit easier (hence the 'internal' access modifier)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IFixedSizePriorityQueue`2.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IFixedSizePriorityQueue`2.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IFixedSizePriorityQueue`2.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.IPriorityQueue`2">
|
||||
<summary>
|
||||
The IPriorityQueue interface. This is mainly here for purists, and in case I decide to add more implementations later.
|
||||
For speed purposes, it is actually recommended that you *don't* access the priority queue through this interface, since the JIT can
|
||||
(theoretically?) optimize method calls from concrete-types slightly better.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
See implementation for how duplicates are handled.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns whether the given node is in the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of a node.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IPriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IPriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.SimplePriorityQueue`2">
|
||||
<summary>
|
||||
A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
|
||||
FastPriorityQueue
|
||||
Methods tagged as O(1) or O(log n) are assuming there are no duplicates. Duplicates may increase the algorithmic complexity.
|
||||
</summary>
|
||||
<typeparam name="TItem">The type to enqueue</typeparam>
|
||||
<typeparam name="TPriority">The priority-type to use for nodes. Must extend IComparable<TPriority></typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IComparer{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Comparison{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparison function to use to compare TPriority values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IComparer{`1},System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default</param>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Comparison{`1},System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparison function to use to compare TPriority values</param>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.GetExistingNode(`0)">
|
||||
<summary>
|
||||
Given an item of type T, returns the existing SimpleNode in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.AddToNodeCache(Priority_Queue.SimplePriorityQueue{`0,`1}.SimpleNode)">
|
||||
<summary>
|
||||
Adds an item to the Node-cache to allow for many methods to be O(1) or O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.RemoveFromNodeCache(Priority_Queue.SimplePriorityQueue{`0,`1}.SimpleNode)">
|
||||
<summary>
|
||||
Removes an item to the Node-cache to allow for many methods to be O(1) or O(log n) (assuming no duplicates)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.SimplePriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.SimplePriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
Throws an exception when the queue is empty.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns whether the given item is in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, throws an exception
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.EnqueueNoLockOrCache(`0,`1)">
|
||||
<summary>
|
||||
Enqueue the item with the given priority, without calling lock(_queue) or AddToNodeCache(node)
|
||||
</summary>
|
||||
<param name="item"></param>
|
||||
<param name="priority"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
This queue automatically resizes itself, so there's no concern of the queue becoming 'full'.
|
||||
Duplicates and null-values are allowed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.EnqueueWithoutDuplicates(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue if it doesn't already exist. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
This queue automatically resizes itself, so there's no concern of the queue becoming 'full'. Null values are allowed.
|
||||
Returns true if the node was successfully enqueued; false if it already exists.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes an item from the queue. The item does not need to be the head of the queue.
|
||||
If the item is not in the queue, an exception is thrown. If unsure, check Contains() first.
|
||||
If multiple copies of the item are enqueued, only the first one is removed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of an item.
|
||||
Calling this method on a item not in the queue will throw an exception.
|
||||
If the item is enqueued multiple times, only the first one will be updated.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to update all of them, please wrap your items in a wrapper class so they can be distinguished).
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.GetPriority(`0)">
|
||||
<summary>
|
||||
Returns the priority of the given item.
|
||||
Calling this method on a item not in the queue will throw an exception.
|
||||
If the item is enqueued multiple times, only the priority of the first will be returned.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryFirst(`0@)">
|
||||
Get the head of the queue, without removing it (use TryDequeue() for that).
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and First
|
||||
Returns true if successful, false otherwise
|
||||
O(1)
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryDequeue(`0@)">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and sets it to first.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and Dequeue()
|
||||
Returns true if successful; false if queue was empty
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryRemove(`0)">
|
||||
<summary>
|
||||
Attempts to remove an item from the queue. The item does not need to be the head of the queue.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and Remove()
|
||||
Returns true if the item was successfully removed, false if it wasn't in the queue.
|
||||
If multiple copies of the item are enqueued, only the first one is removed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryUpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of an item.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and UpdatePriority()
|
||||
If the item is enqueued multiple times, only the first one will be updated.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to update all of them, please wrap your items in a wrapper class so they can be distinguished).
|
||||
Returns true if the item priority was updated, false otherwise.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryGetPriority(`0,`1@)">
|
||||
<summary>
|
||||
Attempt to get the priority of the given item.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and GetPriority()
|
||||
If the item is enqueued multiple times, only the priority of the first will be returned.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
|
||||
Returns true if the item was found in the queue, false otherwise
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.SimplePriorityQueue`1">
|
||||
<summary>
|
||||
A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
|
||||
FastPriorityQueue
|
||||
This class is kept here for backwards compatibility. It's recommended you use SimplePriorityQueue<TItem, TPriority>
|
||||
</summary>
|
||||
<typeparam name="TItem">The type to enqueue</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor(System.Collections.Generic.IComparer{System.Single})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="comparer">The comparer used to compare priority values. Defaults to Comparer<float>.default</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor(System.Comparison{System.Single})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="comparer">The comparison function to use to compare priority values</param>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.StablePriorityQueue`1">
|
||||
<summary>
|
||||
A copy of FastPriorityQueue which is also stable - that is, when two nodes are enqueued with the same priority, they
|
||||
are always dequeued in the same order.
|
||||
See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
|
||||
</summary>
|
||||
<typeparam name="T">The values in the queue. Must extend the StablePriorityQueueNode class</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Enqueue(`0,System.Single)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.UpdatePriority(`0,System.Single)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueueNode.InsertionIndex">
|
||||
<summary>
|
||||
Represents the order the node was inserted in
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
BIN
packages/OptimizedPriorityQueue.4.2.0/lib/net45/Priority Queue.dll
vendored
Executable file
BIN
packages/OptimizedPriorityQueue.4.2.0/lib/net45/Priority Queue.dll
vendored
Executable file
Binary file not shown.
651
packages/OptimizedPriorityQueue.4.2.0/lib/net45/Priority Queue.xml
vendored
Executable file
651
packages/OptimizedPriorityQueue.4.2.0/lib/net45/Priority Queue.xml
vendored
Executable file
@ -0,0 +1,651 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>Priority Queue</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:Priority_Queue.GenericPriorityQueue`2">
|
||||
<summary>
|
||||
A copy of StablePriorityQueue which also has generic priority-type
|
||||
</summary>
|
||||
<typeparam name="TItem">The values in the queue. Must extend the GenericPriorityQueueNode class</typeparam>
|
||||
<typeparam name="TPriority">The priority-type. Must extend IComparable<TPriority></typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32,System.Collections.Generic.IComparer{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
<param name="comparer">The comparer used to compare TPriority values.</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32,System.Comparison{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
<param name="comparer">The comparison function to use to compare TPriority values</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.Priority">
|
||||
<summary>
|
||||
The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
|
||||
Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.QueueIndex">
|
||||
<summary>
|
||||
Represents the current position in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.InsertionIndex">
|
||||
<summary>
|
||||
Represents the order the node was inserted in
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.IFixedSizePriorityQueue`2">
|
||||
<summary>
|
||||
A helper-interface only needed to make writing unit tests a bit easier (hence the 'internal' access modifier)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IFixedSizePriorityQueue`2.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IFixedSizePriorityQueue`2.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IFixedSizePriorityQueue`2.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.StablePriorityQueue`1">
|
||||
<summary>
|
||||
A copy of FastPriorityQueue which is also stable - that is, when two nodes are enqueued with the same priority, they
|
||||
are always dequeued in the same order.
|
||||
See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
|
||||
</summary>
|
||||
<typeparam name="T">The values in the queue. Must extend the StablePriorityQueueNode class</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Enqueue(`0,System.Single)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.UpdatePriority(`0,System.Single)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.FastPriorityQueue`1">
|
||||
<summary>
|
||||
An implementation of a min-Priority Queue using a heap. Has O(1) .Contains()!
|
||||
See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
|
||||
</summary>
|
||||
<typeparam name="T">The values in the queue. Must extend the FastPriorityQueueNode class</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Enqueue(`0,System.Single)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken arbitrarily.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.HasHigherOrEqualPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherOrEqualPriority(node, node) (ie. both arguments the same node) will return true
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.UpdatePriority(`0,System.Single)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
If the node is currently in the queue or belongs to another queue, the result is undefined
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueueNode.InsertionIndex">
|
||||
<summary>
|
||||
Represents the order the node was inserted in
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.IPriorityQueue`2">
|
||||
<summary>
|
||||
The IPriorityQueue interface. This is mainly here for purists, and in case I decide to add more implementations later.
|
||||
For speed purposes, it is actually recommended that you *don't* access the priority queue through this interface, since the JIT can
|
||||
(theoretically?) optimize method calls from concrete-types slightly better.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
See implementation for how duplicates are handled.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns whether the given node is in the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of a node.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IPriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IPriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueueNode.Priority">
|
||||
<summary>
|
||||
The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
|
||||
Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueueNode.QueueIndex">
|
||||
<summary>
|
||||
Represents the current position in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.SimplePriorityQueue`2">
|
||||
<summary>
|
||||
A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
|
||||
FastPriorityQueue
|
||||
Methods tagged as O(1) or O(log n) are assuming there are no duplicates. Duplicates may increase the algorithmic complexity.
|
||||
</summary>
|
||||
<typeparam name="TItem">The type to enqueue</typeparam>
|
||||
<typeparam name="TPriority">The priority-type to use for nodes. Must extend IComparable<TPriority></typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IComparer{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Comparison{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparison function to use to compare TPriority values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IComparer{`1},System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default</param>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Comparison{`1},System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparison function to use to compare TPriority values</param>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.GetExistingNode(`0)">
|
||||
<summary>
|
||||
Given an item of type T, returns the existing SimpleNode in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.AddToNodeCache(Priority_Queue.SimplePriorityQueue{`0,`1}.SimpleNode)">
|
||||
<summary>
|
||||
Adds an item to the Node-cache to allow for many methods to be O(1) or O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.RemoveFromNodeCache(Priority_Queue.SimplePriorityQueue{`0,`1}.SimpleNode)">
|
||||
<summary>
|
||||
Removes an item to the Node-cache to allow for many methods to be O(1) or O(log n) (assuming no duplicates)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.SimplePriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.SimplePriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
Throws an exception when the queue is empty.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns whether the given item is in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, throws an exception
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.EnqueueNoLockOrCache(`0,`1)">
|
||||
<summary>
|
||||
Enqueue the item with the given priority, without calling lock(_queue) or AddToNodeCache(node)
|
||||
</summary>
|
||||
<param name="item"></param>
|
||||
<param name="priority"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
This queue automatically resizes itself, so there's no concern of the queue becoming 'full'.
|
||||
Duplicates and null-values are allowed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.EnqueueWithoutDuplicates(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue if it doesn't already exist. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
This queue automatically resizes itself, so there's no concern of the queue becoming 'full'. Null values are allowed.
|
||||
Returns true if the node was successfully enqueued; false if it already exists.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes an item from the queue. The item does not need to be the head of the queue.
|
||||
If the item is not in the queue, an exception is thrown. If unsure, check Contains() first.
|
||||
If multiple copies of the item are enqueued, only the first one is removed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of an item.
|
||||
Calling this method on a item not in the queue will throw an exception.
|
||||
If the item is enqueued multiple times, only the first one will be updated.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to update all of them, please wrap your items in a wrapper class so they can be distinguished).
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.GetPriority(`0)">
|
||||
<summary>
|
||||
Returns the priority of the given item.
|
||||
Calling this method on a item not in the queue will throw an exception.
|
||||
If the item is enqueued multiple times, only the priority of the first will be returned.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryFirst(`0@)">
|
||||
Get the head of the queue, without removing it (use TryDequeue() for that).
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and First
|
||||
Returns true if successful, false otherwise
|
||||
O(1)
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryDequeue(`0@)">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and sets it to first.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and Dequeue()
|
||||
Returns true if successful; false if queue was empty
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryRemove(`0)">
|
||||
<summary>
|
||||
Attempts to remove an item from the queue. The item does not need to be the head of the queue.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and Remove()
|
||||
Returns true if the item was successfully removed, false if it wasn't in the queue.
|
||||
If multiple copies of the item are enqueued, only the first one is removed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryUpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of an item.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and UpdatePriority()
|
||||
If the item is enqueued multiple times, only the first one will be updated.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to update all of them, please wrap your items in a wrapper class so they can be distinguished).
|
||||
Returns true if the item priority was updated, false otherwise.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryGetPriority(`0,`1@)">
|
||||
<summary>
|
||||
Attempt to get the priority of the given item.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and GetPriority()
|
||||
If the item is enqueued multiple times, only the priority of the first will be returned.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
|
||||
Returns true if the item was found in the queue, false otherwise
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.SimplePriorityQueue`1">
|
||||
<summary>
|
||||
A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
|
||||
FastPriorityQueue
|
||||
This class is kept here for backwards compatibility. It's recommended you use SimplePriorityQueue<TItem, TPriority>
|
||||
</summary>
|
||||
<typeparam name="TItem">The type to enqueue</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor(System.Collections.Generic.IComparer{System.Single})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="comparer">The comparer used to compare priority values. Defaults to Comparer<float>.default</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor(System.Comparison{System.Single})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="comparer">The comparison function to use to compare priority values</param>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
BIN
packages/OptimizedPriorityQueue.4.2.0/lib/netstandard1.0/Priority Queue.dll
vendored
Executable file
BIN
packages/OptimizedPriorityQueue.4.2.0/lib/netstandard1.0/Priority Queue.dll
vendored
Executable file
Binary file not shown.
651
packages/OptimizedPriorityQueue.4.2.0/lib/netstandard1.0/Priority Queue.xml
vendored
Executable file
651
packages/OptimizedPriorityQueue.4.2.0/lib/netstandard1.0/Priority Queue.xml
vendored
Executable file
@ -0,0 +1,651 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>Priority Queue</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:Priority_Queue.FastPriorityQueue`1">
|
||||
<summary>
|
||||
An implementation of a min-Priority Queue using a heap. Has O(1) .Contains()!
|
||||
See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
|
||||
</summary>
|
||||
<typeparam name="T">The values in the queue. Must extend the FastPriorityQueueNode class</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Enqueue(`0,System.Single)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken arbitrarily.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.HasHigherOrEqualPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherOrEqualPriority(node, node) (ie. both arguments the same node) will return true
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.UpdatePriority(`0,System.Single)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
If the node is currently in the queue or belongs to another queue, the result is undefined
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueueNode.Priority">
|
||||
<summary>
|
||||
The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
|
||||
Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueueNode.QueueIndex">
|
||||
<summary>
|
||||
Represents the current position in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.GenericPriorityQueue`2">
|
||||
<summary>
|
||||
A copy of StablePriorityQueue which also has generic priority-type
|
||||
</summary>
|
||||
<typeparam name="TItem">The values in the queue. Must extend the GenericPriorityQueueNode class</typeparam>
|
||||
<typeparam name="TPriority">The priority-type. Must extend IComparable<TPriority></typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32,System.Collections.Generic.IComparer{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
<param name="comparer">The comparer used to compare TPriority values.</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32,System.Comparison{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
<param name="comparer">The comparison function to use to compare TPriority values</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.Priority">
|
||||
<summary>
|
||||
The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
|
||||
Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.QueueIndex">
|
||||
<summary>
|
||||
Represents the current position in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.InsertionIndex">
|
||||
<summary>
|
||||
Represents the order the node was inserted in
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.IFixedSizePriorityQueue`2">
|
||||
<summary>
|
||||
A helper-interface only needed to make writing unit tests a bit easier (hence the 'internal' access modifier)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IFixedSizePriorityQueue`2.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IFixedSizePriorityQueue`2.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IFixedSizePriorityQueue`2.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.IPriorityQueue`2">
|
||||
<summary>
|
||||
The IPriorityQueue interface. This is mainly here for purists, and in case I decide to add more implementations later.
|
||||
For speed purposes, it is actually recommended that you *don't* access the priority queue through this interface, since the JIT can
|
||||
(theoretically?) optimize method calls from concrete-types slightly better.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
See implementation for how duplicates are handled.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns whether the given node is in the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of a node.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IPriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IPriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.SimplePriorityQueue`2">
|
||||
<summary>
|
||||
A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
|
||||
FastPriorityQueue
|
||||
Methods tagged as O(1) or O(log n) are assuming there are no duplicates. Duplicates may increase the algorithmic complexity.
|
||||
</summary>
|
||||
<typeparam name="TItem">The type to enqueue</typeparam>
|
||||
<typeparam name="TPriority">The priority-type to use for nodes. Must extend IComparable<TPriority></typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IComparer{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Comparison{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparison function to use to compare TPriority values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IComparer{`1},System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default</param>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Comparison{`1},System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparison function to use to compare TPriority values</param>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.GetExistingNode(`0)">
|
||||
<summary>
|
||||
Given an item of type T, returns the existing SimpleNode in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.AddToNodeCache(Priority_Queue.SimplePriorityQueue{`0,`1}.SimpleNode)">
|
||||
<summary>
|
||||
Adds an item to the Node-cache to allow for many methods to be O(1) or O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.RemoveFromNodeCache(Priority_Queue.SimplePriorityQueue{`0,`1}.SimpleNode)">
|
||||
<summary>
|
||||
Removes an item to the Node-cache to allow for many methods to be O(1) or O(log n) (assuming no duplicates)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.SimplePriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.SimplePriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
Throws an exception when the queue is empty.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns whether the given item is in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, throws an exception
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.EnqueueNoLockOrCache(`0,`1)">
|
||||
<summary>
|
||||
Enqueue the item with the given priority, without calling lock(_queue) or AddToNodeCache(node)
|
||||
</summary>
|
||||
<param name="item"></param>
|
||||
<param name="priority"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
This queue automatically resizes itself, so there's no concern of the queue becoming 'full'.
|
||||
Duplicates and null-values are allowed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.EnqueueWithoutDuplicates(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue if it doesn't already exist. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
This queue automatically resizes itself, so there's no concern of the queue becoming 'full'. Null values are allowed.
|
||||
Returns true if the node was successfully enqueued; false if it already exists.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes an item from the queue. The item does not need to be the head of the queue.
|
||||
If the item is not in the queue, an exception is thrown. If unsure, check Contains() first.
|
||||
If multiple copies of the item are enqueued, only the first one is removed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of an item.
|
||||
Calling this method on a item not in the queue will throw an exception.
|
||||
If the item is enqueued multiple times, only the first one will be updated.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to update all of them, please wrap your items in a wrapper class so they can be distinguished).
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.GetPriority(`0)">
|
||||
<summary>
|
||||
Returns the priority of the given item.
|
||||
Calling this method on a item not in the queue will throw an exception.
|
||||
If the item is enqueued multiple times, only the priority of the first will be returned.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryFirst(`0@)">
|
||||
Get the head of the queue, without removing it (use TryDequeue() for that).
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and First
|
||||
Returns true if successful, false otherwise
|
||||
O(1)
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryDequeue(`0@)">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and sets it to first.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and Dequeue()
|
||||
Returns true if successful; false if queue was empty
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryRemove(`0)">
|
||||
<summary>
|
||||
Attempts to remove an item from the queue. The item does not need to be the head of the queue.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and Remove()
|
||||
Returns true if the item was successfully removed, false if it wasn't in the queue.
|
||||
If multiple copies of the item are enqueued, only the first one is removed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryUpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of an item.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and UpdatePriority()
|
||||
If the item is enqueued multiple times, only the first one will be updated.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to update all of them, please wrap your items in a wrapper class so they can be distinguished).
|
||||
Returns true if the item priority was updated, false otherwise.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryGetPriority(`0,`1@)">
|
||||
<summary>
|
||||
Attempt to get the priority of the given item.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and GetPriority()
|
||||
If the item is enqueued multiple times, only the priority of the first will be returned.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
|
||||
Returns true if the item was found in the queue, false otherwise
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.SimplePriorityQueue`1">
|
||||
<summary>
|
||||
A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
|
||||
FastPriorityQueue
|
||||
This class is kept here for backwards compatibility. It's recommended you use SimplePriorityQueue<TItem, TPriority>
|
||||
</summary>
|
||||
<typeparam name="TItem">The type to enqueue</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor(System.Collections.Generic.IComparer{System.Single})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="comparer">The comparer used to compare priority values. Defaults to Comparer<float>.default</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor(System.Comparison{System.Single})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="comparer">The comparison function to use to compare priority values</param>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.StablePriorityQueue`1">
|
||||
<summary>
|
||||
A copy of FastPriorityQueue which is also stable - that is, when two nodes are enqueued with the same priority, they
|
||||
are always dequeued in the same order.
|
||||
See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
|
||||
</summary>
|
||||
<typeparam name="T">The values in the queue. Must extend the StablePriorityQueueNode class</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Enqueue(`0,System.Single)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.UpdatePriority(`0,System.Single)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueueNode.InsertionIndex">
|
||||
<summary>
|
||||
Represents the order the node was inserted in
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
BIN
packages/OptimizedPriorityQueue.4.2.0/lib/portable-net40+sl5+win8+wpa81+wp8/Priority Queue.dll
vendored
Executable file
BIN
packages/OptimizedPriorityQueue.4.2.0/lib/portable-net40+sl5+win8+wpa81+wp8/Priority Queue.dll
vendored
Executable file
Binary file not shown.
651
packages/OptimizedPriorityQueue.4.2.0/lib/portable-net40+sl5+win8+wpa81+wp8/Priority Queue.xml
vendored
Executable file
651
packages/OptimizedPriorityQueue.4.2.0/lib/portable-net40+sl5+win8+wpa81+wp8/Priority Queue.xml
vendored
Executable file
@ -0,0 +1,651 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>Priority Queue</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:Priority_Queue.FastPriorityQueue`1">
|
||||
<summary>
|
||||
An implementation of a min-Priority Queue using a heap. Has O(1) .Contains()!
|
||||
See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
|
||||
</summary>
|
||||
<typeparam name="T">The values in the queue. Must extend the FastPriorityQueueNode class</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Enqueue(`0,System.Single)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken arbitrarily.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.HasHigherOrEqualPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherOrEqualPriority(node, node) (ie. both arguments the same node) will return true
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueue`1.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.UpdatePriority(`0,System.Single)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
If the node is currently in the queue or belongs to another queue, the result is undefined
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.FastPriorityQueue`1.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueueNode.Priority">
|
||||
<summary>
|
||||
The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
|
||||
Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.FastPriorityQueueNode.QueueIndex">
|
||||
<summary>
|
||||
Represents the current position in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.GenericPriorityQueue`2">
|
||||
<summary>
|
||||
A copy of StablePriorityQueue which also has generic priority-type
|
||||
</summary>
|
||||
<typeparam name="TItem">The values in the queue. Must extend the GenericPriorityQueueNode class</typeparam>
|
||||
<typeparam name="TPriority">The priority-type. Must extend IComparable<TPriority></typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32,System.Collections.Generic.IComparer{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
<param name="comparer">The comparer used to compare TPriority values.</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.#ctor(System.Int32,System.Comparison{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
<param name="comparer">The comparison function to use to compare TPriority values</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.GenericPriorityQueue`2.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.Priority">
|
||||
<summary>
|
||||
The Priority to insert this node at. Must be set BEFORE adding a node to the queue (ideally just once, in the node's constructor).
|
||||
Should not be manually edited once the node has been enqueued - use queue.UpdatePriority() instead
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.QueueIndex">
|
||||
<summary>
|
||||
Represents the current position in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.GenericPriorityQueueNode`1.InsertionIndex">
|
||||
<summary>
|
||||
Represents the order the node was inserted in
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.IFixedSizePriorityQueue`2">
|
||||
<summary>
|
||||
A helper-interface only needed to make writing unit tests a bit easier (hence the 'internal' access modifier)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IFixedSizePriorityQueue`2.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IFixedSizePriorityQueue`2.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IFixedSizePriorityQueue`2.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.IPriorityQueue`2">
|
||||
<summary>
|
||||
The IPriorityQueue interface. This is mainly here for purists, and in case I decide to add more implementations later.
|
||||
For speed purposes, it is actually recommended that you *don't* access the priority queue through this interface, since the JIT can
|
||||
(theoretically?) optimize method calls from concrete-types slightly better.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
See implementation for how duplicates are handled.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns whether the given node is in the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.IPriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of a node.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IPriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.IPriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.SimplePriorityQueue`2">
|
||||
<summary>
|
||||
A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
|
||||
FastPriorityQueue
|
||||
Methods tagged as O(1) or O(log n) are assuming there are no duplicates. Duplicates may increase the algorithmic complexity.
|
||||
</summary>
|
||||
<typeparam name="TItem">The type to enqueue</typeparam>
|
||||
<typeparam name="TPriority">The priority-type to use for nodes. Must extend IComparable<TPriority></typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IComparer{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Comparison{`1})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparison function to use to compare TPriority values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Collections.Generic.IComparer{`1},System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparer used to compare TPriority values. Defaults to Comparer<TPriority>.default</param>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.#ctor(System.Comparison{`1},System.Collections.Generic.IEqualityComparer{`0})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="priorityComparer">The comparison function to use to compare TPriority values</param>
|
||||
<param name="itemEquality">The equality comparison function to use to compare TItem values</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.GetExistingNode(`0)">
|
||||
<summary>
|
||||
Given an item of type T, returns the existing SimpleNode in the queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.AddToNodeCache(Priority_Queue.SimplePriorityQueue{`0,`1}.SimpleNode)">
|
||||
<summary>
|
||||
Adds an item to the Node-cache to allow for many methods to be O(1) or O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.RemoveFromNodeCache(Priority_Queue.SimplePriorityQueue{`0,`1}.SimpleNode)">
|
||||
<summary>
|
||||
Removes an item to the Node-cache to allow for many methods to be O(1) or O(log n) (assuming no duplicates)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.SimplePriorityQueue`2.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.SimplePriorityQueue`2.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
Throws an exception when the queue is empty.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Contains(`0)">
|
||||
<summary>
|
||||
Returns whether the given item is in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, throws an exception
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.EnqueueNoLockOrCache(`0,`1)">
|
||||
<summary>
|
||||
Enqueue the item with the given priority, without calling lock(_queue) or AddToNodeCache(node)
|
||||
</summary>
|
||||
<param name="item"></param>
|
||||
<param name="priority"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Enqueue(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
This queue automatically resizes itself, so there's no concern of the queue becoming 'full'.
|
||||
Duplicates and null-values are allowed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.EnqueueWithoutDuplicates(`0,`1)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue if it doesn't already exist. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
This queue automatically resizes itself, so there's no concern of the queue becoming 'full'. Null values are allowed.
|
||||
Returns true if the node was successfully enqueued; false if it already exists.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.Remove(`0)">
|
||||
<summary>
|
||||
Removes an item from the queue. The item does not need to be the head of the queue.
|
||||
If the item is not in the queue, an exception is thrown. If unsure, check Contains() first.
|
||||
If multiple copies of the item are enqueued, only the first one is removed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.UpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of an item.
|
||||
Calling this method on a item not in the queue will throw an exception.
|
||||
If the item is enqueued multiple times, only the first one will be updated.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to update all of them, please wrap your items in a wrapper class so they can be distinguished).
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.GetPriority(`0)">
|
||||
<summary>
|
||||
Returns the priority of the given item.
|
||||
Calling this method on a item not in the queue will throw an exception.
|
||||
If the item is enqueued multiple times, only the priority of the first will be returned.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryFirst(`0@)">
|
||||
Get the head of the queue, without removing it (use TryDequeue() for that).
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and First
|
||||
Returns true if successful, false otherwise
|
||||
O(1)
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryDequeue(`0@)">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and sets it to first.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and Dequeue()
|
||||
Returns true if successful; false if queue was empty
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryRemove(`0)">
|
||||
<summary>
|
||||
Attempts to remove an item from the queue. The item does not need to be the head of the queue.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and Remove()
|
||||
Returns true if the item was successfully removed, false if it wasn't in the queue.
|
||||
If multiple copies of the item are enqueued, only the first one is removed.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryUpdatePriority(`0,`1)">
|
||||
<summary>
|
||||
Call this method to change the priority of an item.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and UpdatePriority()
|
||||
If the item is enqueued multiple times, only the first one will be updated.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to update all of them, please wrap your items in a wrapper class so they can be distinguished).
|
||||
Returns true if the item priority was updated, false otherwise.
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`2.TryGetPriority(`0,`1@)">
|
||||
<summary>
|
||||
Attempt to get the priority of the given item.
|
||||
Useful for multi-threading, where the queue may become empty between calls to Contains() and GetPriority()
|
||||
If the item is enqueued multiple times, only the priority of the first will be returned.
|
||||
(If your requirements are complex enough that you need to enqueue the same item multiple times <i>and</i> be able
|
||||
to query all their priorities, please wrap your items in a wrapper class so they can be distinguished).
|
||||
Returns true if the item was found in the queue, false otherwise
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.SimplePriorityQueue`1">
|
||||
<summary>
|
||||
A simplified priority queue implementation. Is stable, auto-resizes, and thread-safe, at the cost of being slightly slower than
|
||||
FastPriorityQueue
|
||||
This class is kept here for backwards compatibility. It's recommended you use SimplePriorityQueue<TItem, TPriority>
|
||||
</summary>
|
||||
<typeparam name="TItem">The type to enqueue</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor(System.Collections.Generic.IComparer{System.Single})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="comparer">The comparer used to compare priority values. Defaults to Comparer<float>.default</param>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.SimplePriorityQueue`1.#ctor(System.Comparison{System.Single})">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="comparer">The comparison function to use to compare priority values</param>
|
||||
</member>
|
||||
<member name="T:Priority_Queue.StablePriorityQueue`1">
|
||||
<summary>
|
||||
A copy of FastPriorityQueue which is also stable - that is, when two nodes are enqueued with the same priority, they
|
||||
are always dequeued in the same order.
|
||||
See https://github.com/BlueRaja/High-Speed-Priority-Queue-for-C-Sharp/wiki/Getting-Started for more information
|
||||
</summary>
|
||||
<typeparam name="T">The values in the queue. Must extend the StablePriorityQueueNode class</typeparam>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.#ctor(System.Int32)">
|
||||
<summary>
|
||||
Instantiate a new Priority Queue
|
||||
</summary>
|
||||
<param name="maxNodes">The max nodes ever allowed to be enqueued (going over this will cause undefined behavior)</param>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.Count">
|
||||
<summary>
|
||||
Returns the number of nodes in the queue.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.MaxSize">
|
||||
<summary>
|
||||
Returns the maximum number of items that can be enqueued at once in this queue. Once you hit this number (ie. once Count == MaxSize),
|
||||
attempting to enqueue another item will cause undefined behavior. O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Clear">
|
||||
<summary>
|
||||
Removes every node from the queue.
|
||||
O(n) (So, don't do this often!)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Contains(`0)">
|
||||
<summary>
|
||||
Returns (in O(1)!) whether the given node is in the queue.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Enqueue(`0,System.Single)">
|
||||
<summary>
|
||||
Enqueue a node to the priority queue. Lower values are placed in front. Ties are broken by first-in-first-out.
|
||||
If the queue is full, the result is undefined.
|
||||
If the node is already enqueued, the result is undefined.
|
||||
If node is or has been previously added to another queue, the result is undefined unless oldQueue.ResetNode(node) has been called
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.HasHigherPriority(`0,`0)">
|
||||
<summary>
|
||||
Returns true if 'higher' has higher priority than 'lower', false otherwise.
|
||||
Note that calling HasHigherPriority(node, node) (ie. both arguments the same node) will return false
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Dequeue">
|
||||
<summary>
|
||||
Removes the head of the queue (node with minimum priority; ties are broken by order of insertion), and returns it.
|
||||
If queue is empty, result is undefined
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Resize(System.Int32)">
|
||||
<summary>
|
||||
Resize the queue so it can accept more nodes. All currently enqueued nodes are remain.
|
||||
Attempting to decrease the queue size to a size too small to hold the existing nodes results in undefined behavior
|
||||
O(n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueue`1.First">
|
||||
<summary>
|
||||
Returns the head of the queue, without removing it (use Dequeue() for that).
|
||||
If the queue is empty, behavior is undefined.
|
||||
O(1)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.UpdatePriority(`0,System.Single)">
|
||||
<summary>
|
||||
This method must be called on a node every time its priority changes while it is in the queue.
|
||||
<b>Forgetting to call this method will result in a corrupted queue!</b>
|
||||
Calling this method on a node not in the queue results in undefined behavior
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.Remove(`0)">
|
||||
<summary>
|
||||
Removes a node from the queue. The node does not need to be the head of the queue.
|
||||
If the node is not in the queue, the result is undefined. If unsure, check Contains() first
|
||||
O(log n)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.ResetNode(`0)">
|
||||
<summary>
|
||||
By default, nodes that have been previously added to one queue cannot be added to another queue.
|
||||
If you need to do this, please call originalQueue.ResetNode(node) before attempting to add it in the new queue
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Priority_Queue.StablePriorityQueue`1.IsValidQueue">
|
||||
<summary>
|
||||
<b>Should not be called in production code.</b>
|
||||
Checks to make sure the queue is still in a valid state. Used for testing/debugging the queue.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Priority_Queue.StablePriorityQueueNode.InsertionIndex">
|
||||
<summary>
|
||||
Represents the order the node was inserted in
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
Loading…
Reference in New Issue
Block a user