Corpus-minimalisatiefuncties
function HPDFMinimizeCorpusCase(const Input: TBytes;
const Predicate: THPDFFailurePredicate; MaximumAttempts: Integer;
out AInfo: THPDFCorpusMinimizationInfo): TBytes;
De reducer verwijdert eerst volledige indirecte-object-reeksen en past daarna steeds kleinere bytebereik-reducties toe
Een kandidaat wordt alleen geaccepteerd wanneer het predicaat nog steeds de oorspronkelijke faalhandtekening meldt
AInfo meldt pogingen, geaccepteerde reducties, verwijderde objectreeksen, verwijderde bytebereiken, oorspronkelijke en uiteindelijke groottes en de behouden handtekening
Continue corpusopslag
function HPDFDefaultCorpusStoreOptions: THPDFCorpusStoreOptions;
function HPDFMinimizeAndStoreCorpusCase(const Input: TBytes;
const Predicate: THPDFFailurePredicate;
const CorpusDirectory: string;
const Options: THPDFCorpusStoreOptions;
out AInfo: THPDFCorpusCaseInfo): Boolean;
function HPDFCorpusCaseInfoToJSON(
const AInfo: THPDFCorpusCaseInfo): AnsiString;
type
THPDFCorpusStoreAction = (csaAdded, csaReplaced, csaKeptExisting);
THPDFCorpusStoreOptions = record
MaximumAttempts: Integer;
MaximumInputBytes: Int64;
MaximumStoredBytes: Int64;
LockRetryCount: Integer;
end;
De opslag leidt een stabiele case-ID af van de SHA-256-digest van de faalhandtekening, valideert elk bestaand geval opnieuw, minimaliseert zowel het bestaande als het binnenkomende geval en behoudt het kleinste resultaat
Een procesoverschrijdende vergrendeling serialiseert beslissingen voor één corpusmap, terwijl write-through-tijdelijke bestanden en atomair vervangen voorkomen dat lezers gedeeltelijke PDF- of metadatabestanden observeren
THPDFCorpusStoreOptions begrenst minimalisatiepogingen, binnenkomende bytes, opgeslagen bytes en vergrendelingspogingen, en THPDFCorpusCaseInfo.Action meldt of het geval is toegevoegd, vervangen of behouden
Het zijliggend schema hotpdf.corpus.case.v1 registreert de case-ID, de exacte faalhandtekening, de inhoud-SHA-256 en het aantal opgeslagen bytes in stabiele veldvolgorde
HPDFCompareRegressionResultsDeterministic vergelijkt herhaalde kruisengine-handtekeningen over parse-, render-, tekst- en opslagdomeinen en wijst instabiele of mislukte runs af