Crystal AI  1.0.0
Crystal.ThreadSafePriorityQueue< TItem, TPriority > Class Template Reference

Thread safe priority queue. More...

Inheritance diagram for Crystal.ThreadSafePriorityQueue< TItem, TPriority >:
Crystal.IPriorityQueue< TItem, TPriority >

Public Member Functions

bool IsBinaryHeapValid ()
 Determines whether the binary heap of the internal binary heap queue is valid. More...
 
TItem Peek ()
 Returns the item at the head of the queue without removing it. More...
 
void Enqueue (TItem item, TPriority priority)
 Enqueues an item to the list. Items with lower priority values are placed ahead of the queue. More...
 
TItem Dequeue ()
 Removes and returns the item at the head of the queue. In the event of a priority tie the item inserted first in the queue is returned. More...
 
bool Contains (TItem item)
 Returns true if the queue has 1 or more of the secified items. More...
 
TItem Remove (TItem item)
 RemoveBehaviour the specified item. Note that the queue may contain multiples of the same item, in which case this removes the one that is closest to the head. More...
 
TItem Remove (Func< TItem, bool > predicate)
 RemoveBehaviour the specified item. Note that the queue may contain multiples of the same item, in which case this removes the one that is closest to the head. More...
 
void UpdatePriority (TItem item, TPriority priority)
 Updates the priority of the specified item. If the item does not exist in the queue, it simply returns. More...
 
void Clear ()
 Removes every node from the queue. O(n) More...
 
 ThreadSafePriorityQueue ()
 Initializes a new instance of the T:Crystal.ThreadSafePriorityQueue`2 class. More...
 
 ThreadSafePriorityQueue (int size)
 Initializes a new instance of the T:Crystal.ThreadSafePriorityQueue`2 class. More...
 
- Public Member Functions inherited from Crystal.IPriorityQueue< TItem, TPriority >
TItem Peek ()
 Returns the item at the head of the queue without removing it. More...
 
void Enqueue (TItem item, TPriority priority)
 Enqueues an item to the list. Items with lower priority values are placed ahead of the queue. More...
 
TItem Dequeue ()
 Removes and returns the item at the head of the queue. In the event of a priority tie the item inserted first in the queue is returned. More...
 
bool Contains (TItem item)
 Returns true if the queue has 1 or more of the secified items. More...
 
TItem Remove (TItem item)
 RemoveBehaviour the specified item. Note that the queue may contain multiples of the same item, in which case this removes the one that is closest to the head. More...
 
TItem Remove (Func< TItem, bool > predicate)
 Removes the first item that matches the specified predicate. Note that the queue may contain multiples of the same item, in which case this removes the one that is closest to the head. More...
 
void UpdatePriority (TItem item, TPriority priority)
 Updates the priority of the specified item. If the item does not exist in the queue, it simply returns. More...
 
void Clear ()
 Removes every node from the queue. More...
 

Properties

bool HasNext [get]
 Returns true if there is an element at the head of the queue, i.e. if the queue is not empty. More...
 
int Count [get]
 Returns the number of items in the queue. More...
 
- Properties inherited from Crystal.IPriorityQueue< TItem, TPriority >
bool HasNext [get]
 Returns true if there is an element at the head of the queue, i.e. if the queue is not empty. More...
 
int Count [get]
 Returns the number of items in the queue. More...
 

Detailed Description

Thread safe priority queue.

Type Constraints
TPriority :IComparable<TPriority> 

Constructor & Destructor Documentation

Initializes a new instance of the T:Crystal.ThreadSafePriorityQueue`2 class.

Crystal.ThreadSafePriorityQueue< TItem, TPriority >.ThreadSafePriorityQueue ( int  size)
inline

Initializes a new instance of the T:Crystal.ThreadSafePriorityQueue`2 class.

Parameters
sizeSize.

Member Function Documentation

void Crystal.ThreadSafePriorityQueue< TItem, TPriority >.Clear ( )
inline

Removes every node from the queue. O(n)

bool Crystal.ThreadSafePriorityQueue< TItem, TPriority >.Contains ( TItem  item)
inline

Returns true if the queue has 1 or more of the secified items.

Parameters
itemItem.
TItem Crystal.ThreadSafePriorityQueue< TItem, TPriority >.Dequeue ( )
inline

Removes and returns the item at the head of the queue. In the event of a priority tie the item inserted first in the queue is returned.

void Crystal.ThreadSafePriorityQueue< TItem, TPriority >.Enqueue ( TItem  item,
TPriority  priority 
)
inline

Enqueues an item to the list. Items with lower priority values are placed ahead of the queue.

Parameters
itemItem.
priorityPriority.
bool Crystal.ThreadSafePriorityQueue< TItem, TPriority >.IsBinaryHeapValid ( )
inline

Determines whether the binary heap of the internal binary heap queue is valid.

Returns
true if this instance is binary heap valid; otherwise, false.
TItem Crystal.ThreadSafePriorityQueue< TItem, TPriority >.Peek ( )
inline

Returns the item at the head of the queue without removing it.

TItem Crystal.ThreadSafePriorityQueue< TItem, TPriority >.Remove ( TItem  item)
inline

RemoveBehaviour the specified item. Note that the queue may contain multiples of the same item, in which case this removes the one that is closest to the head.

TItem Crystal.ThreadSafePriorityQueue< TItem, TPriority >.Remove ( Func< TItem, bool >  predicate)
inline

RemoveBehaviour the specified item. Note that the queue may contain multiples of the same item, in which case this removes the one that is closest to the head.

void Crystal.ThreadSafePriorityQueue< TItem, TPriority >.UpdatePriority ( TItem  item,
TPriority  priority 
)
inline

Updates the priority of the specified item. If the item does not exist in the queue, it simply returns.

Parameters
itemItem.
priorityPriority.

Property Documentation

int Crystal.ThreadSafePriorityQueue< TItem, TPriority >.Count
get

Returns the number of items in the queue.

The count.

bool Crystal.ThreadSafePriorityQueue< TItem, TPriority >.HasNext
get

Returns true if there is an element at the head of the queue, i.e. if the queue is not empty.


The documentation for this class was generated from the following file: