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 |