Change endianness from boolean type to enum

This commit is contained in:
RinHizakura committed 2023-04-24 22:59:19 +08:00
1 parent dd601e4792
commit 08b903270f
2 files changed
+22 -13

No files matched your search

+8 -4
View File
@@ -17,7 +17,7 @@ use thiserror::Error as ThisError;
use terminal_size::terminal_size;
use hexyl::{Base, BorderStyle, Input, PrinterBuilder};
use hexyl::{Base, BorderStyle, Endianness, Input, PrinterBuilder};
const DEFAULT_BLOCK_SIZE: i64 = 512;
@@ -434,9 +434,13 @@ fn run() -> Result<()> {
)
};
let little_endian_dump = *matches
let endianness = match *matches
.get_one::<bool>("little_endian_dump")
.unwrap_or(&false);
.unwrap_or(&false)
{
true => Endianness::Little,
false => Endianness::Big,
};
let stdout = io::stdout();
let mut stdout_lock = BufWriter::new(stdout.lock());
@@ -449,7 +453,7 @@ fn run() -> Result<()> {
.num_panels(panels)
.group_size(group_size)
.with_base(base)
.little_endian_dump(little_endian_dump)
.endianness(endianness)
.build();
printer.display_offset(skip_offset + display_offset);
printer.print_all(&mut reader).map_err(|e| anyhow!(e))?;
+14 -9
View File
@@ -29,6 +29,11 @@ pub enum ByteCategory {
NonAscii,
}
pub enum Endianness {
Little,
Big,
}
#[derive(PartialEq)]
enum Squeezer {
Print,
@@ -159,7 +164,7 @@ pub struct PrinterBuilder<'a, Writer: Write> {
panels: u64,
group_size: u8,
base: Base,
little_endian_dump: bool,
endianness: Endianness,
}
impl<'a, Writer: Write> PrinterBuilder<'a, Writer> {
@@ -174,7 +179,7 @@ impl<'a, Writer: Write> PrinterBuilder<'a, Writer> {
panels: 2,
group_size: 1,
base: Base::Hexadecimal,
little_endian_dump: false,
endianness: Endianness::Big,
}
}
@@ -218,8 +223,8 @@ impl<'a, Writer: Write> PrinterBuilder<'a, Writer> {
self
}
pub fn little_endian_dump(mut self, little_endian_dump: bool) -> Self {
self.little_endian_dump = little_endian_dump;
pub fn endianness(mut self, endianness: Endianness) -> Self {
self.endianness = endianness;
self
}
@@ -234,7 +239,7 @@ impl<'a, Writer: Write> PrinterBuilder<'a, Writer> {
self.panels,
self.group_size,
self.base,
self.little_endian_dump,
self.endianness,
)
}
}
@@ -263,7 +268,7 @@ pub struct Printer<'a, Writer: Write> {
/// The number of digits used to write the base.
base_digits: u8,
/// Whether to print the bytes in little endian
little_endian_dump: bool,
endianness: Endianness,
}
impl<'a, Writer: Write> Printer<'a, Writer> {
@@ -277,7 +282,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
panels: u64,
group_size: u8,
base: Base,
little_endian_dump: bool,
endianness: Endianness,
) -> Printer<'a, Writer> {
Printer {
idx: 0,
@@ -315,7 +320,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
Base::Decimal => 3,
Base::Hexadecimal => 2,
},
little_endian_dump,
endianness,
}
}
@@ -550,7 +555,7 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
pub fn print_bytes(&mut self) -> io::Result<()> {
let mut buf = self.line_buf.clone();
if self.little_endian_dump {
if matches!(self.endianness, Endianness::Little) {
// reorder the buffer to the little endian format
self.reorder_buf_to_le(&mut buf);
};