ejdb 0.4.1

Bindings for EJDB, and embedded JSON database
Documentation
use std::ops::{Deref, DerefMut};
use std::slice;

use ejdb_sys;

pub struct TCXString(*mut ejdb_sys::TCXSTR);

impl Drop for TCXString {
    fn drop(&mut self) {
        unsafe {
            ejdb_sys::tcxstrdel(self.0);
        }
    }
}

impl TCXString {
    #[inline]
    pub fn new() -> TCXString {
        TCXString(unsafe { ejdb_sys::tcxstrnew() })
    }

    #[inline]
    pub fn as_raw(&self) -> *mut ejdb_sys::TCXSTR {
        self.0
    }
}

impl Deref for TCXString {
    type Target = [u8];

    fn deref(&self) -> &[u8] {
        unsafe { slice::from_raw_parts((*self.0).ptr as *const _, (*self.0).size as usize) }
    }
}

impl DerefMut for TCXString {
    fn deref_mut(&mut self) -> &mut [u8] {
        unsafe { slice::from_raw_parts_mut((*self.0).ptr as *mut _, (*self.0).size as usize) }
    }
}