Subversion Repositories eFlore/Applications.cel

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2390 jpm 1
<?php
2
/**
3
 * PHPExcel
4
 *
5
 * Copyright (c) 2006 - 2013 PHPExcel
6
 *
7
 * This library is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU Lesser General Public
9
 * License as published by the Free Software Foundation; either
10
 * version 2.1 of the License, or (at your option) any later version.
11
 *
12
 * This library is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
 * Lesser General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Lesser General Public
18
 * License along with this library; if not, write to the Free Software
19
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20
 *
21
 * @category   PHPExcel
22
 * @package    PHPExcel_Calculation
23
 * @copyright  Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)
24
 * @license	http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt	LGPL
25
 * @version	##VERSION##, ##DATE##
26
 */
27
 
28
 
29
/**
30
 * PHPExcel_Calculation_Token_Stack
31
 *
32
 * @category	PHPExcel_Calculation_Token_Stack
33
 * @package		PHPExcel_Calculation
34
 * @copyright	Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)
35
 */
36
class PHPExcel_Calculation_Token_Stack {
37
 
38
	/**
39
	 *  The parser stack for formulae
40
	 *
41
	 *  @var mixed[]
42
	 */
43
	private $_stack = array();
44
 
45
	/**
46
	 *  Count of entries in the parser stack
47
	 *
48
	 *  @var integer
49
	 */
50
	private $_count = 0;
51
 
52
 
53
	/**
54
	 * Return the number of entries on the stack
55
	 *
56
	 * @return  integer
57
	 */
58
	public function count() {
59
		return $this->_count;
60
	}	//	function count()
61
 
62
	/**
63
	 * Push a new entry onto the stack
64
	 *
65
	 * @param  mixed  $type
66
	 * @param  mixed  $value
67
	 * @param  mixed  $reference
68
	 */
69
	public function push($type, $value, $reference = NULL) {
70
		$this->_stack[$this->_count++] = array('type'		=> $type,
71
											   'value'		=> $value,
72
											   'reference'	=> $reference
73
											  );
74
		if ($type == 'Function') {
75
			$localeFunction = PHPExcel_Calculation::_localeFunc($value);
76
			if ($localeFunction != $value) {
77
				$this->_stack[($this->_count - 1)]['localeValue'] = $localeFunction;
78
			}
79
		}
80
	}	//	function push()
81
 
82
	/**
83
	 * Pop the last entry from the stack
84
	 *
85
	 * @return  mixed
86
	 */
87
	public function pop() {
88
		if ($this->_count > 0) {
89
			return $this->_stack[--$this->_count];
90
		}
91
		return NULL;
92
	}	//	function pop()
93
 
94
	/**
95
	 * Return an entry from the stack without removing it
96
	 *
97
	 * @param   integer  $n  number indicating how far back in the stack we want to look
98
	 * @return  mixed
99
	 */
100
	public function last($n = 1) {
101
		if ($this->_count - $n < 0) {
102
			return NULL;
103
		}
104
		return $this->_stack[$this->_count - $n];
105
	}	//	function last()
106
 
107
	/**
108
	 * Clear the stack
109
	 */
110
	function clear() {
111
		$this->_stack = array();
112
		$this->_count = 0;
113
	}
114
 
115
}	//	class PHPExcel_Calculation_Token_Stack