OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-dev/] [fsf-gcc-snapshot-1-mar-12/] [or1k-gcc/] [zlib/] [inflate.h] - Diff between revs 745 and 783

Only display areas with differences | Details | Blame | View Log

Rev 745 Rev 783
/* inflate.h -- internal inflate state definition
/* inflate.h -- internal inflate state definition
 * Copyright (C) 1995-2004 Mark Adler
 * Copyright (C) 1995-2004 Mark Adler
 * For conditions of distribution and use, see copyright notice in zlib.h
 * For conditions of distribution and use, see copyright notice in zlib.h
 */
 */
 
 
/* WARNING: this file should *not* be used by applications. It is
/* WARNING: this file should *not* be used by applications. It is
   part of the implementation of the compression library and is
   part of the implementation of the compression library and is
   subject to change. Applications should only use zlib.h.
   subject to change. Applications should only use zlib.h.
 */
 */
 
 
/* define NO_GZIP when compiling if you want to disable gzip header and
/* define NO_GZIP when compiling if you want to disable gzip header and
   trailer decoding by inflate().  NO_GZIP would be used to avoid linking in
   trailer decoding by inflate().  NO_GZIP would be used to avoid linking in
   the crc code when it is not needed.  For shared libraries, gzip decoding
   the crc code when it is not needed.  For shared libraries, gzip decoding
   should be left enabled. */
   should be left enabled. */
#ifndef NO_GZIP
#ifndef NO_GZIP
#  define GUNZIP
#  define GUNZIP
#endif
#endif
 
 
/* Possible inflate modes between inflate() calls */
/* Possible inflate modes between inflate() calls */
typedef enum {
typedef enum {
    HEAD,       /* i: waiting for magic header */
    HEAD,       /* i: waiting for magic header */
    FLAGS,      /* i: waiting for method and flags (gzip) */
    FLAGS,      /* i: waiting for method and flags (gzip) */
    TIME,       /* i: waiting for modification time (gzip) */
    TIME,       /* i: waiting for modification time (gzip) */
    OS,         /* i: waiting for extra flags and operating system (gzip) */
    OS,         /* i: waiting for extra flags and operating system (gzip) */
    EXLEN,      /* i: waiting for extra length (gzip) */
    EXLEN,      /* i: waiting for extra length (gzip) */
    EXTRA,      /* i: waiting for extra bytes (gzip) */
    EXTRA,      /* i: waiting for extra bytes (gzip) */
    NAME,       /* i: waiting for end of file name (gzip) */
    NAME,       /* i: waiting for end of file name (gzip) */
    COMMENT,    /* i: waiting for end of comment (gzip) */
    COMMENT,    /* i: waiting for end of comment (gzip) */
    HCRC,       /* i: waiting for header crc (gzip) */
    HCRC,       /* i: waiting for header crc (gzip) */
    DICTID,     /* i: waiting for dictionary check value */
    DICTID,     /* i: waiting for dictionary check value */
    DICT,       /* waiting for inflateSetDictionary() call */
    DICT,       /* waiting for inflateSetDictionary() call */
        TYPE,       /* i: waiting for type bits, including last-flag bit */
        TYPE,       /* i: waiting for type bits, including last-flag bit */
        TYPEDO,     /* i: same, but skip check to exit inflate on new block */
        TYPEDO,     /* i: same, but skip check to exit inflate on new block */
        STORED,     /* i: waiting for stored size (length and complement) */
        STORED,     /* i: waiting for stored size (length and complement) */
        COPY,       /* i/o: waiting for input or output to copy stored block */
        COPY,       /* i/o: waiting for input or output to copy stored block */
        TABLE,      /* i: waiting for dynamic block table lengths */
        TABLE,      /* i: waiting for dynamic block table lengths */
        LENLENS,    /* i: waiting for code length code lengths */
        LENLENS,    /* i: waiting for code length code lengths */
        CODELENS,   /* i: waiting for length/lit and distance code lengths */
        CODELENS,   /* i: waiting for length/lit and distance code lengths */
            LEN,        /* i: waiting for length/lit code */
            LEN,        /* i: waiting for length/lit code */
            LENEXT,     /* i: waiting for length extra bits */
            LENEXT,     /* i: waiting for length extra bits */
            DIST,       /* i: waiting for distance code */
            DIST,       /* i: waiting for distance code */
            DISTEXT,    /* i: waiting for distance extra bits */
            DISTEXT,    /* i: waiting for distance extra bits */
            MATCH,      /* o: waiting for output space to copy string */
            MATCH,      /* o: waiting for output space to copy string */
            LIT,        /* o: waiting for output space to write literal */
            LIT,        /* o: waiting for output space to write literal */
    CHECK,      /* i: waiting for 32-bit check value */
    CHECK,      /* i: waiting for 32-bit check value */
    LENGTH,     /* i: waiting for 32-bit length (gzip) */
    LENGTH,     /* i: waiting for 32-bit length (gzip) */
    DONE,       /* finished check, done -- remain here until reset */
    DONE,       /* finished check, done -- remain here until reset */
    BAD,        /* got a data error -- remain here until reset */
    BAD,        /* got a data error -- remain here until reset */
    MEM,        /* got an inflate() memory error -- remain here until reset */
    MEM,        /* got an inflate() memory error -- remain here until reset */
    SYNC        /* looking for synchronization bytes to restart inflate() */
    SYNC        /* looking for synchronization bytes to restart inflate() */
} inflate_mode;
} inflate_mode;
 
 
/*
/*
    State transitions between above modes -
    State transitions between above modes -
 
 
    (most modes can go to the BAD or MEM mode -- not shown for clarity)
    (most modes can go to the BAD or MEM mode -- not shown for clarity)
 
 
    Process header:
    Process header:
        HEAD -> (gzip) or (zlib)
        HEAD -> (gzip) or (zlib)
        (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME
        (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME
        NAME -> COMMENT -> HCRC -> TYPE
        NAME -> COMMENT -> HCRC -> TYPE
        (zlib) -> DICTID or TYPE
        (zlib) -> DICTID or TYPE
        DICTID -> DICT -> TYPE
        DICTID -> DICT -> TYPE
    Read deflate blocks:
    Read deflate blocks:
            TYPE -> STORED or TABLE or LEN or CHECK
            TYPE -> STORED or TABLE or LEN or CHECK
            STORED -> COPY -> TYPE
            STORED -> COPY -> TYPE
            TABLE -> LENLENS -> CODELENS -> LEN
            TABLE -> LENLENS -> CODELENS -> LEN
    Read deflate codes:
    Read deflate codes:
                LEN -> LENEXT or LIT or TYPE
                LEN -> LENEXT or LIT or TYPE
                LENEXT -> DIST -> DISTEXT -> MATCH -> LEN
                LENEXT -> DIST -> DISTEXT -> MATCH -> LEN
                LIT -> LEN
                LIT -> LEN
    Process trailer:
    Process trailer:
        CHECK -> LENGTH -> DONE
        CHECK -> LENGTH -> DONE
 */
 */
 
 
