函数逻辑报告 |
Source Code:lib\zstd\compress.c |
Create Date:2022-07-27 08:02:00 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:ZSTD_compressBlock_lazy_extDict_generic
函数原型:void ZSTD_compressBlock_lazy_extDict_generic(ZSTD_CCtx *ctx, const void *src, size_t srcSize, const U32 searchMethod, const U32 depth)
返回类型:void
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| ZSTD_CCtx * | ctx | |
| const void * | src | |
| size_t | srcSize | |
| const U32 | searchMethod | |
| const U32 | depth |
| 2060 | seqStorePtr等于seqStore的地址 |
| 2068 | lowestIndex等于lowLimit |
| 2069 | prefixStart等于base加dictLimit |
| 2074 | maxSearches等于1左移searchLog位 |
| 2075 | mls等于searchLength |
| 2077 | typedef size_t( * searchMax_f)(ZSTD_CCtx * zc, const BYTE * ip, const BYTE * iLimit, size_t * offsetPtr, U32 maxNbAttempts, U32 matchLengthSearch) |
| 2078 | searchMax等于如果searchMethod则ZSTD_BtFindBestMatch_selectMLS_extDict否则ZSTD_HcFindBestMatch_extDict_selectMLS |
| 2083 | nextToUpdate3等于nextToUpdate |
| 2084 | ip加等于ip恒等于prefixStart |
| 2088 | matchLength等于0 |
| 2089 | offset等于0 |
| 2098 | 如果dictLimit减1减repIndex大于等于3按位与repIndex大于lowestIndex则如果ZSTD_read32(ip + 1)恒等于ZSTD_read32(repMatch)则 |
| 2102 | matchLength等于ZSTD_count_2segments() :* can count match length with `ip` & `match` in 2 different segments.* convention : on reaching mEnd, match count continue starting from iStart加EQUAL_READ32 |
| 2104 | 如果depth恒等于0则转到:_storeSequence |
| 2111 | offsetFound等于99999999 |
| 2112 | ml2等于searchMax(ctx, ip, iend, & offsetFound, maxSearches, mls) |
| 2113 | 如果ml2大于matchLength则matchLength等于ml2, start等于ip, offset等于offsetFound |
| 2117 | 如果matchLength小于EQUAL_READ32则 |
| 2118 | ip加等于ip减anchor右移control skip over incompressible data 位的值加1 |
| 2119 | 继续下一循环 |
| 2125 | ip自加 |
| 2126 | curr自加 |
| 2128 | 如果offset则 |
| 2132 | 如果dictLimit减1减repIndex大于等于3按位与repIndex大于lowestIndex则如果ZSTD_read32(ip)恒等于ZSTD_read32(repMatch)则 |
| 2136 | repLength等于ZSTD_count_2segments() :* can count match length with `ip` & `match` in 2 different segments.* convention : on reaching mEnd, match count continue starting from iStart加EQUAL_READ32 |
| 2140 | gain1等于matchLength乘3减====== common function ======加1 |
| 2141 | 如果repLength大于等于EQUAL_READ32且gain2大于gain1则matchLength等于repLength, offset等于0, start等于ip |
| 2148 | offset2等于99999999 |
| 2150 | gain2等于ml2乘4减====== common function ====== |
| 2151 | gain1等于matchLength乘4减====== common function ======加4 |
| 2152 | 如果ml2大于等于EQUAL_READ32且gain2大于gain1则 |
| 2160 | ip自加 |
| 2161 | curr自加 |
| 2163 | 如果offset则 |
| 2167 | 如果dictLimit减1减repIndex大于等于3按位与repIndex大于lowestIndex则如果ZSTD_read32(ip)恒等于ZSTD_read32(repMatch)则 |
| 2171 | repLength等于ZSTD_count_2segments() :* can count match length with `ip` & `match` in 2 different segments.* convention : on reaching mEnd, match count continue starting from iStart加EQUAL_READ32 |
| 2175 | gain1等于matchLength乘4减====== common function ======加1 |
| 2176 | 如果repLength大于等于EQUAL_READ32且gain2大于gain1则matchLength等于repLength, offset等于0, start等于ip |
| 2183 | offset2等于99999999 |
| 2185 | gain2等于ml2乘4减====== common function ====== |
| 2186 | gain1等于matchLength乘4减====== common function ======加7 |
| 2187 | 如果ml2大于等于EQUAL_READ32且gain2大于gain1则 |
| 2193 | 退出 |
| 2197 | 如果offset则 |
| 2198 | matchIndex等于start减base减offset减ZSTD_REP_MOVE |
| 2199 | match等于如果matchIndex小于dictLimit则dictBase加matchIndex否则base加matchIndex |
| 2200 | mStart等于如果matchIndex小于dictLimit则dictStart否则prefixStart |
| 2207 | offset_1等于offset减ZSTD_REP_MOVE |
| 2211 | _storeSequence : |
| 2214 | anchor等于ip等于start加matchLength |
| 2222 | 如果dictLimit减1减repIndex大于等于3按位与repIndex大于lowestIndex则如果ZSTD_read32(ip)恒等于ZSTD_read32(repMatch)则 |
| 2226 | matchLength等于ZSTD_count_2segments() :* can count match length with `ip` & `match` in 2 different segments.* convention : on reaching mEnd, match count continue starting from iStart加EQUAL_READ32 |
| 2232 | ip加等于matchLength |
| 2234 | 继续下一循环 |
| 2236 | 退出 |
| 2241 | repToConfirm[0]等于offset_1 |
| 2242 | repToConfirm[1]等于offset_2 |
| 名称 | 描述 |
|---|---|
| ZSTD_compressBlock_greedy_extDict | |
| ZSTD_compressBlock_lazy_extDict | |
| ZSTD_compressBlock_lazy2_extDict | |
| ZSTD_compressBlock_btlazy2_extDict |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |