Wycinki strumieni obiektów bez kopiowania

Gdy rozwiązanie linków po raz pierwszy materializuje skompresowanego członka /Type /ObjStm, parser czyta teraz zerokopijny widok wycinka nad współdzielonym zdekompresowanym buforem kontenera, zamiast zduplikowanego podłańcucha i drugiej kopii strumienia, więc duże dokumenty z wieloma członkami przestają płacić podwójną kopię na obiekt

THPDFObjectStreamSliceStream

Publiczny widok TStream tylko do odczytu nad trójką (źródło, offset, długość): trzyma źródłowy AnsiString przez referencję, więc bajty kontenera pozostają żywe bez ich duplikowania, serwuje dokładnie bajty członka, dokleja jeden wirtualny końcowy LF, żeby parsery obserwowały układ, jaki produkowała dawna kopia, oraz zaciska (clamp) zamiast podnosić wyjątek przy seekach przed początkiem wycinka, naśladując pobłażliwość TMemoryStream

THPDFObjectStreamCacheInfo

Dwie nowe diagnostyki raportują ścieżkę zerokopijną: SliceViewCount liczy widoki członków przekazane parserowi, a SliceViewBytes sumuje pokryte przez nie bajty członków, obok istniejących liczników kontenera, indeksowania, trafień, chybień i bajtów w cache zwracanych przez GetLoadedObjectStreamCacheInfo