#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(dead_code)]
#![allow(unnecessary_transmutes)]
#![allow(clippy::all)]
use std::ops::{Deref, DerefMut, Index};
#[cfg(feature = "backend-sdl3")]
pub use sdl3_sys;
#[cfg(feature = "backend-sdl3")]
use sdl3_sys::everything::*;
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
impl<T> Index<usize> for ImVector<T> {
type Output = T;
fn index(&self, index: usize) -> &Self::Output {
if index >= self.Size as usize {
panic!("ImVector out of bounds");
}
unsafe { &*self.Data.add(index) }
}
}
impl<T> Deref for ImVector<T> {
type Target = [T];
fn deref(&self) -> &[T] {
unsafe {
if self.Size == 0 {
&[]
} else {
std::slice::from_raw_parts(self.Data, self.Size as usize)
}
}
}
}
impl<T> DerefMut for ImVector<T> {
fn deref_mut(&mut self) -> &mut [T] {
unsafe {
if self.Size == 0 {
&mut []
} else {
std::slice::from_raw_parts_mut(self.Data, self.Size as usize)
}
}
}
}
impl<'a, T> IntoIterator for &'a ImVector<T> {
type Item = &'a T;
type IntoIter = std::slice::Iter<'a, T>;
fn into_iter(self) -> Self::IntoIter {
self.deref().into_iter()
}
}
impl<'a, T> IntoIterator for &'a mut ImVector<T> {
type Item = &'a mut T;
type IntoIter = std::slice::IterMut<'a, T>;
fn into_iter(self) -> Self::IntoIter {
self.deref_mut().into_iter()
}
}
#[cfg(target_env = "msvc")]
impl From<ImVec2_rr> for ImVec2 {
fn from(rr: ImVec2_rr) -> ImVec2 {
ImVec2 { x: rr.x, y: rr.y }
}
}