Geant4
v4-10.4-release
메인 페이지
관련된 페이지
모듈
네임스페이스
클래스
파일들
파일 목록
파일 멤버
모두
클래스
네임스페이스들
파일들
함수
변수
타입정의
열거형 타입
열거형 멤버
Friends
매크로
그룹들
페이지들
source
externals
zlib
include
inflate.h
이 파일의 문서화 페이지로 가기
1
/* inflate.h -- internal inflate state definition
2
* Copyright (C) 1995-2016 Mark Adler
3
* For conditions of distribution and use, see copyright notice in zlib.h
4
*/
5
6
/* WARNING: this file should *not* be used by applications. It is
7
part of the implementation of the compression library and is
8
subject to change. Applications should only use zlib.h.
9
*/
10
11
/* define NO_GZIP when compiling if you want to disable gzip header and
12
trailer decoding by inflate(). NO_GZIP would be used to avoid linking in
13
the crc code when it is not needed. For shared libraries, gzip decoding
14
should be left enabled. */
15
#ifndef NO_GZIP
16
# define GUNZIP
17
#endif
18
19
/* Possible inflate modes between inflate() calls */
20
typedef
enum
{
21
HEAD
= 16180,
/* i: waiting for magic header */
22
FLAGS
,
/* i: waiting for method and flags (gzip) */
23
TIME
,
/* i: waiting for modification time (gzip) */
24
OS
,
/* i: waiting for extra flags and operating system (gzip) */
25
EXLEN
,
/* i: waiting for extra length (gzip) */
26
EXTRA
,
/* i: waiting for extra bytes (gzip) */
27
NAME
,
/* i: waiting for end of file name (gzip) */
28
COMMENT
,
/* i: waiting for end of comment (gzip) */
29
HCRC
,
/* i: waiting for header crc (gzip) */
30
DICTID
,
/* i: waiting for dictionary check value */
31
DICT
,
/* waiting for inflateSetDictionary() call */
32
TYPE
,
/* i: waiting for type bits, including last-flag bit */
33
TYPEDO
,
/* i: same, but skip check to exit inflate on new block */
34
STORED
,
/* i: waiting for stored size (length and complement) */
35
COPY_
,
/* i/o: same as COPY below, but only first time in */
36
COPY
,
/* i/o: waiting for input or output to copy stored block */
37
TABLE
,
/* i: waiting for dynamic block table lengths */
38
LENLENS
,
/* i: waiting for code length code lengths */
39
CODELENS
,
/* i: waiting for length/lit and distance code lengths */
40
LEN_
,
/* i: same as LEN below, but only first time in */
41
LEN
,
/* i: waiting for length/lit/eob code */
42
LENEXT
,
/* i: waiting for length extra bits */
43
DIST
,
/* i: waiting for distance code */
44
DISTEXT
,
/* i: waiting for distance extra bits */
45
MATCH
,
/* o: waiting for output space to copy string */
46
LIT
,
/* o: waiting for output space to write literal */
47
CHECK
,
/* i: waiting for 32-bit check value */
48
LENGTH
,
/* i: waiting for 32-bit length (gzip) */
49
DONE
,
/* finished check, done -- remain here until reset */
50
BAD
,
/* got a data error -- remain here until reset */
51
MEM
,
/* got an inflate() memory error -- remain here until reset */
52
SYNC
/* looking for synchronization bytes to restart inflate() */
53
}
inflate_mode
;
54
55
/*
56
State transitions between above modes -
57
58
(most modes can go to BAD or MEM on error -- not shown for clarity)
59
60
Process header:
61
HEAD -> (gzip) or (zlib) or (raw)
62
(gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT ->
63
HCRC -> TYPE
64
(zlib) -> DICTID or TYPE
65
DICTID -> DICT -> TYPE
66
(raw) -> TYPEDO
67
Read deflate blocks:
68
TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK
69
STORED -> COPY_ -> COPY -> TYPE
70
TABLE -> LENLENS -> CODELENS -> LEN_
71
LEN_ -> LEN
72
Read deflate codes in fixed or dynamic block:
73
LEN -> LENEXT or LIT or TYPE
74
LENEXT -> DIST -> DISTEXT -> MATCH -> LEN
75
LIT -> LEN
76
Process trailer:
77
CHECK -> LENGTH -> DONE
78
*/
79
80
/* State maintained between inflate() calls -- approximately 7K bytes, not
81
including the allocated sliding window, which is up to 32K bytes. */
82
struct
inflate_state
{
83
z_streamp
strm
;
/* pointer back to this zlib stream */
84
inflate_mode
mode
;
/* current inflate mode */
85
int
last
;
/* true if processing last block */
86
int
wrap
;
/* bit 0 true for zlib, bit 1 true for gzip,
87
bit 2 true to validate check value */
88
int
havedict
;
/* true if dictionary provided */
89
int
flags
;
/* gzip header method and flags (0 if zlib) */
90
unsigned
dmax
;
/* zlib header max distance (INFLATE_STRICT) */
91
unsigned
long
check
;
/* protected copy of check value */
92
unsigned
long
total
;
/* protected copy of output count */
93
gz_headerp
head
;
/* where to save gzip header information */
94
/* sliding window */
95
unsigned
wbits
;
/* log base 2 of requested window size */
96
unsigned
wsize
;
/* window size or zero if not using window */
97
unsigned
whave
;
/* valid bytes in the window */
98
unsigned
wnext
;
/* window write index */
99
unsigned
char
FAR *
window
;
/* allocated sliding window, if needed */
100
/* bit accumulator */
101
unsigned
long
hold
;
/* input bit accumulator */
102
unsigned
bits
;
/* number of bits in "in" */
103
/* for string and stored block copying */
104
unsigned
length
;
/* literal or length of data to copy */
105
unsigned
offset
;
/* distance back to copy string from */
106
/* for table and code decoding */
107
unsigned
extra
;
/* extra bits needed */
108
/* fixed and dynamic code tables */
109
code
const
FAR *
lencode
;
/* starting table for length/literal codes */
110
code
const
FAR *
distcode
;
/* starting table for distance codes */
111
unsigned
lenbits
;
/* index bits for lencode */
112
unsigned
distbits
;
/* index bits for distcode */
113
/* dynamic table building */
114
unsigned
ncode
;
/* number of code length code lengths */
115
unsigned
nlen
;
/* number of length code lengths */
116
unsigned
ndist
;
/* number of distance code lengths */
117
unsigned
have
;
/* number of code lengths in lens[] */
118
code
FAR *
next
;
/* next available space in codes[] */
119
unsigned
short
lens
[320];
/* temporary storage for code lengths */
120
unsigned
short
work
[288];
/* work area for code table building */
121
code
codes
[
ENOUGH
];
/* space for code tables */
122
int
sane
;
/* if false, allow invalid distance too far */
123
int
back
;
/* bits back of last unprocessed length/lit */
124
unsigned
was
;
/* initial length of match */
125
};
COMMENT
Definition:
inflate.h:28
inflate_state::nlen
unsigned nlen
Definition:
inflate.h:115
COPY
Definition:
inflate.h:36
inflate_state
Definition:
inflate.h:82
inflate_state::havedict
int havedict
Definition:
inflate.h:88
STORED
Definition:
inflate.h:34
DISTEXT
Definition:
inflate.h:44
inflate_state::wnext
unsigned wnext
Definition:
inflate.h:98
inflate_state::ndist
unsigned ndist
Definition:
inflate.h:116
inflate_state::total
unsigned long total
Definition:
inflate.h:92
inflate_state::head
gz_headerp head
Definition:
inflate.h:93
inflate_state::strm
z_streamp strm
Definition:
inflate.h:83
inflate_state::wsize
unsigned wsize
Definition:
inflate.h:96
inflate_state::sane
int sane
Definition:
inflate.h:122
inflate_state::have
unsigned have
Definition:
inflate.h:117
inflate_state::distbits
unsigned distbits
Definition:
inflate.h:112
ENOUGH
#define ENOUGH
Definition:
inftrees.h:51
inflate_state::extra
unsigned extra
Definition:
inflate.h:107
inflate_state::distcode
code const FAR * distcode
Definition:
inflate.h:110
inflate_state::last
int last
Definition:
inflate.h:85
inflate_state::check
unsigned long check
Definition:
inflate.h:91
DONE
Definition:
inflate.h:49
NAME
Definition:
inflate.h:27
TYPE
Definition:
inflate.h:32
DICTID
Definition:
inflate.h:30
gz_headerp
gz_header FAR * gz_headerp
Definition:
zlib.h:131
OS
Definition:
inflate.h:24
inflate_state::lenbits
unsigned lenbits
Definition:
inflate.h:111
inflate_state::lens
unsigned short lens[320]
Definition:
inflate.h:119
LEN
Definition:
inflate.h:41
LENLENS
Definition:
inflate.h:38
inflate_state::ncode
unsigned ncode
Definition:
inflate.h:114
TABLE
Definition:
inflate.h:37
LENGTH
Definition:
inflate.h:48
inflate_state::next
code FAR * next
Definition:
inflate.h:118
SYNC
Definition:
inflate.h:52
EXTRA
Definition:
inflate.h:26
inflate_state::codes
code codes[ENOUGH]
Definition:
inflate.h:121
inflate_state::hold
unsigned long hold
Definition:
inflate.h:101
CHECK
Definition:
inflate.h:47
LENEXT
Definition:
inflate.h:42
LIT
Definition:
inflate.h:46
TIME
Definition:
inflate.h:23
DICT
Definition:
inflate.h:31
inflate_state::work
unsigned short work[288]
Definition:
inflate.h:120
HCRC
Definition:
inflate.h:29
HEAD
Definition:
inflate.h:21
code
Definition:
inftrees.h:24
inflate_state::dmax
unsigned dmax
Definition:
inflate.h:90
inflate_state::bits
unsigned bits
Definition:
inflate.h:102
MATCH
Definition:
inflate.h:45
TYPEDO
Definition:
inflate.h:33
inflate_mode
inflate_mode
Definition:
inflate.h:20
inflate_state::back
int back
Definition:
inflate.h:123
EXLEN
Definition:
inflate.h:25
inflate_state::window
unsigned char FAR * window
Definition:
inflate.h:99
inflate_state::mode
inflate_mode mode
Definition:
inflate.h:84
LEN_
Definition:
inflate.h:40
COPY_
Definition:
inflate.h:35
BAD
Definition:
inflate.h:50
CODELENS
Definition:
inflate.h:39
inflate_state::whave
unsigned whave
Definition:
inflate.h:97
inflate_state::offset
unsigned offset
Definition:
inflate.h:105
z_streamp
z_stream FAR * z_streamp
Definition:
zlib.h:108
DIST
Definition:
inflate.h:43
inflate_state::was
unsigned was
Definition:
inflate.h:124
inflate_state::flags
int flags
Definition:
inflate.h:89
inflate_state::lencode
code const FAR * lencode
Definition:
inflate.h:109
FLAGS
Definition:
inflate.h:22
inflate_state::wbits
unsigned wbits
Definition:
inflate.h:95
inflate_state::wrap
int wrap
Definition:
inflate.h:86
MEM
Definition:
inflate.h:51
inflate_state::length
unsigned length
Definition:
inflate.h:104
다음에 의해 생성됨 :
1.8.5