pub mod include {
pub use dexalt_lib_sys::clist::*;
}
use std::{os::raw, ptr};
pub struct RawCList {
pub inner: include::CList,
}
impl RawCList {
pub fn new(size: raw::c_int) -> Self {
let mut list = include::CList {
data: ptr::null_mut(),
size: 0,
len: 0,
locked: false,
next: ptr::null_mut(),
};
unsafe {
include::CList_init(&mut list, size);
}
RawCList {
inner: list
}
}
pub fn free(&mut self) {
unsafe {
include::CList_free(&mut self.inner);
}
}
pub fn get(&mut self, index: raw::c_int) -> *mut raw::c_void {
unsafe {
include::CList_get(&mut self.inner, index)
}
}
pub fn append(&mut self, data: *mut raw::c_void) {
unsafe {
include::CList_append(&mut self.inner, data);
}
}
pub fn extend(&mut self, list: *mut include::CList) {
unsafe {
include::CList_extend(&mut self.inner, list);
}
}
pub fn push(&mut self, array: *mut raw::c_void) {
unsafe {
include::CList_push(&mut self.inner, array);
}
}
pub fn remove(&mut self, data: *mut raw::c_void) {
unsafe {
include::CList_remove(&mut self.inner, data);
}
}
pub fn pop(&mut self, index: raw::c_int) {
unsafe {
include::CList_pop(&mut self.inner, index);
}
}
pub fn to_array(&mut self, array: *mut *mut raw::c_void) -> *mut raw::c_void {
unsafe {
include::CList_to_array(&mut self.inner, array)
}
}
pub fn to_array_new(&mut self) -> *mut raw::c_void {
unsafe {
include::CList_to_array_new(&mut self.inner)
}
}
pub fn size(&mut self) -> raw::c_int {
unsafe {
include::CList_size(&mut self.inner)
}
}
pub fn len(&mut self) -> raw::c_int {
unsafe {
include::CList_len(&mut self.inner)
}
}
pub fn lock(&mut self) {
unsafe {
include::CList_lock(&mut self.inner)
}
}
pub fn unlock(&mut self) {
unsafe {
include::CList_unlock(&mut self.inner)
}
}
pub fn is_locked(&mut self) -> bool {
unsafe {
include::CList_is_locked(&mut self.inner)
}
}
pub fn get_data(&self) -> *mut raw::c_void {
self.inner.data
}
pub fn get_next(&self) -> *mut include::CList {
self.inner.next
}
}