Skip to content

Commit bdb2f39

Browse files
committed
ZDICT_analyzeEntropy: more readability improvements
1 parent 957d059 commit bdb2f39

File tree

1 file changed

+30
-40
lines changed

1 file changed

+30
-40
lines changed

lib/dictBuilder/zdict.rs

Lines changed: 30 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -124,15 +124,11 @@ unsafe fn ZDICT_count(
124124
loop {
125125
let diff = MEM_readST(pMatch) ^ MEM_readST(pIn);
126126
if diff == 0 {
127-
pIn = (pIn as *const core::ffi::c_char).add(::core::mem::size_of::<size_t>())
128-
as *const core::ffi::c_void;
129-
pMatch = (pMatch as *const core::ffi::c_char).add(::core::mem::size_of::<size_t>())
130-
as *const core::ffi::c_void;
127+
pIn = pIn.byte_add(::core::mem::size_of::<size_t>());
128+
pMatch = pMatch.byte_add(::core::mem::size_of::<size_t>());
131129
} else {
132-
pIn = (pIn as *const core::ffi::c_char).offset(ZSTD_NbCommonBytes(diff) as isize)
133-
as *const core::ffi::c_void;
134-
return (pIn as *const core::ffi::c_char).offset_from(pStart) as core::ffi::c_long
135-
as size_t;
130+
pIn = pIn.byte_offset(ZSTD_NbCommonBytes(diff) as isize);
131+
return pIn.byte_offset_from(pStart) as core::ffi::c_long as size_t;
136132
}
137133
}
138134
}
@@ -891,14 +887,14 @@ unsafe fn analyze_entropy_internal(
891887
return Err(Error::dictionaryCreation_failed);
892888
}
893889

894-
let mut offcodeNCount = [0i16; (OFFCODE_MAX + 1) as usize];
895-
let mut matchLengthNCount = [0i16; (MaxML + 1) as usize];
896-
let mut litLengthNCount = [0i16; (MaxLL + 1) as usize];
890+
let mut offcodeNCount = [0i16; OFFCODE_MAX as usize + 1];
891+
let mut matchLengthNCount = [0i16; MaxML as usize + 1];
892+
let mut litLengthNCount = [0i16; MaxLL as usize + 1];
897893

898894
let mut countLit = [1u32; 256];
899-
let mut offcodeCount = [1u32; (OFFCODE_MAX + 1) as usize];
900-
let mut matchLengthCount = [1u32; (MaxML + 1) as usize];
901-
let mut litLengthCount = [1u32; (MaxLL + 1) as usize];
895+
let mut offcodeCount = [1u32; OFFCODE_MAX as usize + 1];
896+
let mut matchLengthCount = [1u32; MaxML as usize + 1];
897+
let mut litLengthCount = [1u32; MaxLL as usize + 1];
902898