/* state maintained between inflate() calls.  Approximately 7K bytes. */
/* state maintained between inflate() calls.  Approximately 7K bytes. */
struct inflate_state {
struct inflate_state {
    inflate_mode mode;          /* current inflate mode */
    inflate_mode mode;          /* current inflate mode */
    int last;                   /* true if processing last block */
    int last;                   /* true if processing last block */
    int wrap;                   /* bit 0 true for zlib, bit 1 true for gzip */
    int wrap;                   /* bit 0 true for zlib, bit 1 true for gzip */
    int havedict;               /* true if dictionary provided */
    int havedict;               /* true if dictionary provided */
    int flags;                  /* gzip header method and flags (0 if zlib) */
    int flags;                  /* gzip header method and flags (0 if zlib) */
    unsigned dmax;              /* zlib header max distance (INFLATE_STRICT) */
    unsigned dmax;              /* zlib header max distance (INFLATE_STRICT) */
    unsigned long check;        /* protected copy of check value */
    unsigned long check;        /* protected copy of check value */
    unsigned long total;        /* protected copy of output count */
    unsigned long total;        /* protected copy of output count */
    gz_headerp head;            /* where to save gzip header information */
    gz_headerp head;            /* where to save gzip header information */
        /* sliding window */
        /* sliding window */
    unsigned wbits;             /* log base 2 of requested window size */
    unsigned wbits;             /* log base 2 of requested window size */
    unsigned wsize;             /* window size or zero if not using window */
    unsigned wsize;             /* window size or zero if not using window */
    unsigned whave;             /* valid bytes in the window */
    unsigned whave;             /* valid bytes in the window */
    unsigned write;             /* window write index */
    unsigned write;             /* window write index */
    unsigned char FAR *window;  /* allocated sliding window, if needed */
    unsigned char FAR *window;  /* allocated sliding window, if needed */
        /* bit accumulator */
        /* bit accumulator */
    unsigned long hold;         /* input bit accumulator */
    unsigned long hold;         /* input bit accumulator */
    unsigned bits;              /* number of bits in "in" */
    unsigned bits;              /* number of bits in "in" */
        /* for string and stored block copying */
        /* for string and stored block copying */
    unsigned length;            /* literal or length of data to copy */
    unsigned length;            /* literal or length of data to copy */
    unsigned offset;            /* distance back to copy string from */
    unsigned offset;            /* distance back to copy string from */
        /* for table and code decoding */
        /* for table and code decoding */
    unsigned extra;             /* extra bits needed */
    unsigned extra;             /* extra bits needed */
        /* fixed and dynamic code tables */
        /* fixed and dynamic code tables */
    code const FAR *lencode;    /* starting table for length/literal codes */
    code const FAR *lencode;    /* starting table for length/literal codes */
    code const FAR *distcode;   /* starting table for distance codes */
    code const FAR *distcode;   /* starting table for distance codes */
    unsigned lenbits;           /* index bits for lencode */
    unsigned lenbits;           /* index bits for lencode */
    unsigned distbits;          /* index bits for distcode */
    unsigned distbits;          /* index bits for distcode */
        /* dynamic table building */
        /* dynamic table building */
    unsigned ncode;             /* number of code length code lengths */
    unsigned ncode;             /* number of code length code lengths */
    unsigned nlen;              /* number of length code lengths */
    unsigned nlen;              /* number of length code lengths */
    unsigned ndist;             /* number of distance code lengths */
    unsigned ndist;             /* number of distance code lengths */
    unsigned have;              /* number of code lengths in lens[] */
    unsigned have;              /* number of code lengths in lens[] */
    code FAR *next;             /* next available space in codes[] */
    code FAR *next;             /* next available space in codes[] */
    unsigned short lens[320];   /* temporary storage for code lengths */
    unsigned short lens[320];   /* temporary storage for code lengths */
    unsigned short work[288];   /* work area for code table building */
    unsigned short work[288];   /* work area for code table building */
    code codes[ENOUGH];         /* space for code tables */
    code codes[ENOUGH];         /* space for code tables */
};
};
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.