This package implements a simple priority queue using nested tcl lists.
The command ::struct::prioqueue creates a new priority queue with default priority key type -integer.
This means that keys given to the put subcommand must have this type.
This also sets the priority ordering. For key types -ascii and -dictionary the data is sorted in
ascending order (as with lsort-increasing), thereas for -integer and -real the data is sorted in
descending order (as with lsort-decreasing).
Prioqueue names are unrestricted, but may be recognized as options if no priority type is given.
::struct::prioqueue ?-ascii|-dictionary|-integer|-real? ?prioqueueName?
The ::struct::prioqueue command creates a new prioqueue object with an associated global Tcl
command whose name is prioqueueName. This command may be used to invoke various operations on the
prioqueue. It has the following general form:
prioqueueNameoption ?argarg...?
option and the args determine the exact behavior of the command. The following commands are
possible for prioqueue objects:
prioqueueNameclear
Remove all items from the prioqueue.
prioqueueNameremoveitem
Remove the selected item from this priority queue.
prioqueueNamedestroy
Destroy the prioqueue, including its storage space and associated command.
prioqueueNameget ?count?
Return the front count items of the prioqueue (but not their priorities) and remove them from the
prioqueue. If count is not specified, it defaults to 1. If count is 1, the result is a simple
string; otherwise, it is a list. If specified, count must be greater than or equal to 1. If
there are no or too few items in the prioqueue, this command will throw an error.
prioqueueNamepeek ?count?
Return the front count items of the prioqueue (but not their priorities), without removing them
from the prioqueue. If count is not specified, it defaults to 1. If count is 1, the result is a
simple string; otherwise, it is a list. If specified, count must be greater than or equal to 1.
If there are no or too few items in the queue, this command will throw an error.
prioqueueNamepeekpriority ?count?
Return the front count items priority keys, without removing them from the prioqueue. If count is
not specified, it defaults to 1. If count is 1, the result is a simple string; otherwise, it is a
list. If specified, count must be greater than or equal to 1. If there are no or too few items
in the queue, this command will throw an error.
prioqueueNameputitemprio ?itemprio...?
Put the item or items specified into the prioqueue. prio must be a valid priority key for this
type of prioqueue, otherwise an error is thrown and no item is added. Items are inserted at their
priority ranking. Items with equal priority are added in the order they were added.
prioqueueNamesize
Return the number of items in the prioqueue.