<?php
/**
* Queue class - under PHP 4
*
* @description This is an implementation of FIFO (First In First Out) queue.
*
* @copyright (c) 2003 Michal 'Seth' Golebiowski <sethmail at poczta dot fm>
* Released under the GNU General Public License
* license is attached to package in license.txt file
*
* @updated 10.08.2003
*
* @example example.php4 Simple example of puting ang geting datas from queue
*
* @requirement PHP 4
*
*
*
*
* @greetings goes to all developers from Poland especially from php.pl :-)
*/
/**
* Default size of queue
*/
define( 'QUEUE_DEFAULT_SIZE', 15 );
/**
* Implementation of FIFO queue
* @version 1.9
*/
class Queue
{
var
$arrQueue, // Array of queue items
$intBegin, // Begin of queue - head
$intEnd, // End of queue - tail
$intArraySize, // Size of array
$intCurrentSize; // Current size of array
/**
* Queue constructor
* @param int $intQueue - size of queue
*/
function Queue( $intSize = QUEUE_DEFAULT_SIZE )
{
$this->arrQueue = Array();
$this->intArraySize = $intSize;
$this->Clear();
}
/**
* Add item to queue
* @param obj &$objQueueItem - queue item object
* @return true if added to queue or false if queue is full and item could not be added
*/
function Put( &$objQueueItem )
{
if ( $this->intCurrentSize >= $this->intArraySize )
{
return false;
}
if ( $this->intEnd == $this->intArraySize - 1 )
{
$this->intEnd = 0;
}
else
{
$this->intEnd++;
}
$this->arrQueue[ $this->intEnd ] = $objQueueItem;
$this->intCurrentSize++;
return true;
}
/**
* Get item from queue
* @return object (queue iteme) or false if there is now items in queue
*/
function Get()
{
if ( $this->IsEmpty() ){
return false;
}
$objItem = $this->arrQueue[$this->intBegin];
if ( $this->intBegin == $this->intArraySize - 1 )
{
$this->intBegin = 0;
}
else
{
$this->intBegin++;
}
$this->intCurrentSize--;
return $objItem;
}
/**
* Check if queue is empty
* @return true if it is empty or false if not
*/
function IsEmpty()
{
return ( $this->intCurrentSize == 0 ? true : false );
}
/**
* Clear queue
*/
function Clear()
{
$this->arrCurrentSize = 0;
$this->intBegin = 0;
$this->intEnd = $this->intArraySize - 1;
}
}
?>
|