diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
---|---|---|
committer | <> | 2013-04-03 16:25:08 +0000 |
commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/spl/internal/splqueue.inc | |
download | php2-master.tar.gz |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/spl/internal/splqueue.inc')
-rw-r--r-- | ext/spl/internal/splqueue.inc | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/ext/spl/internal/splqueue.inc b/ext/spl/internal/splqueue.inc new file mode 100644 index 0000000..368a259 --- /dev/null +++ b/ext/spl/internal/splqueue.inc @@ -0,0 +1,71 @@ +<?php + +/** @file splqueue.inc + * @ingroup SPL + * @brief class SplQueue + * @author Etienne Kneuss + * @date 2008 - 2009 + * + * SPL - Standard PHP Library + */ + +/** @ingroup SPL + * @brief Implementation of a Queue through a DoublyLinkedList. As SplQueue + * extends SplDoublyLinkedList, unshift() and pop() are still available + * even though they don't make much sense for a queue. For convenience, + * two aliases are available: + * - enqueue() is an alias of push() + * - dequeue() is an alias of shift() + * + * @since PHP 5.3 + * + * The SplQueue class provides the main functionalities of a + * queue implemented using a doubly linked list (DLL). + */ +class SplQueue extends SplDoublyLinkedList +{ + protected $_it_mode = parent::IT_MODE_FIFO; + + /** Changes the iteration mode. There are two orthogonal sets of modes that + * can be set: + * + * - The behavior of the iterator (either one or the other) + * - SplDoublyLnkedList::IT_MODE_DELETE (Elements are deleted by the iterator) + * - SplDoublyLnkedList::IT_MODE_KEEP (Elements are traversed by the iterator) + * + * The default mode is 0 : SplDoublyLnkedList::IT_MODE_LIFO | SplDoublyLnkedList::IT_MODE_KEEP + * + * @note The iteration's direction is not modifiable for queue instances + * @param $mode New mode of iteration + * @throw RuntimeException If the new mode affects the iteration's direction. + */ + public function setIteratorMode($mode) + { + if ($mode & parent::IT_MODE_LIFO === parent::IT_MODE_LIFO) { + throw new RuntimeException("Iterators' LIFO/FIFO modes for SplStack/SplQueue objects are frozen"); + } + + $this->_it_mode = $mode; + } + + /** @return the first element of the queue. + * @note dequeue is an alias of push() + * @see splDoublyLinkedList::push() + */ + public function dequeue() + { + return parent::shift(); + } + + /** Pushes an element at the end of the queue. + * @param $data variable to add to the queue. + * @note enqueue is an alias of shift() + * @see splDoublyLinkedList::shift() + */ + public function enqueue($data) + { + return parent::push($data); + } +} + +?> |