Annotation of embedaddon/php/ext/spl/internal/splqueue.inc, revision 1.1
1.1 ! misho 1: <?php
! 2:
! 3: /** @file splqueue.inc
! 4: * @ingroup SPL
! 5: * @brief class SplQueue
! 6: * @author Etienne Kneuss
! 7: * @date 2008 - 2009
! 8: *
! 9: * SPL - Standard PHP Library
! 10: */
! 11:
! 12: /** @ingroup SPL
! 13: * @brief Implementation of a Queue through a DoublyLinkedList. As SplQueue
! 14: * extends SplDoublyLinkedList, unshift() and pop() are still available
! 15: * even though they don't make much sense for a queue. For convenience,
! 16: * two aliases are available:
! 17: * - enqueue() is an alias of push()
! 18: * - dequeue() is an alias of shift()
! 19: *
! 20: * @since PHP 5.3
! 21: *
! 22: * The SplQueue class provides the main functionalities of a
! 23: * queue implemented using a doubly linked list (DLL).
! 24: */
! 25: class SplQueue extends SplDoublyLinkedList
! 26: {
! 27: protected $_it_mode = parent::IT_MODE_FIFO;
! 28:
! 29: /** Changes the iteration mode. There are two orthogonal sets of modes that
! 30: * can be set:
! 31: *
! 32: * - The behavior of the iterator (either one or the other)
! 33: * - SplDoublyLnkedList::IT_MODE_DELETE (Elements are deleted by the iterator)
! 34: * - SplDoublyLnkedList::IT_MODE_KEEP (Elements are traversed by the iterator)
! 35: *
! 36: * The default mode is 0 : SplDoublyLnkedList::IT_MODE_LIFO | SplDoublyLnkedList::IT_MODE_KEEP
! 37: *
! 38: * @note The iteration's direction is not modifiable for queue instances
! 39: * @param $mode New mode of iteration
! 40: * @throw RuntimeException If the new mode affects the iteration's direction.
! 41: */
! 42: public function setIteratorMode($mode)
! 43: {
! 44: if ($mode & parent::IT_MODE_LIFO === parent::IT_MODE_LIFO) {
! 45: throw new RuntimeException("Iterators' LIFO/FIFO modes for SplStack/SplQueue objects are frozen");
! 46: }
! 47:
! 48: $this->_it_mode = $mode;
! 49: }
! 50:
! 51: /** @return the first element of the queue.
! 52: * @note dequeue is an alias of push()
! 53: * @see splDoublyLinkedList::push()
! 54: */
! 55: public function dequeue()
! 56: {
! 57: return parent::shift();
! 58: }
! 59:
! 60: /** Pushes an element at the end of the queue.
! 61: * @param $data variable to add to the queue.
! 62: * @note enqueue is an alias of shift()
! 63: * @see splDoublyLinkedList::shift()
! 64: */
! 65: public function enqueue($data)
! 66: {
! 67: return parent::push($data);
! 68: }
! 69: }
! 70:
! 71: ?>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>