Tarpplatforminė C bibliotekos integracija

Apžvalga

HotPDF naudoja HPDFCLibs.pas kaip Pascal pusės tiltą tarp Delphi ir statically linked C object files, kuriuos naudoja HPDFZLib.pas, HPDFJpeg.pas ir HPDFTiff.pas. Modulis atskleidžia vykdymo laiko simbolius, kurių šios bibliotekos tikisi, kartu išlaikydamas vieną nuoseklų Pascal deklaracijų sluoksnį tiek Win32, tiek Win64 versijoms

Pagrindinės savybės

  • Bendras vykdymo laiko tiltas zlib-ng zlib suderinamu režimu, zlib-ng 64 bitų vykdymo laiko SIMD paskirstymas, libjpeg-turbo 3.1.90 su NASM SIMD objektais ir libtiff 4.7.1
  • Atminties, stdio, eilučių / simbolių ir pasirinktų matematikos / vykdymo laiko pagalbinių funkcijų aprėptis
  • 32 baitais lygiuotas malloc, free, realloc ir calloc tiltas SIMD draugiškiems vietiniams buferiams
  • Win32 suderinamumas su bcc32c sukompiliuotais zlib-ng OMF objektais ir bcc32 sukompiliuotais JPEG / TIFF OMF objektais iš Lib\thirdparty\Win32
  • Win64 suderinamumas su COFF64 obj failais iš Lib\thirdparty\Win64 ir zlib-ng COFF objektais iš Lib\thirdparty\Win64x
  • Rodyklės dydžio pagalbiniai tipai ir Pascal stubai simboliams, kurių Delphi linker negali importuoti tiesiogiai

High-Performance JPEG Backend

Standartiniai JPEG srautai remiasi libjpeg-turbo 3.1.90 per klasikinį su libjpeg suderinamą API, pateikiamą HPDFJpeg.pas. Win32, Win64 ir Win64x objektų buildai apima atitinkamus NASM SIMD spartinimo objektus, o tas pats komplektuojamas objektų rinkinys taip pat prieinamas TIFF integracijos sluoksniui JPEG suspaustiems TIFF apdorojimams

Zlib-ng tilto pastabos

Win64 Flate vaizdo srautai naudoja mažą C tiltą aplink vienkartinį zlib-ng suspaudimą. Tiltas C viduje išlaiko gimtuosius zlib-ng ilgio tipus, kartu išsaugodamas HotPDF Pascal pusei matomus 32 bitų buferio ilgius ir maksimalaus suspaudimo elgseną

Win64x ir diagnostiniai MSVC Win64 zlib-ng objektų buildai apima vykdymo metu parenkamas SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ ir AVX2 įgyvendinimo versijas su bendrinėmis atsarginėmis. Win32 palieka bendrinius zlib-ng OMF objektus, kad išliktų suderinamas su bcc32c OMF įrankių grandine, o Win32 JPEG/TIFF kelias lieka su klasikiniais bcc32 OMF objektais

Palaikomos funkcijų grupės

  • Atminties valdymas: malloc, free, realloc, calloc su 32 baitų lygiavimo alokacija
  • Failų ir srautų operacijos: fopen, fclose, fputc, fread, fwrite, fflush, ferror
  • Eilučių ir simbolių funkcijos: strcpy, sprintf, memcpy, memmove, memset, tolower, toupper, towlower, towupper, getenv, atoi
  • Vykdymo laiko pagalbinės funkcijos: ftol, setjmp, log, snprintf, memcmp

Architektūros palaikymas

  • Win32: Pascal apgaubtys ir WinAPI pagrįsti pagalbiniai moduliai, atitinkantys bcc32c ir bcc32 OMF objektus, sujungiamus kiekvienos palaikomos Delphi Win32 versijos
  • Win64: msvcrt.dll įkėlimai kartu su mažais pagalbiniais stubais, kurių reikia MSVC sugeneruotiems COFF64 objektams
  • Bendrieji tipai: PtrInt ir PtrUInt išlaiko rodyklės dydžio deklaracijas suderintas abiejose tikslinėse platformose

Taip pat žr.