Converted if-panic!() in Rust code to assert!() or assert_eq!(), without changing behavior.
This commit is contained in:
parent
188a368796
commit
358fa7af57
|
@ -54,9 +54,7 @@ impl QrCode {
|
||||||
|
|
||||||
pub fn encode_codewords(ver: u8, ecl: &'static QrCodeEcc, datacodewords: &[u8], mask: i8) -> QrCode {
|
pub fn encode_codewords(ver: u8, ecl: &'static QrCodeEcc, datacodewords: &[u8], mask: i8) -> QrCode {
|
||||||
// Check arguments
|
// Check arguments
|
||||||
if ver < 1 || ver > 40 || mask < -1 || mask > 7 {
|
assert!(1 <= ver && ver <= 40 && -1 <= mask && mask <= 7, "Value out of range");
|
||||||
panic!("Value out of range");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize fields
|
// Initialize fields
|
||||||
let size: usize = (ver as usize) * 4 + 17;
|
let size: usize = (ver as usize) * 4 + 17;
|
||||||
|
@ -80,9 +78,7 @@ impl QrCode {
|
||||||
|
|
||||||
pub fn remask(qr: &QrCode, mask: i8) -> QrCode {
|
pub fn remask(qr: &QrCode, mask: i8) -> QrCode {
|
||||||
// Check arguments
|
// Check arguments
|
||||||
if mask < -1 || mask > 7 {
|
assert!(-1 <= mask && mask <= 7, "Mask out of range");
|
||||||
panic!("Mask value out of range");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy fields
|
// Copy fields
|
||||||
let mut result = QrCode {
|
let mut result = QrCode {
|
||||||
|
@ -188,9 +184,7 @@ impl QrCode {
|
||||||
}
|
}
|
||||||
data = data << 10 | rem;
|
data = data << 10 | rem;
|
||||||
data ^= 0x5412; // uint15
|
data ^= 0x5412; // uint15
|
||||||
if data >> 15 != 0 {
|
assert_eq!(data >> 15, 0, "Assertion error");
|
||||||
panic!("Assertion error");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Draw first copy
|
// Draw first copy
|
||||||
for i in 0 .. 6 {
|
for i in 0 .. 6 {
|
||||||
|
@ -227,9 +221,7 @@ impl QrCode {
|
||||||
rem = (rem << 1) ^ ((rem >> 11) * 0x1F25);
|
rem = (rem << 1) ^ ((rem >> 11) * 0x1F25);
|
||||||
}
|
}
|
||||||
let data: u32 = (self.version as u32) << 12 | rem; // uint18
|
let data: u32 = (self.version as u32) << 12 | rem; // uint18
|
||||||
if data >> 18 != 0 {
|
assert!(data >> 18 == 0, "Assertion error");
|
||||||
panic!("Assertion error");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Draw two copies
|
// Draw two copies
|
||||||
for i in 0 .. 18 {
|
for i in 0 .. 18 {
|
||||||
|
@ -280,9 +272,7 @@ impl QrCode {
|
||||||
// Returns a new byte string representing the given data with the appropriate error correction
|
// Returns a new byte string representing the given data with the appropriate error correction
|
||||||
// codewords appended to it, based on this object's version and error correction level.
|
// codewords appended to it, based on this object's version and error correction level.
|
||||||
fn append_error_correction(&self, data: &[u8]) -> Vec<u8> {
|
fn append_error_correction(&self, data: &[u8]) -> Vec<u8> {
|
||||||
if data.len() != QrCode::get_num_data_codewords(self.version, self.errorcorrectionlevel) {
|
assert_eq!(data.len(), QrCode::get_num_data_codewords(self.version, self.errorcorrectionlevel), "Illegal argument");
|
||||||
panic!("Illegal argument");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Calculate parameter numbers
|
// Calculate parameter numbers
|
||||||
let numblocks: usize = QrCode::table_get(&QrCode_NUM_ERROR_CORRECTION_BLOCKS, self.version, self.errorcorrectionlevel);
|
let numblocks: usize = QrCode::table_get(&QrCode_NUM_ERROR_CORRECTION_BLOCKS, self.version, self.errorcorrectionlevel);
|
||||||
|
@ -324,9 +314,7 @@ impl QrCode {
|
||||||
// Draws the given sequence of 8-bit codewords (data and error correction) onto the entire
|
// Draws the given sequence of 8-bit codewords (data and error correction) onto the entire
|
||||||
// data area of this QR Code symbol. Function modules need to be marked off before this is called.
|
// data area of this QR Code symbol. Function modules need to be marked off before this is called.
|
||||||
fn draw_codewords(&mut self, data: &[u8]) {
|
fn draw_codewords(&mut self, data: &[u8]) {
|
||||||
if data.len() != QrCode::get_num_raw_data_modules(self.version) / 8 {
|
assert_eq!(data.len(), QrCode::get_num_raw_data_modules(self.version) / 8, "Illegal argument");
|
||||||
panic!("Illegal argument");
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut i: usize = 0; // Bit index into the data
|
let mut i: usize = 0; // Bit index into the data
|
||||||
// Do the funny zigzag scan
|
// Do the funny zigzag scan
|
||||||
|
@ -350,9 +338,7 @@ impl QrCode {
|
||||||
}
|
}
|
||||||
right -= 2;
|
right -= 2;
|
||||||
}
|
}
|
||||||
if i != data.len() * 8 {
|
assert_eq!(i, data.len() * 8, "Assertion error");
|
||||||
panic!("Assertion error");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -361,9 +347,7 @@ impl QrCode {
|
||||||
// This means it is possible to apply a mask, undo it, and try another mask. Note that a final
|
// This means it is possible to apply a mask, undo it, and try another mask. Note that a final
|
||||||
// well-formed QR Code symbol needs exactly one mask applied (not zero, not two, etc.).
|
// well-formed QR Code symbol needs exactly one mask applied (not zero, not two, etc.).
|
||||||
fn apply_mask(&mut self, mask: u8) {
|
fn apply_mask(&mut self, mask: u8) {
|
||||||
if mask > 7 {
|
assert!(mask <= 7, "Mask value out of range");
|
||||||
panic!("Mask value out of range");
|
|
||||||
}
|
|
||||||
for y in 0 .. self.size {
|
for y in 0 .. self.size {
|
||||||
for x in 0 .. self.size {
|
for x in 0 .. self.size {
|
||||||
let invert: bool = match mask {
|
let invert: bool = match mask {
|
||||||
|
@ -400,9 +384,7 @@ impl QrCode {
|
||||||
self.apply_mask(i); // Undoes the mask due to XOR
|
self.apply_mask(i); // Undoes the mask due to XOR
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if mask < 0 || mask > 7 {
|
assert!(0 <= mask && mask <= 7, "Assertion error");
|
||||||
panic!("Assertion error");
|
|
||||||
}
|
|
||||||
self.draw_format_bits(mask as u8); // Overwrite old format bits
|
self.draw_format_bits(mask as u8); // Overwrite old format bits
|
||||||
self.apply_mask(mask as u8); // Apply the final choice of mask
|
self.apply_mask(mask as u8); // Apply the final choice of mask
|
||||||
self.mask = mask as u8;
|
self.mask = mask as u8;
|
||||||
|
@ -507,9 +489,8 @@ impl QrCode {
|
||||||
// used on both the x and y axes. Each value in the resulting array is in the range [0, 177).
|
// used on both the x and y axes. Each value in the resulting array is in the range [0, 177).
|
||||||
// This stateless pure function could be implemented as table of 40 variable-length lists of unsigned bytes.
|
// This stateless pure function could be implemented as table of 40 variable-length lists of unsigned bytes.
|
||||||
fn get_alignment_pattern_positions(ver: u8) -> Vec<i32> {
|
fn get_alignment_pattern_positions(ver: u8) -> Vec<i32> {
|
||||||
if ver < 1 || ver > 40 {
|
assert!(1 <= ver && ver <= 40, "Version number out of range");
|
||||||
panic!("Version number out of range");
|
if ver == 1 {
|
||||||
} else if ver == 1 {
|
|
||||||
vec![]
|
vec![]
|
||||||
} else {
|
} else {
|
||||||
let numalign: i32 = (ver as i32) / 7 + 2;
|
let numalign: i32 = (ver as i32) / 7 + 2;
|
||||||
|
@ -534,9 +515,7 @@ impl QrCode {
|
||||||
// all function modules are excluded. This includes remainder bits, so it might not be a multiple of 8.
|
// all function modules are excluded. This includes remainder bits, so it might not be a multiple of 8.
|
||||||
// The result is in the range [208, 29648]. This could be implemented as a 40-entry lookup table.
|
// The result is in the range [208, 29648]. This could be implemented as a 40-entry lookup table.
|
||||||
fn get_num_raw_data_modules(ver: u8) -> usize {
|
fn get_num_raw_data_modules(ver: u8) -> usize {
|
||||||
if ver < 1 || ver > 40 {
|
assert!(1 <= ver && ver <= 40, "Version number out of range");
|
||||||
panic!("Version number out of range");
|
|
||||||
}
|
|
||||||
let mut result: usize = (16 * (ver as usize) + 128) * (ver as usize) + 64;
|
let mut result: usize = (16 * (ver as usize) + 128) * (ver as usize) + 64;
|
||||||
if ver >= 2 {
|
if ver >= 2 {
|
||||||
let numalign: usize = (ver as usize) / 7 + 2;
|
let numalign: usize = (ver as usize) / 7 + 2;
|
||||||
|
@ -553,9 +532,7 @@ impl QrCode {
|
||||||
// QR Code of the given version number and error correction level, with remainder bits discarded.
|
// QR Code of the given version number and error correction level, with remainder bits discarded.
|
||||||
// This stateless pure function could be implemented as a (40*4)-cell lookup table.
|
// This stateless pure function could be implemented as a (40*4)-cell lookup table.
|
||||||
fn get_num_data_codewords(ver: u8, ecl: &QrCodeEcc) -> usize {
|
fn get_num_data_codewords(ver: u8, ecl: &QrCodeEcc) -> usize {
|
||||||
if ver < 1 || ver > 40 {
|
assert!(1 <= ver && ver <= 40, "Version number out of range");
|
||||||
panic!("Version number out of range");
|
|
||||||
}
|
|
||||||
QrCode::get_num_raw_data_modules(ver) / 8
|
QrCode::get_num_raw_data_modules(ver) / 8
|
||||||
- QrCode::table_get(&QrCode_ECC_CODEWORDS_PER_BLOCK, ver, ecl)
|
- QrCode::table_get(&QrCode_ECC_CODEWORDS_PER_BLOCK, ver, ecl)
|
||||||
* QrCode::table_get(&QrCode_NUM_ERROR_CORRECTION_BLOCKS, ver, ecl)
|
* QrCode::table_get(&QrCode_NUM_ERROR_CORRECTION_BLOCKS, ver, ecl)
|
||||||
|
@ -632,9 +609,7 @@ struct ReedSolomonGenerator {
|
||||||
impl ReedSolomonGenerator {
|
impl ReedSolomonGenerator {
|
||||||
|
|
||||||
fn new(degree: usize) -> ReedSolomonGenerator {
|
fn new(degree: usize) -> ReedSolomonGenerator {
|
||||||
if degree < 1 || degree > 255 {
|
assert!(1 <= degree && degree <= 255, "Degree out of range");
|
||||||
panic!("Degree out of range");
|
|
||||||
}
|
|
||||||
// Start with the monomial x^0
|
// Start with the monomial x^0
|
||||||
let mut coefs = vec![0; degree - 1];
|
let mut coefs = vec![0; degree - 1];
|
||||||
coefs.push(1);
|
coefs.push(1);
|
||||||
|
@ -767,9 +742,7 @@ pub static QrSegmentMode_ECI : QrSegmentMode = QrSegmentMode { modebits:
|
||||||
|
|
||||||
// Appends the given number of bits of the given value to this sequence.
|
// Appends the given number of bits of the given value to this sequence.
|
||||||
fn append_bits(bb: &mut Vec<bool>, val: u32, len: u8) {
|
fn append_bits(bb: &mut Vec<bool>, val: u32, len: u8) {
|
||||||
if len < 32 && (val >> len) != 0 || len > 32 {
|
assert!(len < 32 && (val >> len) == 0 || len == 32, "Value out of range");
|
||||||
panic!("Value out of range");
|
|
||||||
}
|
|
||||||
for i in (0 .. len).rev() { // Append bit by bit
|
for i in (0 .. len).rev() { // Append bit by bit
|
||||||
bb.push((val >> i) & 1 != 0);
|
bb.push((val >> i) & 1 != 0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue