/*!
* @class PriorityType
*
* @headerfile <seqan/misc/priority_type_base.h>
*
* @brief STores items in such a way that the item with the highest priority is
* at the top.
*
* @signature template <[typename TValue[, typename TLess[, typename TSpec]]]>
* class PriorityType;
*
* @tparam TValue The value type. Default: <tt>int</tt>.
* @tparam TLess The less-than comparator. Default:
* <tt>std::less<TValue></tt>.
* @tparam TSpec The specialization. Default: <tt>PriorityHeap</tt>.
*
* @fn PriorityType#clear
*
* @brief Remove all elements from the PriorityType.
*
* @signature void clear(pq);
*
* @param[in,out] pq PriorityType to clear.
*
* @fn PriorityType#empty
*
* @headerfile <seqan/misc/priority_type_heap.h>
*
* @brief Query priority queue for beging empty.
*
* @signature bool empty(pq);
*
* @param[in] pq The @link PriorityType @endlink to query.
*
* @return bool <tt>true</tt> if <tt>pq</tt> queue is empty.
*
* @fn PriorityType#length
*
* @headerfile <seqan/misc/priority_type_heap.h>
*
* @brief Return number of elements in priority queue.
*
* @signature TSize length(pq);
*
* @param[in] pq The PriorityType to query.
*
* @return TSize Number of elements in priority queue.
*
* @fn PriorityType#top
*
* @brief Reference to the item with the highest priority.
*
* @signature TReference top(pq);
*
* @param[in] pq The PriorityType to query.
*
* @return TReference The result, reference to Value type.
*
* @fn PriorityType#adjustTop
*
* @brief Adjusts the priority of the first item.
*
* @signature void adjustTop(pq);
*
* @param[in,out] pq The PriorityType to adjust.
*
* @fn PriorityType#push
*
* @brief Inserts a new item and adjusts the priority queue if necessary.
*
* @signature void push(pq, element);
*
* @param[in,out] pq The PriorityType to push to.
* @param[in] element The element to push.
*
* @fn PriorityType#pop
*
* @brief Deletes item with the highest priority and adjusts the priority queue.
*
* @signature void push(pq);
*
* @param[in,out] pq The PriorityType to pop from.
*/