[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |