Skip to content

Commit 17f4057

Browse files
committed
Make CrcParams public
Enables easier integration for consumers who would like to use custom CRC parameters, such as polynomials.
1 parent 90538b7 commit 17f4057

File tree

12 files changed

+31
-33
lines changed

12 files changed

+31
-33
lines changed

src/algorithm.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717

1818
use crate::consts::CRC_CHUNK_SIZE;
1919
use crate::enums::{DataChunkProcessor, Reflector};
20-
use crate::structs::{CrcParams, CrcState};
20+
use crate::structs::CrcState;
2121
use crate::traits::{ArchOps, EnhancedCrcWidth};
22-
use crate::{crc32, crc64};
22+
use crate::{crc32, crc64, CrcParams};
2323

2424
/// Main entry point that works for both CRC-32 and CRC-64
2525
#[inline]

src/arch/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use std::arch::is_aarch64_feature_detected;
1111
#[cfg(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))]
1212
use crate::algorithm;
1313

14-
use crate::structs::CrcParams;
14+
use crate::CrcParams;
1515

1616
#[cfg(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))]
1717
use crate::structs::{Width32, Width64};

src/arch/software.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
#![cfg(not(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64")))]
66

77
use crate::consts::CRC_64_NVME;
8-
use crate::structs::CrcParams;
98
use crate::CrcAlgorithm;
9+
use crate::CrcParams;
1010
use crc::Table;
1111

1212
const RUST_CRC32_AIXM: crc::Crc<u32, Table<16>> =

src/combine.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
http://reveng.sourceforge.net/crc-catalogue/all.htm
5151
*/
5252

53-
use crate::structs::CrcParams;
53+
use crate::CrcParams;
5454

5555
/* Multiply the GF(2) vector vec by the GF(2) matrix mat, returning the
5656
resulting vector. The vector is stored as bits in a crc_t. The matrix is

src/crc32/consts.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ use crate::consts::{
77
NAME_CRC32_CD_ROM_EDC, NAME_CRC32_CKSUM, NAME_CRC32_ISCSI, NAME_CRC32_ISO_HDLC,
88
NAME_CRC32_JAMCRC, NAME_CRC32_MEF, NAME_CRC32_MPEG_2, NAME_CRC32_XFER,
99
};
10-
use crate::structs::CrcParams;
1110
use crate::CrcAlgorithm;
11+
use crate::CrcParams;
1212
use crc::{
1313
CRC_32_AIXM, CRC_32_AUTOSAR, CRC_32_BASE91_D, CRC_32_BZIP2, CRC_32_CD_ROM_EDC, CRC_32_CKSUM,
1414
CRC_32_ISCSI, CRC_32_ISO_HDLC, CRC_32_JAMCRC, CRC_32_MEF, CRC_32_MPEG_2, CRC_32_XFER,

src/crc64/consts.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
#![allow(dead_code)]
44

55
use crate::consts::*;
6-
use crate::structs::CrcParams;
76
use crate::CrcAlgorithm;
7+
use crate::CrcParams;
88
use crc::{CRC_64_ECMA_182, CRC_64_GO_ISO, CRC_64_MS, CRC_64_REDIS, CRC_64_WE, CRC_64_XZ};
99

1010
// width=64 poly=0x42f0e1eba9ea3693 init=0x0000000000000000 refin=false refout=false xorout=0x0000000000000000 check=0x6c40df5f0b497347 residue=0x0000000000000000 name="CRC-64/ECMA-182"

src/ffi.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
88
#![cfg(any(target_arch = "aarch64", target_arch = "x86_64", target_arch = "x86"))]
99

10-
use crate::structs::CrcParams;
1110
use crate::CrcAlgorithm;
11+
use crate::CrcParams;
1212
use crate::{get_calculator_target, Digest};
1313
use std::ffi::CStr;
1414
use std::os::raw::c_char;

src/lib.rs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ use crate::crc32::fusion;
116116
use crate::crc64::consts::{
117117
CRC64_ECMA_182, CRC64_GO_ISO, CRC64_MS, CRC64_NVME, CRC64_REDIS, CRC64_WE, CRC64_XZ,
118118
};
119-
use crate::structs::{Calculator, CrcParams};
119+
use crate::structs::Calculator;
120120
use crate::traits::CrcCalculator;
121121
use digest::{DynDigest, InvalidBufferSize};
122122
use std::fs::File;
@@ -161,6 +161,21 @@ pub enum CrcAlgorithm {
161161
Crc64Xz,
162162
}
163163

164+
/// Parameters for CRC computation, including polynomial, initial value, and other settings.
165+
#[derive(Clone, Copy, Debug)]
166+
pub struct CrcParams {
167+
pub algorithm: CrcAlgorithm,
168+
pub name: &'static str,
169+
pub width: u8,
170+
pub poly: u64,
171+
pub init: u64,
172+
pub refin: bool,
173+
pub refout: bool,
174+
pub xorout: u64,
175+
pub check: u64,
176+
pub keys: [u64; 23],
177+
}
178+
164179
/// Type alias for a function pointer that represents a CRC calculation function.
165180
///
166181
/// The function takes the following parameters:
@@ -493,9 +508,9 @@ pub fn checksum_combine_with_custom_params(
493508
}
494509

495510
/// Returns the custom CRC parameters for a given set of Rocksoft CRC parameters.
496-
///
511+
///
497512
/// Does not support mis-matched refin/refout parameters, so both must be true or both false.
498-
///
513+
///
499514
/// Rocksoft parameters for lots of variants: https://reveng.sourceforge.io/crc-catalogue/all.htm
500515
pub fn get_custom_params(
501516
name: &'static str,
@@ -614,8 +629,7 @@ mod lib {
614629
use super::*;
615630
use crate::test::consts::{TEST_ALL_CONFIGS, TEST_CHECK_STRING};
616631
use crate::test::enums::AnyCrcTestConfig;
617-
use crate::CrcAlgorithm::Crc32Iscsi;
618-
use cbindgen::Language::{Cxx, C};
632+
use cbindgen::Language::C;
619633
use cbindgen::Style::Both;
620634
use rand::{rng, Rng};
621635
use std::fs::{read, write};

src/structs.rs

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,8 @@
22

33
#![allow(dead_code)]
44

5-
use crate::arch;
65
use crate::traits::{CrcCalculator, CrcWidth};
7-
use crate::CrcAlgorithm;
8-
9-
#[derive(Clone, Copy, Debug)]
10-
pub struct CrcParams {
11-
pub algorithm: CrcAlgorithm,
12-
pub name: &'static str,
13-
pub width: u8,
14-
pub poly: u64,
15-
pub init: u64,
16-
pub refin: bool,
17-
pub refout: bool,
18-
pub xorout: u64,
19-
pub check: u64,
20-
pub keys: [u64; 23],
21-
}
22-
6+
use crate::{arch, CrcParams};
237
/// CRC-32 width implementation
248
#[derive(Clone, Copy)]
259
pub struct Width32;

src/test/enums.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
#![cfg(test)]
44
#![allow(dead_code)]
55

6-
use crate::structs::CrcParams;
76
use crate::test::structs::*;
87
use crate::CrcAlgorithm;
8+
use crate::CrcParams;
99
use crc::Crc;
1010

1111
pub enum AnyCrcTestConfig {

src/test/structs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#![cfg(test)]
44
#![allow(dead_code)]
55

6-
use crate::structs::CrcParams;
6+
use crate::CrcParams;
77
use crc::{Crc, Table};
88

99
pub struct CrcTestConfig<T: crc::Width, I: crc::Implementation + 'static> {

src/traits.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#[cfg(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))]
66
use crate::enums::Reflector;
77

8-
use crate::structs::CrcParams;
8+
use crate::CrcParams;
99

1010
#[cfg(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))]
1111
use crate::structs::CrcState;

0 commit comments

Comments
 (0)