aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2018-09-23 19:17:16 -0400
committerJesse Luehrs <doy@tozt.net>2018-09-23 19:17:16 -0400
commit0cd015222e80497c823fc0eadc8f55c45860bade (patch)
treefaf7f729454b299783b4b62733d84eabf32bfb3e
parent055e326906a7d5519cf28f37b6ec17ecbac8bdad (diff)
downloadvt100-rust-0cd015222e80497c823fc0eadc8f55c45860bade.tar.gz
vt100-rust-0cd015222e80497c823fc0eadc8f55c45860bade.zip
clippy
-rw-r--r--src/cell.rs28
-rw-r--r--src/lib.rs6
-rw-r--r--src/screen.rs58
3 files changed, 28 insertions, 64 deletions
diff --git a/src/cell.rs b/src/cell.rs
index abec58f..bf50817 100644
--- a/src/cell.rs
+++ b/src/cell.rs
@@ -21,9 +21,7 @@ impl Cell {
pub fn contents(&self) -> &str {
let Cell(cell_impl) = *self;
- let prefix: *mut CellPrefix = unsafe {
- std::mem::transmute(cell_impl)
- };
+ let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix;
let contents: &[u8] = unsafe {
std::slice::from_raw_parts(
&(*prefix).contents as *const i8 as *const u8,
@@ -35,18 +33,14 @@ impl Cell {
pub fn fgcolor(&self) -> color::Color {
let Cell(cell_impl) = *self;
- let prefix: *mut CellPrefix = unsafe {
- std::mem::transmute(cell_impl)
- };
+ let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix;
let attrs = unsafe { &(*prefix).attrs };
color::Color::new(&attrs.fgcolor)
}
pub fn bgcolor(&self) -> color::Color {
let Cell(cell_impl) = *self;
- let prefix: *mut CellPrefix = unsafe {
- std::mem::transmute(cell_impl)
- };
+ let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix;
let attrs = unsafe { &(*prefix).attrs };
color::Color::new(&attrs.bgcolor)
}
@@ -58,9 +52,7 @@ impl Cell {
pub fn bold(&self) -> bool {
let Cell(cell_impl) = *self;
- let prefix: *mut CellPrefix = unsafe {
- std::mem::transmute(cell_impl)
- };
+ let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix;
unsafe {
ffi::vt100_wrapper_cell_attrs_bold(&mut (*prefix).attrs) != 0
}
@@ -68,9 +60,7 @@ impl Cell {
pub fn italic(&self) -> bool {
let Cell(cell_impl) = *self;
- let prefix: *mut CellPrefix = unsafe {
- std::mem::transmute(cell_impl)
- };
+ let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix;
unsafe {
ffi::vt100_wrapper_cell_attrs_italic(&mut (*prefix).attrs) != 0
}
@@ -78,9 +68,7 @@ impl Cell {
pub fn underline(&self) -> bool {
let Cell(cell_impl) = *self;
- let prefix: *mut CellPrefix = unsafe {
- std::mem::transmute(cell_impl)
- };
+ let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix;
unsafe {
ffi::vt100_wrapper_cell_attrs_underline(&mut (*prefix).attrs) != 0
}
@@ -88,9 +76,7 @@ impl Cell {
pub fn inverse(&self) -> bool {
let Cell(cell_impl) = *self;
- let prefix: *mut CellPrefix = unsafe {
- std::mem::transmute(cell_impl)
- };
+ let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix;
unsafe {
ffi::vt100_wrapper_cell_attrs_inverse(&mut (*prefix).attrs) != 0
}
diff --git a/src/lib.rs b/src/lib.rs
index 58d9b2c..5134d43 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,3 +1,9 @@
+#![cfg_attr(feature = "cargo-clippy", feature(tool_lints))]
+// we use empty enums to represent opaque c pointers, but we don't have a way
+// to indicate that those pointers do actually have additional alignment
+// restrictions, so casting them to their prefixes is actually safe
+#![cfg_attr(feature = "cargo-clippy", allow(clippy::cast_ptr_alignment))]
+
extern crate libc;
mod cell;
diff --git a/src/screen.rs b/src/screen.rs
index 64226c6..58986c7 100644
--- a/src/screen.rs
+++ b/src/screen.rs
@@ -49,17 +49,13 @@ impl Screen {
pub fn rows(&self) -> i32 {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
unsafe { (*(*prefix).grid).max.row }
}
pub fn cols(&self) -> i32 {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
unsafe { (*(*prefix).grid).max.col }
}
@@ -91,9 +87,7 @@ impl Screen {
col_end: i32
) -> String {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
// XXX not super happy about this - can we maybe disable the
// optimization in libvt100 if no scrollback at all was requested?
@@ -148,9 +142,7 @@ impl Screen {
col_end: i32
) -> String {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
let grid_max_row = unsafe { (*(*prefix).grid).max.row };
let row_count = unsafe { (*(*prefix).grid).row_count };
@@ -208,9 +200,7 @@ impl Screen {
pub fn cursor_position(&self) -> (i32, i32) {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
unsafe {
((*(*prefix).grid).cur.row, (*(*prefix).grid).cur.col)
}
@@ -218,9 +208,7 @@ impl Screen {
pub fn title(&self) -> Option<&str> {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
if unsafe { (*prefix).title }.is_null() {
None
}
@@ -237,9 +225,7 @@ impl Screen {
pub fn icon_name(&self) -> Option<&str> {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
if unsafe { (*prefix).icon_name }.is_null() {
None
}
@@ -256,27 +242,21 @@ impl Screen {
pub fn fgcolor(&self) -> color::Color {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
let attrs = unsafe { &(*prefix).attrs };
color::Color::new(&attrs.fgcolor)
}
pub fn bgcolor(&self) -> color::Color {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
let attrs = unsafe { &(*prefix).attrs };
color::Color::new(&attrs.bgcolor)
}
pub fn bold(&self) -> bool {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
unsafe {
ffi::vt100_wrapper_cell_attrs_bold(&mut (*prefix).attrs) != 0
}
@@ -284,9 +264,7 @@ impl Screen {
pub fn italic(&self) -> bool {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
unsafe {
ffi::vt100_wrapper_cell_attrs_italic(&mut (*prefix).attrs) != 0
}
@@ -294,9 +272,7 @@ impl Screen {
pub fn underline(&self) -> bool {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
unsafe {
ffi::vt100_wrapper_cell_attrs_underline(&mut (*prefix).attrs) != 0
}
@@ -304,9 +280,7 @@ impl Screen {
pub fn inverse(&self) -> bool {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
unsafe {
ffi::vt100_wrapper_cell_attrs_inverse(&mut (*prefix).attrs) != 0
}
@@ -370,10 +344,8 @@ impl Screen {
pub fn alternate_buffer_active(&self) -> bool {
let Screen(screen_impl) = *self;
- let prefix: *mut ScreenPrefix = unsafe {
- std::mem::transmute(screen_impl)
- };
- return !unsafe { (*prefix).alternate }.is_null();
+ let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix;
+ !unsafe { (*prefix).alternate }.is_null()
}
pub fn check_visual_bell(&self) -> bool {