示例#1
0
 public function pop()
 {
     if (empty($this->_elements)) {
         throw new NoSuchElementException('Stack is empty');
     }
     $element = array_shift($this->_elements);
     $h = Objects::hashOf($element);
     $this->_hash += HashProvider::hashOf($h);
     return $element;
 }
示例#2
0
 public function remove($element)
 {
     if (-1 == ($pos = $this->search($element))) {
         return false;
     }
     $element = $this->_elements[$pos];
     $h = Objects::hashOf($element);
     $this->_hash -= HashProvider::hashOf($h);
     unset($this->_elements[$pos]);
     $this->_elements = array_values($this->_elements);
     // Re-index
     return true;
 }
 public function hashof_uses_implementations_hashof()
 {
     $this->assertEquals($this->fixture->getImplementation()->hashOf('Test'), HashProvider::hashOf('Test'));
 }
示例#4
0
 /**
  * Returns a hashcode for this pair
  *
  * @return string
  */
 public function hashCode()
 {
     return HashProvider::hashOf(Objects::hashOf($this->key)) + HashProvider::hashOf(Objects::hashOf($this->value));
 }
 public function addAll($elements)
 {
     $changed = false;
     foreach ($elements as $element) {
         $h = Objects::hashOf($element);
         if (isset($this->_elements[$h])) {
             continue;
         }
         $this->_hash += HashProvider::hashOf($h);
         $this->_elements[$h] = $element;
         $changed = true;
     }
     return $changed;
 }
 public function remove($key)
 {
     $h = Objects::hashOf($key);
     if (!isset($this->_buckets[$h])) {
         $prev = null;
     } else {
         $prev = $this->_buckets[$h][1];
         $this->_hash -= HashProvider::hashOf($h . Objects::hashOf($prev));
         unset($this->_buckets[$h]);
     }
     return $prev;
 }