903899
let mut repOffset = [0; MAXREPOFFSET as usize];
904900
repOffset[1] = 1;
@@ -907,11 +903,11 @@ unsafe fn analyze_entropy_internal(
907903

908904
let mut bestRepOffset = [offsetCount_t::default(); ZSTD_REP_NUM as usize + 1];
909905

910-
let averageSampleSize = if fileSizes.is_empty() {
911-
0
912-
} else {
913-
fileSizes.iter().sum::<usize>() / fileSizes.len()
914-
};
906+
let averageSampleSize = fileSizes
907+
.iter()
908+
.sum::<usize>()
909+
.checked_div(fileSizes.len())
910+
.unwrap_or(0);
915911
if compressionLevel == 0 {
916912
compressionLevel = ZSTD_CLEVEL_DEFAULT;
917913
}
@@ -948,7 +944,7 @@ unsafe fn analyze_entropy_internal(
948944
&mut matchLengthCount,
949945
&mut litLengthCount,
950946
&mut repOffset,
951-
(srcBuffer as *const core::ffi::c_char).add(pos) as *const core::ffi::c_void,
947+
srcBuffer.byte_add(pos),
952948
*fileSize,
953949
notificationLevel,
954950
);
@@ -1273,27 +1269,27 @@ unsafe fn ZDICT_addEntropyTablesFromBuffer_advanced(
12731269
if notificationLevel >= 2 {
12741270
eprintln!("statistics ...");
12751271
}
1276-
let eSize = match ZDICT_analyzeEntropy(
1277-
(dictBuffer as *mut core::ffi::c_char).add(hSize) as *mut core::ffi::c_void,
1272+
let res = ZDICT_analyzeEntropy(
1273+
dictBuffer.byte_add(hSize),
12781274
dictBufferCapacity.wrapping_sub(hSize),
12791275
compressionLevel,
12801276
samplesBuffer,
12811277
samplesSizes,
1282-
(dictBuffer as *mut core::ffi::c_char)
1283-
.add(dictBufferCapacity)
1284-
.offset(-(dictContentSize as isize)) as *const core::ffi::c_void,
1278+
dictBuffer
1279+
.byte_add(dictBufferCapacity)
1280+
.byte_offset(-(dictContentSize as isize)),
12851281
dictContentSize,
12861282
notificationLevel,
1287-
) {
1288-
Ok(eSize) => eSize,
1283+
);
1284+
match res {
1285+
Ok(eSize) => hSize = hSize.wrapping_add(eSize),
12891286
Err(err) => return err.to_error_code(),
12901287
};
1291-
hSize = hSize.wrapping_add(eSize);
12921288
MEM_writeLE32(dictBuffer, ZSTD_MAGIC_DICTIONARY);
12931289
let randomID = ZSTD_XXH64(
1294-
(dictBuffer as *mut core::ffi::c_char)
1295-
.add(dictBufferCapacity)
1296-
.offset(-(dictContentSize as isize)) as *const core::ffi::c_void,
1290+
dictBuffer
1291+
.byte_add(dictBufferCapacity)
1292+
.byte_offset(-(dictContentSize as isize)),
12971293
dictContentSize,
12981294
0,
12991295
);
@@ -1304,10 +1300,7 @@ unsafe fn ZDICT_addEntropyTablesFromBuffer_advanced(
13041300
} else {
13051301
compliantID
13061302
};
1307-
MEM_writeLE32(
1308-
(dictBuffer as *mut core::ffi::c_char).add(4) as *mut core::ffi::c_void,
1309-
dictID,
1310-
);
1303+
MEM_writeLE32(dictBuffer.byte_add(4), dictID);
13111304
if hSize.wrapping_add(dictContentSize) < dictBufferCapacity {
13121305
core::ptr::copy(
13131306
(dictBuffer as *mut core::ffi::c_char)
@@ -1419,8 +1412,7 @@ unsafe fn ZDICT_trainFromBuffer_unsafe_legacy(
14191412
);
14201413
}
14211414
ZDICT_printHex(
1422-
(samplesBuffer as *const core::ffi::c_char).offset(pos as isize)
1423-
as *const core::ffi::c_void,
1415+
samplesBuffer.byte_offset(pos as isize),
14241416
printedLength as size_t,
14251417
);
14261418
if notificationLevel >= 3 {
@@ -1513,9 +1505,7 @@ unsafe fn ZDICT_trainFromBuffer_unsafe_legacy(
15131505
}
15141506
memcpy(
15151507
ptr as *mut core::ffi::c_void,
1516-
(samplesBuffer as *const core::ffi::c_char)
1517-
.offset((*dictList.offset(u_0 as isize)).pos as isize)
1518-
as *const core::ffi::c_void,
1508+
samplesBuffer.byte_offset((*dictList.offset(u_0 as isize)).pos as isize),
15191509
l as size_t,
15201510
);
15211511
u_0 = u_0.wrapping_add(1);

0 commit comments

Comments
 (0)