function DiffEngine::_lcs_pos

Same name in other branches
  1. 9 core/lib/Drupal/Component/Diff/Engine/DiffEngine.php \Drupal\Component\Diff\Engine\DiffEngine::_lcs_pos()
  2. 8.9.x core/lib/Drupal/Component/Diff/Engine/DiffEngine.php \Drupal\Component\Diff\Engine\DiffEngine::_lcs_pos()
1 call to DiffEngine::_lcs_pos()
DiffEngine::_diag in core/lib/Drupal/Component/Diff/Engine/DiffEngine.php
Divide the Largest Common Subsequence (LCS) of the sequences [XOFF, XLIM) and [YOFF, YLIM) into NCHUNKS approximately equally sized segments.

File

core/lib/Drupal/Component/Diff/Engine/DiffEngine.php, line 253

Class

DiffEngine
Class used internally by Diff to actually compute the diffs.

Namespace

Drupal\Component\Diff\Engine

Code

protected function _lcs_pos($ypos) {
    $end = $this->lcs;
    if ($end == 0 || $ypos > $this->seq[$end]) {
        $this->seq[++$this->lcs] = $ypos;
        $this->in_seq[$ypos] = 1;
        return $this->lcs;
    }
    $beg = 1;
    while ($beg < $end) {
        $mid = (int) (($beg + $end) / 2);
        if ($ypos > $this->seq[$mid]) {
            $beg = $mid + 1;
        }
        else {
            $end = $mid;
        }
    }
    $this::USE_ASSERTS && assert($ypos != $this->seq[$end]);
    $this->in_seq[$this->seq[$end]] = FALSE;
    $this->seq[$end] = $ypos;
    $this->in_seq[$ypos] = 1;
    return $end;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.