Struct pyo3::ffi::PyASCIIObject
source · pub struct PyASCIIObject {
pub ob_base: PyObject,
pub length: isize,
pub hash: isize,
pub state: u32,
pub wstr: *mut i32,
}
Fields§
§ob_base: PyObject
§length: isize
§hash: isize
Available on non-
§PyPy
only.state: u32
A bit field with various properties.
Rust doesn’t expose bitfields. So we have accessor functions for retrieving values.
unsigned int interned:2; // SSTATE_* constants. unsigned int kind:3; // PyUnicode_*_KIND constants. unsigned int compact:1; unsigned int ascii:1; unsigned int ready:1; unsigned int :24;
wstr: *mut i32
Implementations§
source§impl PyASCIIObject
impl PyASCIIObject
Interacting with the bitfield is not actually well-defined, so we mark these APIs unsafe.
In addition, they are disabled on big-endian architectures to restrict this to most “common” platforms, which are at least tested on CI and appear to be sound.
pub unsafe fn interned(&self) -> u32
Available on little-endian only.
pub unsafe fn kind(&self) -> u32
Available on little-endian only.
pub unsafe fn compact(&self) -> u32
Available on little-endian only.
pub unsafe fn ascii(&self) -> u32
Available on little-endian only.
pub unsafe fn ready(&self) -> u32
Available on little-endian only.