函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |