Home | History | Annotate | Download | only in as400
      1       *  ZLIB.INC - Interface to the general purpose compression library
      2       *
      3       *  ILE RPG400 version by Patrick Monnerat, DATASPHERE.
      4       *  Version 1.2.3.9
      5       *
      6       *
      7       *  WARNING:
      8       *     Procedures inflateInit(), inflateInit2(), deflateInit(),
      9       *         deflateInit2() and inflateBackInit() need to be called with
     10       *         two additional arguments:
     11       *         the package version string and the stream control structure.
     12       *         size. This is needed because RPG lacks some macro feature.
     13       *         Call these procedures as:
     14       *             inflateInit(...: ZLIB_VERSION: %size(z_stream))
     15       *
     16       /if not defined(ZLIB_H_)
     17       /define ZLIB_H_
     18       *
     19       **************************************************************************
     20       *                               Constants
     21       **************************************************************************
     22       *
     23       *  Versioning information.
     24       *
     25      D ZLIB_VERSION    C                   '1.2.3.9'
     26      D ZLIB_VERNUM     C                   X'1239'
     27       *
     28       *  Other equates.
     29       *
     30      D Z_NO_FLUSH      C                   0
     31      D Z_SYNC_FLUSH    C                   2
     32      D Z_FULL_FLUSH    C                   3
     33      D Z_FINISH        C                   4
     34      D Z_BLOCK         C                   5
     35       *
     36      D Z_OK            C                   0
     37      D Z_STREAM_END    C                   1
     38      D Z_NEED_DICT     C                   2
     39      D Z_ERRNO         C                   -1
     40      D Z_STREAM_ERROR  C                   -2
     41      D Z_DATA_ERROR    C                   -3
     42      D Z_MEM_ERROR     C                   -4
     43      D Z_BUF_ERROR     C                   -5
     44      DZ_VERSION_ERROR  C                   -6
     45       *
     46      D Z_NO_COMPRESSION...
     47      D                 C                   0
     48      D Z_BEST_SPEED    C                   1
     49      D Z_BEST_COMPRESSION...
     50      D                 C                   9
     51      D Z_DEFAULT_COMPRESSION...
     52      D                 C                   -1
     53       *
     54      D Z_FILTERED      C                   1
     55      D Z_HUFFMAN_ONLY  C                   2
     56      D Z_RLE           C                   3
     57      D Z_DEFAULT_STRATEGY...
     58      D                 C                   0
     59       *
     60      D Z_BINARY        C                   0
     61      D Z_ASCII         C                   1
     62      D Z_UNKNOWN       C                   2
     63       *
     64      D Z_DEFLATED      C                   8
     65       *
     66      D Z_NULL          C                   0
     67       *
     68       **************************************************************************
     69       *                                 Types
     70       **************************************************************************
     71       *
     72      D z_streamp       S               *                                        Stream struct ptr
     73      D gzFile          S               *                                        File pointer
     74      D z_off_t         S             10i 0                                      Stream offsets
     75       *
     76       **************************************************************************
     77       *                               Structures
     78       **************************************************************************
     79       *
     80       *  The GZIP encode/decode stream support structure.
     81       *
     82      D z_stream        DS                  align based(z_streamp)
     83      D  zs_next_in                     *                                        Next input byte
     84      D  zs_avail_in                  10U 0                                      Byte cnt at next_in
     85      D  zs_total_in                  10U 0                                      Total bytes read
     86      D  zs_next_out                    *                                        Output buffer ptr
     87      D  zs_avail_out                 10U 0                                      Room left @ next_out
     88      D  zs_total_out                 10U 0                                      Total bytes written
     89      D  zs_msg                         *                                        Last errmsg or null
     90      D  zs_state                       *                                        Internal state
     91      D  zs_zalloc                      *   procptr                              Int. state allocator
     92      D  zs_free                        *   procptr                              Int. state dealloc.
     93      D  zs_opaque                      *                                        Private alloc. data
     94      D  zs_data_type                 10i 0                                      ASC/BIN best guess
     95      D  zs_adler                     10u 0                                      Uncompr. adler32 val
     96      D                               10U 0                                      Reserved
     97      D                               10U 0                                      Ptr. alignment
     98       *
     99       **************************************************************************
    100       *                     Utility function prototypes
    101       **************************************************************************
    102       *
    103      D compress        PR            10I 0 extproc('compress')
    104      D  dest                      32767    options(*varsize)                    Destination buffer
    105      D  destLen                      10U 0                                      Destination length
    106      D  source                    32767    const options(*varsize)              Source buffer
    107      D  sourceLen                    10u 0 value                                Source length
    108       *
    109      D compress2       PR            10I 0 extproc('compress2')
    110      D  dest                      32767    options(*varsize)                    Destination buffer
    111      D  destLen                      10U 0                                      Destination length
    112      D  source                    32767    const options(*varsize)              Source buffer
    113      D  sourceLen                    10U 0 value                                Source length
    114      D  level                        10I 0 value                                Compression level
    115       *
    116      D compressBound   PR            10U 0 extproc('compressBound')
    117      D  sourceLen                    10U 0 value
    118       *
    119      D uncompress      PR            10I 0 extproc('uncompress')
    120      D  dest                      32767    options(*varsize)                    Destination buffer
    121      D  destLen                      10U 0                                      Destination length
    122      D  source                    32767    const options(*varsize)              Source buffer
    123      D  sourceLen                    10U 0 value                                Source length
    124       *
    125      D gzopen          PR                  extproc('gzopen')
    126      D                                     like(gzFile)
    127      D  path                           *   value options(*string)               File pathname
    128      D  mode                           *   value options(*string)               Open mode
    129       *
    130      D gzdopen         PR                  extproc('gzdopen')
    131      D                                     like(gzFile)
    132      D  fd                           10i 0 value                                File descriptor
    133      D  mode                           *   value options(*string)               Open mode
    134       *
    135      D gzsetparams     PR            10I 0 extproc('gzsetparams')
    136      D  file                               value like(gzFile)                   File pointer
    137      D  level                        10I 0 value
    138      D  strategy                     10i 0 value
    139       *
    140      D gzread          PR            10I 0 extproc('gzread')
    141      D  file                               value like(gzFile)                   File pointer
    142      D  buf                       32767    options(*varsize)                    Buffer
    143      D  len                          10u 0 value                                Buffer length
    144       *
    145      D gzwrite         PR            10I 0 extproc('gzwrite')
    146      D  file                               value like(gzFile)                   File pointer
    147      D  buf                       32767    const options(*varsize)              Buffer
    148      D  len                          10u 0 value                                Buffer length
    149       *
    150      D gzputs          PR            10I 0 extproc('gzputs')
    151      D  file                               value like(gzFile)                   File pointer
    152      D  s                              *   value options(*string)               String to output
    153       *
    154      D gzgets          PR              *   extproc('gzgets')
    155      D  file                               value like(gzFile)                   File pointer
    156      D  buf                       32767    options(*varsize)                    Read buffer
    157      D  len                          10i 0 value                                Buffer length
    158       *
    159      D gzflush         PR            10i 0 extproc('gzflush')
    160      D  file                               value like(gzFile)                   File pointer
    161      D  flush                        10I 0 value                                Type of flush
    162       *
    163      D gzseek          PR                  extproc('gzseek')
    164      D                                     like(z_off_t)
    165      D  file                               value like(gzFile)                   File pointer
    166      D  offset                             value like(z_off_t)                  Offset
    167      D  whence                       10i 0 value                                Origin
    168       *
    169      D gzrewind        PR            10i 0 extproc('gzrewind')
    170      D  file                               value like(gzFile)                   File pointer
    171       *
    172      D gztell          PR                  extproc('gztell')
    173      D                                     like(z_off_t)
    174      D  file                               value like(gzFile)                   File pointer
    175       *
    176      D gzeof           PR            10i 0 extproc('gzeof')
    177      D  file                               value like(gzFile)                   File pointer
    178       *
    179      D gzclose         PR            10i 0 extproc('gzclose')
    180      D  file                               value like(gzFile)                   File pointer
    181       *
    182      D gzerror         PR              *   extproc('gzerror')                   Error string
    183      D  file                               value like(gzFile)                   File pointer
    184      D  errnum                       10I 0                                      Error code
    185       *
    186      D gzclearerr      PR                  extproc('gzclearerr')
    187      D  file                               value like(gzFile)                   File pointer
    188       *
    189       **************************************************************************
    190       *                        Basic function prototypes
    191       **************************************************************************
    192       *
    193      D zlibVersion     PR              *   extproc('zlibVersion')               Version string
    194       *
    195      D deflateInit     PR            10I 0 extproc('deflateInit_')              Init. compression
    196      D  strm                               like(z_stream)                       Compression stream
    197      D  level                        10I 0 value                                Compression level
    198      D  version                        *   value options(*string)               Version string
    199      D  stream_size                  10i 0 value                                Stream struct. size
    200       *
    201      D deflate         PR            10I 0 extproc('deflate')                   Compress data
    202      D  strm                               like(z_stream)                       Compression stream
    203      D  flush                        10I 0 value                                Flush type required
    204       *
    205      D deflateEnd      PR            10I 0 extproc('deflateEnd')                Termin. compression
    206      D  strm                               like(z_stream)                       Compression stream
    207       *
    208      D inflateInit     PR            10I 0 extproc('inflateInit_')              Init. expansion
    209      D  strm                               like(z_stream)                       Expansion stream
    210      D  version                        *   value options(*string)               Version string
    211      D  stream_size                  10i 0 value                                Stream struct. size
    212       *
    213      D inflate         PR            10I 0 extproc('inflate')                   Expand data
    214      D  strm                               like(z_stream)                       Expansion stream
    215      D  flush                        10I 0 value                                Flush type required
    216       *
    217      D inflateEnd      PR            10I 0 extproc('inflateEnd')                Termin. expansion
    218      D  strm                               like(z_stream)                       Expansion stream
    219       *
    220       **************************************************************************
    221       *                        Advanced function prototypes
    222       **************************************************************************
    223       *
    224      D deflateInit2    PR            10I 0 extproc('deflateInit2_')             Init. compression
    225      D  strm                               like(z_stream)                       Compression stream
    226      D  level                        10I 0 value                                Compression level
    227      D  method                       10I 0 value                                Compression method
    228      D  windowBits                   10I 0 value                                log2(window size)
    229      D  memLevel                     10I 0 value                                Mem/cmpress tradeoff
    230      D  strategy                     10I 0 value                                Compression stategy
    231      D  version                        *   value options(*string)               Version string
    232      D  stream_size                  10i 0 value                                Stream struct. size
    233       *
    234      D deflateSetDictionary...
    235      D                 PR            10I 0 extproc('deflateSetDictionary')      Init. dictionary
    236      D  strm                               like(z_stream)                       Compression stream
    237      D  dictionary                32767    const options(*varsize)              Dictionary bytes
    238      D  dictLength                   10U 0 value                                Dictionary length
    239       *
    240      D deflateCopy     PR            10I 0 extproc('deflateCopy')               Compress strm 2 strm
    241      D  dest                               like(z_stream)                       Destination stream
    242      D  source                             like(z_stream)                       Source stream
    243       *
    244      D deflateReset    PR            10I 0 extproc('deflateReset')              End and init. stream
    245      D  strm                               like(z_stream)                       Compression stream
    246       *
    247      D deflateParams   PR            10I 0 extproc('deflateParams')             Change level & strat
    248      D  strm                               like(z_stream)                       Compression stream
    249      D  level                        10I 0 value                                Compression level
    250      D  strategy                     10I 0 value                                Compression stategy
    251       *
    252      D deflateBound    PR            10U 0 extproc('deflateBound')              Change level & strat
    253      D  strm                               like(z_stream)                       Compression stream
    254      D  sourcelen                    10U 0 value                                Compression level
    255       *
    256      D deflatePrime    PR            10I 0 extproc('deflatePrime')              Change level & strat
    257      D  strm                               like(z_stream)                       Compression stream
    258      D  bits                         10I 0 value                                Number of bits to insert
    259      D  value                        10I 0 value                                Bits to insert
    260       *
    261      D inflateInit2    PR            10I 0 extproc('inflateInit2_')             Init. expansion
    262      D  strm                               like(z_stream)                       Expansion stream
    263      D  windowBits                   10I 0 value                                log2(window size)
    264      D  version                        *   value options(*string)               Version string
    265      D  stream_size                  10i 0 value                                Stream struct. size
    266       *
    267      D inflateSetDictionary...
    268      D                 PR            10I 0 extproc('inflateSetDictionary')      Init. dictionary
    269      D  strm                               like(z_stream)                       Expansion stream
    270      D  dictionary                32767    const options(*varsize)              Dictionary bytes
    271      D  dictLength                   10U 0 value                                Dictionary length
    272       *
    273      D inflateSync     PR            10I 0 extproc('inflateSync')               Sync. expansion
    274      D  strm                               like(z_stream)                       Expansion stream
    275       *
    276      D inflateCopy     PR            10I 0 extproc('inflateCopy')
    277      D  dest                               like(z_stream)                       Destination stream
    278      D  source                             like(z_stream)                       Source stream
    279       *
    280      D inflateReset    PR            10I 0 extproc('inflateReset')              End and init. stream
    281      D  strm                               like(z_stream)                       Expansion stream
    282       *
    283      D inflateBackInit...
    284      D                 PR            10I 0 extproc('inflateBackInit_')
    285      D  strm                               like(z_stream)                       Expansion stream
    286      D  windowBits                   10I 0 value                                Log2(buffer size)
    287      D  window                    32767    options(*varsize)                    Buffer
    288      D  version                        *   value options(*string)               Version string
    289      D  stream_size                  10i 0 value                                Stream struct. size
    290       *
    291      D inflateBack     PR            10I 0 extproc('inflateBack')
    292      D  strm                               like(z_stream)                       Expansion stream
    293      D  in                             *   value procptr                        Input function
    294      D  in_desc                        *   value                                Input descriptor
    295      D  out                            *   value procptr                        Output function
    296      D  out_desc                       *   value                                Output descriptor
    297       *
    298      D inflateBackEnd  PR            10I 0 extproc('inflateBackEnd')
    299      D  strm                               like(z_stream)                       Expansion stream
    300       *
    301      D zlibCompileFlags...
    302      D                 PR            10U 0 extproc('zlibCompileFlags')
    303       *
    304       **************************************************************************
    305       *                        Checksum function prototypes
    306       **************************************************************************
    307       *
    308      D adler32         PR            10U 0 extproc('adler32')                   New checksum
    309      D  adler                        10U 0 value                                Old checksum
    310      D  buf                       32767    const options(*varsize)              Bytes to accumulate
    311      D  len                          10U 0 value                                Buffer length
    312       *
    313      D crc32           PR            10U 0 extproc('crc32')                     New checksum
    314      D  crc                          10U 0 value                                Old checksum
    315      D  buf                       32767    const options(*varsize)              Bytes to accumulate
    316      D  len                          10U 0 value                                Buffer length
    317       *
    318       **************************************************************************
    319       *                     Miscellaneous function prototypes
    320       **************************************************************************
    321       *
    322      D zError          PR              *   extproc('zError')                    Error string
    323      D  err                          10I 0 value                                Error code
    324       *
    325      D inflateSyncPoint...
    326      D                 PR            10I 0 extproc('inflateSyncPoint')
    327      D  strm                               like(z_stream)                       Expansion stream
    328       *
    329      D get_crc_table   PR              *   extproc('get_crc_table')             Ptr to ulongs
    330       *
    331       /endif
    332