flecs_ecs 0.2.2

Rust API for the C/CPP flecs ECS library <https://github.com/SanderMertens/flecs>
Documentation
use crate::core::*;
use crate::sys;

pub trait IntoTable {
    fn table_ptr_mut(&self) -> *mut sys::ecs_table_t;
}

impl IntoTable for *mut sys::ecs_table_t {
    #[inline]
    fn table_ptr_mut(&self) -> *mut sys::ecs_table_t {
        *self
    }
}

impl IntoTable for *const sys::ecs_table_t {
    #[inline]
    fn table_ptr_mut(&self) -> *mut sys::ecs_table_t {
        *self as *mut sys::ecs_table_t
    }
}

impl IntoTable for Table<'_> {
    #[inline]
    fn table_ptr_mut(&self) -> *mut sys::ecs_table_t {
        self.table.as_ptr()
    }
}

impl IntoTable for TableRange<'_> {
    #[inline]
    fn table_ptr_mut(&self) -> *mut sys::ecs_table_t {
        self.table.table.as_ptr()
    }
}

pub trait IntoTableRange {
    fn range(&self) -> TableRange<'_>;
    fn range_raw(&self) -> sys::ecs_table_range_t;
}

impl IntoTableRange for TableRange<'_> {
    #[inline]
    fn range(&self) -> TableRange<'_> {
        *self
    }

    #[inline]
    fn range_raw(&self) -> sys::ecs_table_range_t {
        sys::ecs_table_range_t {
            table: self.table.table.as_ptr(),
            offset: self.offset(),
            count: self.count(),
        }
    }
}

impl IntoTableRange for Table<'_> {
    #[inline]
    fn range(&self) -> TableRange<'_> {
        TableRange::new(*self, 0, self.count())
    }

    #[inline]
    fn range_raw(&self) -> sys::ecs_table_range_t {
        sys::ecs_table_range_t {
            table: self.table.as_ptr(),
            offset: 0,
            count: self.count(),
        }
    }
}