diff options
author | Jesse Luehrs <doy@tozt.net> | 2016-04-27 03:15:21 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2016-04-27 03:15:21 -0400 |
commit | bec239655c3d23db8a19b55cf08b232c5026a5f2 (patch) | |
tree | cd431d6adc40f65c607da54dab219cfd47d75566 /src/screen.rs | |
parent | ea0444f2bb0ad94431a597e29f15d61cfa237508 (diff) | |
download | vt100-rust-bec239655c3d23db8a19b55cf08b232c5026a5f2.tar.gz vt100-rust-bec239655c3d23db8a19b55cf08b232c5026a5f2.zip |
remove some unnecessary wrappers
Diffstat (limited to 'src/screen.rs')
-rw-r--r-- | src/screen.rs | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/screen.rs b/src/screen.rs index d3e026f..074feff 100644 --- a/src/screen.rs +++ b/src/screen.rs @@ -7,6 +7,17 @@ use types; pub struct Screen(*mut types::ScreenImpl); +#[repr(C)] +struct ScreenGridPrefix { + cur: types::Loc, + max: types::Loc, +} + +#[repr(C)] +struct ScreenImplPrefix { + grid: *mut ScreenGridPrefix, +} + impl Screen { pub fn new(rows: i32, cols: i32) -> Screen { let screen_impl = unsafe { @@ -17,12 +28,18 @@ impl Screen { pub fn rows(&self) -> i32 { let Screen(screen_impl) = *self; - unsafe { ffi::vt100_wrapper_rows(screen_impl) } + let prefix: *mut ScreenImplPrefix = unsafe { + std::mem::transmute(screen_impl) + }; + unsafe { (*(*prefix).grid).max.row } } pub fn cols(&self) -> i32 { let Screen(screen_impl) = *self; - unsafe { ffi::vt100_wrapper_cols(screen_impl) } + let prefix: *mut ScreenImplPrefix = unsafe { + std::mem::transmute(screen_impl) + }; + unsafe { (*(*prefix).grid).max.col } } pub fn set_window_size(&self, rows: i32, cols: i32) { |