ZLibDelphi.pas 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. unit ZLibDelphi;
  2. {$IFDEF FPC}
  3. {$MODE OBJFPC}
  4. {$ELSE}
  5. {$DEFINE DCC}
  6. {$IFDEF CPUX64}
  7. {$MESSAGE FATAL 'Not supported' }
  8. {$ENDIF}
  9. {$ENDIF}
  10. interface
  11. uses
  12. SysUtils;
  13. const
  14. ZLIB_VERSION = '1.2.1';
  15. Z_NO_FLUSH = 0;
  16. Z_FINISH = 4;
  17. Z_OK = 0;
  18. Z_STREAM_END = 1;
  19. type
  20. PRZStream = ^RZStream;
  21. RZStream = record
  22. NextIn: PByte;
  23. AvailIn: Cardinal;
  24. TotalIn: Cardinal;
  25. NextOut: PByte;
  26. AvailOut: Cardinal;
  27. TotalOut: Cardinal;
  28. Msg: PAnsiChar;
  29. State: Pointer;
  30. AllocFunc: Pointer;
  31. FreeFunc: Pointer;
  32. Opaque: Cardinal;
  33. DataType: Integer;
  34. Adler: Cardinal;
  35. Reserved: Cardinal;
  36. end;
  37. function inflateInit_(strm: Pointer; version: Pointer; stream_size: Integer): Integer; cdecl; external;
  38. function inflateReset(strm: Pointer): Integer; cdecl; external;
  39. function inflate(strm: Pointer; flush: Integer): Integer; cdecl; external;
  40. function inflateSync(strm: Pointer): Integer; cdecl; external;
  41. function deflateInit(strm: Pointer; level: Integer): Integer;
  42. function deflateInit_(strm: Pointer; level: Integer; version: Pointer; stream_size: Integer): Integer; cdecl; external;
  43. function deflateReset(strm: Pointer): Integer; cdecl; external;
  44. function deflate(strm: Pointer; flush: Integer): Integer; cdecl; external;
  45. function deflateEnd(strm: Pointer): Integer; cdecl; external;
  46. function inflateEnd(strm: Pointer): Integer; cdecl; external;
  47. function deflateParams(strm: Pointer; level: Integer; strategy: Integer): Integer; cdecl; external;
  48. implementation
  49. uses
  50. LibDelphi;
  51. function deflateInit(strm: Pointer; level: Integer): Integer;
  52. begin
  53. Result:=deflateInit_(strm,level,PAnsiChar(ZLIB_VERSION),SizeOf(RZStream));
  54. end;
  55. {$IF Defined(DCC) and Defined(MSWINDOWS) and not Defined(CPUX64)}
  56. // Windows 32bit Delphi only - OMF object format
  57. {$L Compiled\inflate.obj}
  58. {$L Compiled\crc32.obj}
  59. {$L Compiled\adler32.obj}
  60. {$L Compiled\inftrees.obj}
  61. {$L Compiled\inffast.obj}
  62. {$L Compiled\deflate.obj}
  63. {$L Compiled\zutil.obj}
  64. {$L Compiled\trees.obj}
  65. {$L Compiled\compress.obj}
  66. {$L Compiled\uncompr.obj}
  67. {$IFEND}
  68. end.