diff options
| author | Ronald Kinard <[email protected]> | 2015-09-17 23:03:41 -0500 |
|---|---|---|
| committer | Ronald Kinard <[email protected]> | 2015-09-17 23:03:41 -0500 |
| commit | f822099d40d47d3535396bf533d346b40df2a369 (patch) | |
| tree | b0eb9b9be4d70612be84f923083a9a5cdda970c4 /src | |
| parent | Use From for Screen, Side (diff) | |
| download | ctru-rs-f822099d40d47d3535396bf533d346b40df2a369.tar.xz ctru-rs-f822099d40d47d3535396bf533d346b40df2a369.zip | |
Implement "Srv" struct.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 3 | ||||
| -rw-r--r-- | src/raw/srv.rs | 4 | ||||
| -rw-r--r-- | src/srv.rs | 29 |
3 files changed, 26 insertions, 10 deletions
@@ -13,6 +13,9 @@ pub mod srv; pub mod gfx; pub mod services; +pub use srv::Srv; +pub use gfx::Gfx; + #[lang = "stack_exhausted"] extern fn stack_exhausted() {} #[lang = "eh_personality"] extern fn eh_personality() {} #[lang = "panic_fmt"] fn panic_fmt() -> ! { loop {} } diff --git a/src/raw/srv.rs b/src/raw/srv.rs index f06a1b4..c327973 100644 --- a/src/raw/srv.rs +++ b/src/raw/srv.rs @@ -1,5 +1,5 @@ -use super::*; -use super::super::{Result, Handle}; +use ::raw::*; +use ::{Result, Handle}; extern "C" { pub fn srvInit() -> Result; @@ -1,13 +1,26 @@ -use ::Result; -use ::raw::srv; +use ::raw::srv::*; -pub fn init() -> Result { - unsafe { - return srv::srvInit(); +use core::marker::PhantomData; + +pub struct Srv { + pd: PhantomData<i32> +} + +impl Srv { + pub fn new() -> Result<Srv, i32> { + unsafe { + let r = srvInit(); + if r < 0 { + Err(r) + } else { + Ok(Srv { pd: PhantomData }) + } + } } } -pub fn exit() -> Result { - unsafe { - return srv::srvExit(); + +impl Drop for Srv { + fn drop(&mut self) { + unsafe { srvExit() }; } } |