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