Function report |
Source Code:lib\zlib_deflate\deflate.c |
Create Date:2022-07-28 06:58:35 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:deflate_slow
Proto:static block_state deflate_slow(deflate_state *s, int flush)
Type:block_state
Parameter:
Type | Parameter | Name |
---|---|---|
deflate_state * | s | |
int | flush |
1011 | hash_head = Local data |
1015 | cycle |
1026 | If umber of valid bytes ahead in window == 0 Then Break |
1032 | If umber of valid bytes ahead in window >= The three kinds of block type Then |
1047 | If avor or force Huffman coding != Z_HUFFMAN_ONLY Then |
1048 | length of best match = longest_match(s, hash_head) |
1052 | If length of best match <= 5 && ( avor or force Huffman coding == compression levels || length of best match == The three kinds of block type && start of string to insert - start of matching string > Tail of hash chains ) Then |
1065 | If prev_length >= The three kinds of block type && length of best match <= prev_length Then |
1066 | max_insert = start of string to insert + umber of valid bytes ahead in window - The three kinds of block type |
1071 | bflush = zlib_tr_tally(s, start of string to insert - 1 - previous match , prev_length - The three kinds of block type ) |
1079 | umber of valid bytes ahead in window -= prev_length - 1 |
1080 | prev_length -= 2 |
1081 | Do |
1082 | If ++start of string to insert <= max_insert Then |
1085 | When --prev_length != 0 cycle |
1086 | set if previous match exists = 0 |
1088 | start of string to insert ++ |
1090 | If bflush Then |
1092 | Else if set if previous match exists Then |
1098 | If zlib_tr_tally(s, 0, window[start of string to insert - 1]) Then |
1101 | start of string to insert ++ |
1103 | If remaining free space at next_out == 0 Then Return lock not completed, need more input or more output |
1104 | Else |
1108 | set if previous match exists = 1 |
1109 | start of string to insert ++ |
1114 | If set if previous match exists Then |
1116 | zlib_tr_tally(s, 0, window[start of string to insert - 1]) |
1117 | set if previous match exists = 0 |
1120 | Return If flush == Z_FINISH Then finish_done Else lock flush performed |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |