use core::ptr::NonNull;
use crate::ffi::{PY_SSIZE_T_MAX, Py_ssize_t};
use crate::platform::prelude::*;
#[cfg(wip_feature_std)]
macro_rules! pyo3_exception {
($doc: expr, $name: ident, $base: ty) => {
#[doc = $doc]
#[repr(transparent)]
pub struct $name($crate::PyAny);
$crate::impl_exception_boilerplate!($name);
$crate::create_exception_type_object!(pyo3_runtime, $name, $base, Some($doc));
};
}
pub(crate) fn get_ssize_index(index: usize) -> Py_ssize_t {
index.min(PY_SSIZE_T_MAX as usize) as Py_ssize_t
}
pub(crate) fn box_into_non_null<T>(b: Box<T>) -> NonNull<T> {
NonNull::from(Box::leak(b))
}
pub(crate) const fn array_ptr_as_mut<T, const N: usize>(ptr: *mut [T; N]) -> *mut T {
ptr.cast()
}