1<?php declare(strict_types=1); 2 3namespace PrinsFrank\PdfParser\Stream; 4 5use PrinsFrank\PdfParser\Document\CMap\ToUnicode\ToUnicodeCMapOperator; 6use PrinsFrank\PdfParser\Document\Generic\Character\DelimiterCharacter; 7use PrinsFrank\PdfParser\Document\Generic\Character\WhitespaceCharacter; 8use PrinsFrank\PdfParser\Document\Generic\Marker; 9 10interface Stream { 11 public function getSizeInBytes(): int; 12 13 /** @phpstan-assert int<1, max> $nrOfBytes */ 14 public function read(int $from, int $nrOfBytes): string; 15 16 public function toString(): string; 17 18 /** 19 * @phpstan-assert int<0, max> $startByteOffset 20 * @phpstan-assert int<0, max> $endByteOffset 21 */ 22 public function slice(int $startByteOffset, int $endByteOffset): string; 23 24 /** 25 * @phpstan-assert int<0, max> $from 26 * @phpstan-assert int<1, max> $nrOfBytes 27 * 28 * @return iterable<int, string> 29 */ 30 public function chars(int $from, int $nrOfBytes): iterable; 31 32 public function firstPos(WhitespaceCharacter|Marker|DelimiterCharacter|ToUnicodeCMapOperator $needle, int $offsetFromStart, int $before): ?int; 33 34 public function lastPos(WhitespaceCharacter|Marker|DelimiterCharacter|ToUnicodeCMapOperator $needle, int $offsetFromEnd): ?int; 35 36 public function getStartNextLineAfter(WhitespaceCharacter|Marker|DelimiterCharacter|ToUnicodeCMapOperator $needle, int $offsetFromStart, int $before): ?int; 37 38 public function getStartOfNextLine(int $byteOffset, int $before): ?int; 39 40 public function getEndOfCurrentLine(int $byteOffset, int $before): ?int; 41} 42