| #![allow( |
| clippy::too_many_arguments, |
| clippy::cognitive_complexity, |
| clippy::wrong_self_convention |
| )] |
| #[macro_use] |
| mod macros; |
| pub use macros::*; |
| mod aliases; |
| pub use aliases::*; |
| mod bitflags; |
| pub use bitflags::*; |
| #[cfg(feature = "debug")] |
| mod const_debugs; |
| mod constants; |
| pub use constants::*; |
| mod definitions; |
| pub use definitions::*; |
| mod enums; |
| pub use enums::*; |
| mod extensions; |
| pub use extensions::*; |
| mod feature_extensions; |
| pub use feature_extensions::*; |
| mod features; |
| pub use features::*; |
| mod prelude; |
| pub use prelude::*; |
| /// Native bindings from Vulkan headers, generated by bindgen |
| #[allow(clippy::useless_transmute, nonstandard_style)] |
| pub mod native; |
| mod platform_types; |
| pub use platform_types::*; |
| /// Iterates through the pointer chain. Includes the item that is passed into the function. |
| /// Stops at the last [`BaseOutStructure`] that has a null [`BaseOutStructure::p_next`] field. |
| pub(crate) unsafe fn ptr_chain_iter<T>(ptr: &mut T) -> impl Iterator<Item = *mut BaseOutStructure> { |
| let ptr = <*mut T>::cast::<BaseOutStructure>(ptr); |
| (0..).scan(ptr, |p_ptr, _| { |
| if p_ptr.is_null() { |
| return None; |
| } |
| let n_ptr = (**p_ptr).p_next; |
| let old = *p_ptr; |
| *p_ptr = n_ptr; |
| Some(old) |
| }) |
| } |
| pub trait Handle { |
| const TYPE: ObjectType; |
| fn as_raw(self) -> u64; |
| fn from_raw(_: u64) -> Self; |
| } |