<?php
//
// +------------------------------------------------------------------------+
// | phpDocumentor                                                          |
// +------------------------------------------------------------------------+
// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver                 |
// | Email         jeichorn@phpdoc.org, cellog@phpdoc.org                   |
// | Web           http://www.phpdoc.org                                    |
// | Mirror        http://phpdocu.sourceforge.net/                          |
// | PEAR          http://pear.php.net/package-info.php?pacid=137           |
// +------------------------------------------------------------------------+
// | This source file is subject to version 3.00 of the PHP License,        |
// | that is available at http://www.php.net/license/3_0.txt.               |
// | If you did not receive a copy of the PHP license and are unable to     |
// | obtain it through the world-wide-web, please send a note to            |
// | license@php.net so we can mail you a copy immediately.                 |
// +------------------------------------------------------------------------+
//

/**
 * An event Stack
 * 
 * @author    Joshua Eichorn <jeichorn@phpdoc.org>
 * @version    $Id: EventStack.inc,v 1.1 2005/10/17 18:36:55 jeichorn Exp $
 * @package     phpDocumentor
 */
/**
 * An event Stack
 * 
 * @author    Joshua Eichorn <jeichorn@phpdoc.org>
 * @version    $Id: EventStack.inc,v 1.1 2005/10/17 18:36:55 jeichorn Exp $
 * @package     phpDocumentor
 */
class EventStack
{
    /**
     * The stack
     * @var array
     */
    var $stack = array(PARSER_EVENT_NOEVENTS);

    /**
     * The number of events in the stack
     * @var integer
     */
    var $num = 0;

    /**
     * Push an event onto the stack
     *
     * @param    int    $event    All events must be constants
     */
    function pushEvent($event)
    {
        $this->num = array_push($this->stack,$event) - 1;
    }

    /**
     * Pop an event from the stack
     *
     * @return    int    An event
     */
    function popEvent()
    {
        $this->num--;
        return array_pop($this->stack);
    }

    /**
     * Get the current event
     *
     * @return    int    An event
     */
    function getEvent()
    {
        return $this->stack[$this->num];
    }
}