Exemple #1
0
 /**
  * @param mixed      $v0 - left value
  * @param mixed      $v1 - right value
  * @param mixed|null $k0 - left key
  * @param mixed|null $k1 - right key
  * @return int
  */
 public function compare($v0, $v1, $k0 = null, $k1 = null)
 {
     $lhs = $this->primary->compare($v0, $v1, $k0, $k1);
     if ($lhs === 0) {
         return $this->secondary->compare($v0, $v1, $k0, $k1);
     } else {
         return $lhs;
     }
 }
Exemple #2
0
 /**
  * @param mixed      $v0 - left value
  * @param mixed      $v1 - right value
  * @param mixed|null $k0 - left key
  * @param mixed|null $k1 - right key
  * @return int
  */
 public function compare($v0, $v1, $k0 = null, $k1 = null)
 {
     return $this->comparer->compare($this->compareKeySelector->select($v0, $k0), $this->compareKeySelector->select($v1, $k1), $k0, $k1);
 }
Exemple #3
0
 /**
  * @param callable|array $comparer (v1, v2, k1?, k2?) -> int
  * @return OrderingGinq
  */
 public function orderWithDesc($comparer = null)
 {
     $comparer = ComparerResolver::resolve($comparer, Comparer::getDefault());
     $comparer = new ReverseComparer($comparer);
     return new OrderingGinq($this->getIterator(), $comparer);
 }
Exemple #4
0
 /**
  * @param callable|array $comparer (v1, v2, k1?, k2?) -> int
  * @return OrderingGinq
  */
 public function thenWithDesc($comparer)
 {
     $comparer = ComparerResolver::resolve($comparer, Comparer::getDefault());
     $comparer = new ReverseComparer($comparer);
     $comparer = new CompoundComparer($this->comparer, $comparer);
     return new OrderingGinq($this->it, $comparer);
 }
Exemple #5
0
 /**
  * @param mixed      $v0 - left value
  * @param mixed      $v1 - right value
  * @param mixed|null $k0 - left key
  * @param mixed|null $k1 - right key
  * @return int
  */
 public function compare($v0, $v1, $k0 = null, $k1 = null)
 {
     // flip
     return $this->comparer->compare($v1, $v0, $k1, $k0);
 }