original_string: public function seek($offset)
      {
          if ($offset < 0 || $offset > $this->file->length) {
              throw new InvalidArgumentException(sprintf('$offset must be >= 0 and <= %d; given: %d', $this->file->length, $offset));
          }
  
          /* Compute the offsets for the chunk and buffer (i.e. chunk data) from
           * which we will expect to read after seeking. If the chunk offset
           * changed, we'll also need to reset the buffer.
           */
          $lastChunkOffset = $this->chunkOffset;
          $this->chunkOffset = (integer) floor($offset / $this->chunkSize);
          $this->bufferOffset = $offset % $this->chunkSize;
  
          if ($lastChunkOffset === $this->chunkOffset) {
              return;
          }
  
          if ($this->chunksIterator === null) {
              return;
          }
  
          // Clear the buffer since the current chunk will be changed
          $this->buffer = null;
  
          /* If we are seeking to a previous chunk, we need to reinitialize the
           * chunk iterator.
           */
          if ($lastChunkOffset > $this->chunkOffset) {
              $this->chunksIterator = null;
              return;
          }
  
          /* If we are seeking to a subsequent chunk, we do not need to
           * reinitalize the chunk iterator. Instead, we can simply move forward
           * to $this->chunkOffset.
           */
          $numChunks = $this->chunkOffset - $lastChunkOffset;
          for ($i = 0; $i < $numChunks; $i++) {
              $this->chunksIterator->next();
          }
      }
code: public function seek($offset)
      {
          if ($offset < 0 || $offset > $this->file->length) {
              throw new InvalidArgumentException(sprintf('$offset must be >= 0 and <= %d; given: %d', $this->file->length, $offset));
          }
  
          /* Compute the offsets for the chunk and buffer (i.e. chunk data) from
           * which we will expect to read after seeking. If the chunk offset
           * changed, we'll also need to reset the buffer.
           */
          $lastChunkOffset = $this->chunkOffset;
          $this->chunkOffset = (integer) floor($offset / $this->chunkSize);
          $this->bufferOffset = $offset % $this->chunkSize;
  
          if ($lastChunkOffset === $this->chunkOffset) {
              return;
          }
  
          if ($this->chunksIterator === null) {
              return;
          }
  
          // Clear the buffer since the current chunk will be changed
          $this->buffer = null;
  
          /* If we are seeking to a previous chunk, we need to reinitialize the
           * chunk iterator.
           */
          if ($lastChunkOffset > $this->chunkOffset) {
              $this->chunksIterator = null;
              return;
          }
  
          /* If we are seeking to a subsequent chunk, we do not need to
           * reinitalize the chunk iterator. Instead, we can simply move forward
           * to $this->chunkOffset.
           */
          $numChunks = $this->chunkOffset - $lastChunkOffset;
          for ($i = 0; $i < $numChunks; $i++) {
              $this->chunksIterator->next();
          }
      }
code_tokens: public function seek ( $ offset ) { if ( $ offset < 0 || $ offset > $ this -> file -> length ) { throw new InvalidArgumentException ( sprintf ( '$offset must be >= 0 and <= %d; given: %d' , $ this -> file -> length , $ offset ) ) ; } /* Compute the offsets for the chunk and buffer (i.e. chunk data) from
           * which we will expect to read after seeking. If the chunk offset
           * changed, we'll also need to reset the buffer.
           */ $ lastChunkOffset = $ this -> chunkOffset ; $ this -> chunkOffset = ( integer ) floor ( $ offset / $ this -> chunkSize ) ; $ this -> bufferOffset = $ offset % $ this -> chunkSize ; if ( $ lastChunkOffset === $ this -> chunkOffset ) { return ; } if ( $ this -> chunksIterator === null ) { return ; } // Clear the buffer since the current chunk will be changed $ this -> buffer = null ; /* If we are seeking to a previous chunk, we need to reinitialize the
           * chunk iterator.
           */ if ( $ lastChunkOffset > $ this -> chunkOffset ) { $ this -> chunksIterator = null ; return ; } /* If we are seeking to a subsequent chunk, we do not need to
           * reinitalize the chunk iterator. Instead, we can simply move forward
           * to $this->chunkOffset.
           */ $ numChunks = $ this -> chunkOffset - $ lastChunkOffset ; for ( $ i = 0 ; $ i < $ numChunks ; $ i ++ ) { $ this -> chunksIterator -> next ( ) ; } }
docstring: Seeks the chunk and buffer offsets for the next read operation.
  
  @param integer $offset
  @throws InvalidArgumentException if $offset is out of range
docstring_tokens: Seeks the chunk and buffer offsets for the next read operation .