函数逻辑报告 |
Source Code:lib\lz4\lz4_compress.c |
Create Date:2022-07-27 07:58:01 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:LZ4_compress_generic() :* inlined, to ensure branches are decided at compilation time
函数原型:static inline __attribute__((__always_inline__)) int LZ4_compress_generic(LZ4_stream_t_internal *const dictPtr, const char *const source, char *const dest, const int inputSize, const int maxOutputSize, const limitedOutput_directive outputLimited, const tableType_t tableType, const dict_directive dict, const dictIssue_directive dictIssue, const U32 acceleration)
返回类型:int
参数:
类型 | 参数 | 名称 |
---|---|---|
LZ4_stream_t_internal *const | dictPtr | |
const char *const | source | |
char *const | dest | |
const int | inputSize | |
const int | maxOutputSize | |
const limitedOutput_directive | outputLimited | |
const tableType_t | tableType | |
const dict_directive | dict | |
const dictIssue_directive | dictIssue | |
const U32 | acceleration |
191 | lowRefLimit等于ip减dictSize |
192 | dictionary等于dictionary |
193 | dictEnd等于dictionary加dictSize |
198 | matchlimit等于iend减LASTLITERALS |
201 | olimit等于op加maxOutputSize |
204 | refDelta等于0 |
207 | 如果inputSize大于2 113 929 216 bytes 则 |
209 | 返回:0 |
214 | 默认 |
218 | 当:dict恒等于withPrefix64k |
222 | 当:dict恒等于usingExtDict |
228 | 如果tableType恒等于byU16且inputSize大于等于LZ4_64Klimit则 |
231 | 返回:0 |
234 | 如果inputSize小于LZ4_minLength则 |
236 | 转到:_last_literals |
240 | LZ4_putPosition(ip, hashTable, tableType, base) |
241 | ip自加 |
242 | forwardH等于LZ4_hashPosition(ip, tableType) |
245 | 循环 |
252 | step等于1 |
253 | searchMatchNb等于acceleration左移Increase this value ==> compression run slower on incompressible data 位 |
255 | 循环 |
262 | 如果此条件成立可能性小(为编译器优化)(forwardIp > mflimit)则转到:_last_literals |
269 | 如果dict恒等于usingExtDict则 |
272 | lowLimit等于dictionary |
273 | 否则 |
283 | 当如果dictIssue恒等于dictSmall则match小于lowRefLimit否则0或如果tableType恒等于byU16则0否则match加MAX_DISTANCE小于ip或LZ4_read32(match + refDelta)不等于LZ4_read32(ip)循环 |
296 | ip自减 |
297 | match自减 |
306 | 如果outputLimited且此条件成立可能性小(为编译器优化)(op + litLength + (2 + 1 + LASTLITERALS) + (litLength / 255) > olimit)则返回:0 |
329 | _next_match : |
331 | LZ4_writeLE16(op, (U16)(ip - match)) |
332 | op加等于2 |
338 | 如果dict恒等于usingExtDict且lowLimit恒等于dictionary则 |
345 | 如果limit大于matchlimit则limit等于matchlimit |
361 | 否则 |
367 | 如果outputLimited且此条件成立可能性小(为编译器优化)(op + (1 + LASTLITERALS) + (matchCode >> 8) > olimit)则返回:0 |
377 | LZ4_write32(op, 0xFFFFFFFF) |
398 | LZ4_putPosition(ip - 2, hashTable, tableType, base) |
404 | 如果dict恒等于usingExtDict则 |
407 | lowLimit等于dictionary |
408 | 否则 |
414 | LZ4_putPosition(ip, hashTable, tableType, base) |
416 | 如果如果dictIssue恒等于dictSmall则match大于等于lowRefLimit否则1且match加MAX_DISTANCE大于等于ip且LZ4_read32(match + refDelta)恒等于LZ4_read32(ip)则 |
425 | forwardH等于LZ4_hashPosition(++ip, tableType) |
428 | _last_literals : |
433 | 如果outputLimited且op减dest加lastRun加1加lastRun加255减RUN_MASK的差除255大于maxOutputSize则返回:0 |
445 | 否则 |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |