use std::ffi::CString;
use libc::size_t;
use crate::metadata_json::MetadataJsonRoot;
pub struct JsonOpaque {
pub metadata_root: Option<MetadataJsonRoot>,
pub error: Option<CString>,
}
#[repr(C)]
pub struct Data {
pub data: *const u8,
pub len: size_t,
}
impl Data {
pub unsafe fn free(&self) {
unsafe {
Vec::from_raw_parts(self.data as *mut u8, self.len, self.len);
}
}
}
impl From<Vec<u8>> for Data {
fn from(buf: Vec<u8>) -> Self {
Data {
len: buf.len(),
data: Box::into_raw(buf.into_boxed_slice()) as *const u8,
}
}
}