From 1d16210de7026e946fb0325f4d44b1de3cfe4dcf Mon Sep 17 00:00:00 2001 From: Ivan Ukhov Date: Fri, 29 May 2015 13:50:05 -0400 Subject: [PATCH] Move Error and Result from lib.rs to separate modules --- src/error.rs | 8 +++++++ src/lib.rs | 60 ++++-------------------------------------------- src/result.rs | 48 ++++++++++++++++++++++++++++++++++++++ src/statement.rs | 2 +- 4 files changed, 62 insertions(+), 56 deletions(-) create mode 100644 src/error.rs create mode 100644 src/result.rs diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 0000000..3176fcf --- /dev/null +++ b/src/error.rs @@ -0,0 +1,8 @@ +use ResultCode; + +/// An error. +#[derive(Debug)] +pub struct Error { + pub code: ResultCode, + pub message: Option, +} diff --git a/src/lib.rs b/src/lib.rs index d2f6cd9..6319380 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,62 +3,8 @@ extern crate libc; extern crate sqlite3_sys as raw; -use libc::c_int; use std::path::Path; -/// A result. -pub type Result = std::result::Result; - -/// An error. -#[derive(Debug)] -pub struct Error { - pub code: ResultCode, - pub message: Option, -} - -/// A result code. -#[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub enum ResultCode { - Abort = raw::SQLITE_ABORT as isize, - Authorization = raw::SQLITE_AUTH as isize, - Busy = raw::SQLITE_BUSY as isize, - CantOpen = raw::SQLITE_CANTOPEN as isize, - Constraint = raw::SQLITE_CONSTRAINT as isize, - Corruption = raw::SQLITE_CORRUPT as isize, - Done = raw::SQLITE_DONE as isize, - Empty = raw::SQLITE_EMPTY as isize, - Error = raw::SQLITE_ERROR as isize, - Format = raw::SQLITE_FORMAT as isize, - Full = raw::SQLITE_FULL as isize, - Internal = raw::SQLITE_INTERNAL as isize, - Interruption = raw::SQLITE_INTERRUPT as isize, - IOError = raw::SQLITE_IOERR as isize, - Locked = raw::SQLITE_LOCKED as isize, - Mismatch = raw::SQLITE_MISMATCH as isize, - Misuse = raw::SQLITE_MISUSE as isize, - NoLargeFileSupport = raw::SQLITE_NOLFS as isize, - NoMemory = raw::SQLITE_NOMEM as isize, - NotDatabase = raw::SQLITE_NOTADB as isize, - NotFound = raw::SQLITE_NOTFOUND as isize, - Notice = raw::SQLITE_NOTICE as isize, - OK = raw::SQLITE_OK as isize, - Permission = raw::SQLITE_PERM as isize, - Protocol = raw::SQLITE_PROTOCOL as isize, - Range = raw::SQLITE_RANGE as isize, - ReadOnly = raw::SQLITE_READONLY as isize, - Row = raw::SQLITE_ROW as isize, - Schema = raw::SQLITE_SCHEMA as isize, - TooBig = raw::SQLITE_TOOBIG as isize, - Warning = raw::SQLITE_WARNING as isize, -} - -impl ResultCode { - #[inline] - fn from_raw(code: c_int) -> ResultCode { - unsafe { std::mem::transmute(code as i8) } - } -} - macro_rules! raise( ($message:expr) => ( return Err(::Error { code: ::ResultCode::Error, message: Some($message.to_string()) }) @@ -72,7 +18,7 @@ macro_rules! success( ($result:expr) => ( match $result { ::raw::SQLITE_OK => {}, - code => raise!(::ResultCode::from_raw(code), None), + code => raise!(::result::code_from_raw(code), None), } ); ); @@ -106,9 +52,13 @@ macro_rules! c_str_to_string( ); mod database; +mod error; +mod result; mod statement; pub use database::{Database, ExecuteCallback}; +pub use error::Error; +pub use result::{Result, ResultCode}; pub use statement::{Statement, Binding, Value}; /// Open a database. diff --git a/src/result.rs b/src/result.rs new file mode 100644 index 0000000..9e1e262 --- /dev/null +++ b/src/result.rs @@ -0,0 +1,48 @@ +use libc::c_int; + +use raw; +use Error; + +/// A result. +pub type Result = ::std::result::Result; + +/// A result code. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum ResultCode { + Abort = raw::SQLITE_ABORT as isize, + Authorization = raw::SQLITE_AUTH as isize, + Busy = raw::SQLITE_BUSY as isize, + CantOpen = raw::SQLITE_CANTOPEN as isize, + Constraint = raw::SQLITE_CONSTRAINT as isize, + Corruption = raw::SQLITE_CORRUPT as isize, + Done = raw::SQLITE_DONE as isize, + Empty = raw::SQLITE_EMPTY as isize, + Error = raw::SQLITE_ERROR as isize, + Format = raw::SQLITE_FORMAT as isize, + Full = raw::SQLITE_FULL as isize, + Internal = raw::SQLITE_INTERNAL as isize, + Interruption = raw::SQLITE_INTERRUPT as isize, + IOError = raw::SQLITE_IOERR as isize, + Locked = raw::SQLITE_LOCKED as isize, + Mismatch = raw::SQLITE_MISMATCH as isize, + Misuse = raw::SQLITE_MISUSE as isize, + NoLargeFileSupport = raw::SQLITE_NOLFS as isize, + NoMemory = raw::SQLITE_NOMEM as isize, + NotDatabase = raw::SQLITE_NOTADB as isize, + NotFound = raw::SQLITE_NOTFOUND as isize, + Notice = raw::SQLITE_NOTICE as isize, + OK = raw::SQLITE_OK as isize, + Permission = raw::SQLITE_PERM as isize, + Protocol = raw::SQLITE_PROTOCOL as isize, + Range = raw::SQLITE_RANGE as isize, + ReadOnly = raw::SQLITE_READONLY as isize, + Row = raw::SQLITE_ROW as isize, + Schema = raw::SQLITE_SCHEMA as isize, + TooBig = raw::SQLITE_TOOBIG as isize, + Warning = raw::SQLITE_WARNING as isize, +} + +#[inline] +pub fn code_from_raw(code: c_int) -> ResultCode { + unsafe { ::std::mem::transmute(code as i8) } +} diff --git a/src/statement.rs b/src/statement.rs index afd4d84..ee30a86 100644 --- a/src/statement.rs +++ b/src/statement.rs @@ -58,7 +58,7 @@ impl<'l> Statement<'l> { /// Take a step. #[inline] pub fn step(&mut self) -> ResultCode { - unsafe { ResultCode::from_raw(raw::sqlite3_step(self.raw)) } + unsafe { ::result::code_from_raw(raw::sqlite3_step(self.raw)) } } /// Reset.