logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

struct::prioqueue - Create and manipulate prioqueue objects

Bugs, Ideas, Feedback

       This  document,  and  the package it describes, will undoubtedly contain bugs and other problems.  Please
       report    such    in    the    category    struct::prioqueue    of    the     TcllibTrackers
       [http://core.tcl.tk/tcllib/reportlist].   Please  also report any ideas for enhancements you may have for
       either package and/or documentation.

       When proposing code changes, please provide unifieddiffs, i.e the output of diff-u.

       Note further that attachments are strongly preferred over inlined patches. Attachments  can  be  made  by
       going  to the Edit form of the ticket immediately after its creation, and then using the left-most button
       in the secondary navigation bar.

Category

       Data structures

Description

       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.

Keywords

       ordered list, prioqueue, priority queue

Name

       struct::prioqueue - Create and manipulate prioqueue objects

Synopsis

       package require Tcl8.59

       package require struct::prioqueue?1.5?::struct::prioqueue ?-ascii|-dictionary|-integer|-real? ?prioqueueName?

       prioqueueNameoption ?argarg...?

       prioqueueNameclearprioqueueNameremoveitemprioqueueNamedestroyprioqueueNameget ?count?

       prioqueueNamepeek ?count?

       prioqueueNamepeekpriority ?count?

       prioqueueNameputitemprio ?itemprio...?

       prioqueueNamesize

________________________________________________________________________________________________________________

See Also