PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.0.3
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.0.3
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
visualizer / vendor / phpoffice / phpexcel / Classes / PHPExcel / HashTable.php

HashTable.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.0.3, at vendor/phpoffice/phpexcel/Classes/PHPExcel/HashTable.php

203 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * PHPExcel
4 *
5 * Copyright (c) 2006 - 2014 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
23 * @copyright Copyright (c) 2006 - 2014 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_HashTable
31 *
32 * @category PHPExcel
33 * @package PHPExcel
34 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 */
36 class PHPExcel_HashTable
37 {
38 /**
39 * HashTable elements
40 *
41 * @var array
42 */
43 public $_items = array();
44
45 /**
46 * HashTable key map
47 *
48 * @var array
49 */
50 public $_keyMap = array();
51
52 /**
53 * Create a new PHPExcel_HashTable
54 *
55 * @param PHPExcel_IComparable[] $pSource Optional source array to create HashTable from
56 * @throws PHPExcel_Exception
57 */
58 public function __construct($pSource = null)
59 {
60 if ($pSource !== NULL) {
61 // Create HashTable
62 $this->addFromSource($pSource);
63 }
64 }
65
66 /**
67 * Add HashTable items from source
68 *
69 * @param PHPExcel_IComparable[] $pSource Source array to create HashTable from
70 * @throws PHPExcel_Exception
71 */
72 public function addFromSource($pSource = null) {
73 // Check if an array was passed
74 if ($pSource == null) {
75 return;
76 } else if (!is_array($pSource)) {
77 throw new PHPExcel_Exception('Invalid array parameter passed.');
78 }
79
80 foreach ($pSource as $item) {
81 $this->add($item);
82 }
83 }
84
85 /**
86 * Add HashTable item
87 *
88 * @param PHPExcel_IComparable $pSource Item to add
89 * @throws PHPExcel_Exception
90 */
91 public function add(PHPExcel_IComparable $pSource = null) {
92 $hash = $pSource->getHashCode();
93 if (!isset($this->_items[$hash])) {
94 $this->_items[$hash] = $pSource;
95 $this->_keyMap[count($this->_items) - 1] = $hash;
96 }
97 }
98
99 /**
100 * Remove HashTable item
101 *
102 * @param PHPExcel_IComparable $pSource Item to remove
103 * @throws PHPExcel_Exception
104 */
105 public function remove(PHPExcel_IComparable $pSource = null) {
106 $hash = $pSource->getHashCode();
107 if (isset($this->_items[$hash])) {
108 unset($this->_items[$hash]);
109
110 $deleteKey = -1;
111 foreach ($this->_keyMap as $key => $value) {
112 if ($deleteKey >= 0) {
113 $this->_keyMap[$key - 1] = $value;
114 }
115
116 if ($value == $hash) {
117 $deleteKey = $key;
118 }
119 }
120 unset($this->_keyMap[count($this->_keyMap) - 1]);
121 }
122 }
123
124 /**
125 * Clear HashTable
126 *
127 */
128 public function clear() {
129 $this->_items = array();
130 $this->_keyMap = array();
131 }
132
133 /**
134 * Count
135 *
136 * @return int
137 */
138 public function count() {
139 return count($this->_items);
140 }
141
142 /**
143 * Get index for hash code
144 *
145 * @param string $pHashCode
146 * @return int Index
147 */
148 public function getIndexForHashCode($pHashCode = '') {
149 return array_search($pHashCode, $this->_keyMap);
150 }
151
152 /**
153 * Get by index
154 *
155 * @param int $pIndex
156 * @return PHPExcel_IComparable
157 *
158 */
159 public function getByIndex($pIndex = 0) {
160 if (isset($this->_keyMap[$pIndex])) {
161 return $this->getByHashCode( $this->_keyMap[$pIndex] );
162 }
163
164 return null;
165 }
166
167 /**
168 * Get by hashcode
169 *
170 * @param string $pHashCode
171 * @return PHPExcel_IComparable
172 *
173 */
174 public function getByHashCode($pHashCode = '') {
175 if (isset($this->_items[$pHashCode])) {
176 return $this->_items[$pHashCode];
177 }
178
179 return null;
180 }
181
182 /**
183 * HashTable to array
184 *
185 * @return PHPExcel_IComparable[]
186 */
187 public function toArray() {
188 return $this->_items;
189 }
190
191 /**
192 * Implement PHP __clone to create a deep clone, not just a shallow copy.
193 */
194 public function __clone() {
195 $vars = get_object_vars($this);
196 foreach ($vars as $key => $value) {
197 if (is_object($value)) {
198 $this->$key = clone $value;
199 }
200 }
201 }
202 }
203