use core::ffi::c_int;
use core::fmt;
use crate::ffi;
#[derive(Clone, Copy, Eq, PartialEq)]
#[non_exhaustive]
pub struct ValueType {
raw: c_int,
}
impl ValueType {
#[inline]
pub(crate) const fn new(raw: c_int) -> Self {
Self { raw }
}
pub const INTEGER: Self = Self::new(ffi::SQLITE_INTEGER);
pub const FLOAT: Self = Self::new(ffi::SQLITE_FLOAT);
pub const TEXT: Self = Self::new(ffi::SQLITE_TEXT);
pub const BLOB: Self = Self::new(ffi::SQLITE_BLOB);
pub const NULL: Self = Self::new(ffi::SQLITE_NULL);
}
impl fmt::Display for ValueType {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self.raw {
ffi::SQLITE_BLOB => write!(f, "BLOB"),
ffi::SQLITE_TEXT => write!(f, "TEXT"),
ffi::SQLITE_FLOAT => write!(f, "FLOAT"),
ffi::SQLITE_INTEGER => write!(f, "INTEGER"),
ffi::SQLITE_NULL => write!(f, "NULL"),
raw => write!(f, "UNKNOWN({raw})"),
}
}
}
impl fmt::Debug for ValueType {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self.raw {
ffi::SQLITE_BLOB => write!(f, "BLOB"),
ffi::SQLITE_TEXT => write!(f, "TEXT"),
ffi::SQLITE_FLOAT => write!(f, "FLOAT"),
ffi::SQLITE_INTEGER => write!(f, "INTEGER"),
ffi::SQLITE_NULL => write!(f, "NULL"),
raw => write!(f, "UNKNOWN({raw})"),
}
}
}