#[repr(C)]pub struct PyASCIIObject {
pub ob_base: PyObject,
pub length: isize,
pub hash: isize,
pub state: u32,
}Fields§
§ob_base: PyObject§length: isize§hash: isize§state: u32A bit field with various properties.
Rust doesn’t expose bitfields. So we have accessor functions for retrieving values.
Before 3.12: 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;
3.12, and 3.13 unsigned int interned:2; // SSTATE_* constants. unsigned int kind:3; // PyUnicode_*_KIND constants. unsigned int compact:1; unsigned int ascii:1; unsigned int statically_allocated:1; unsigned int :24; on 3.14 and higher PyO3 doesn’t access the internal state
Implementations§
Source§impl PyASCIIObject
Interacting with the bitfield is not actually well-defined, so we mark these APIs unsafe.
impl PyASCIIObject
Interacting with the bitfield is not actually well-defined, so we mark these APIs unsafe.
Sourcepub unsafe fn interned(&self) -> u32
pub unsafe fn interned(&self) -> u32
Get the interned field of the PyASCIIObject state bitfield.
Returns one of: SSTATE_NOT_INTERNED, SSTATE_INTERNED_MORTAL,
SSTATE_INTERNED_IMMORTAL, or SSTATE_INTERNED_IMMORTAL_STATIC.
Sourcepub unsafe fn set_interned(&mut self, val: u32)
pub unsafe fn set_interned(&mut self, val: u32)
Set the interned field of the PyASCIIObject state bitfield.
Calling this function with an argument that is not SSTATE_NOT_INTERNED,
SSTATE_INTERNED_MORTAL, SSTATE_INTERNED_IMMORTAL, or
SSTATE_INTERNED_IMMORTAL_STATIC is invalid.
Sourcepub unsafe fn kind(&self) -> u32
pub unsafe fn kind(&self) -> u32
Get the kind field of the PyASCIIObject state bitfield.
Returns one of:
PyUnicode_1BYTE_KIND, PyUnicode_2BYTE_KIND, or PyUnicode_4BYTE_KIND.
Sourcepub unsafe fn set_kind(&mut self, val: u32)
pub unsafe fn set_kind(&mut self, val: u32)
Set the kind field of the PyASCIIObject state bitfield.
Calling this function with an argument that is not
PyUnicode_1BYTE_KIND, PyUnicode_2BYTE_KIND, or PyUnicode_4BYTE_KIND is invalid.
Sourcepub unsafe fn compact(&self) -> u32
pub unsafe fn compact(&self) -> u32
Get the compact field of the PyASCIIObject state bitfield.
Returns either 0 or 1.
Sourcepub unsafe fn set_compact(&mut self, val: u32)
pub unsafe fn set_compact(&mut self, val: u32)
Set the compact flag of the PyASCIIObject state bitfield.
Calling this function with an argument that is neither 0 nor 1 is invalid.
Sourcepub unsafe fn ascii(&self) -> u32
pub unsafe fn ascii(&self) -> u32
Get the ascii field of the PyASCIIObject state bitfield.
Returns either 0 or 1.
Sourcepub unsafe fn set_ascii(&mut self, val: u32)
pub unsafe fn set_ascii(&mut self, val: u32)
Set the ascii flag of the PyASCIIObject state bitfield.
Calling this function with an argument that is neither 0 nor 1 is invalid.
Sourcepub unsafe fn statically_allocated(&self) -> u32
pub unsafe fn statically_allocated(&self) -> u32
Get the statically_allocated field of the PyASCIIObject state bitfield.
Returns either 0 or 1.
Sourcepub unsafe fn set_statically_allocated(&mut self, val: u32)
pub unsafe fn set_statically_allocated(&mut self, val: u32)
Set the statically_allocated flag of the PyASCIIObject state bitfield.
Calling this function with an argument that is neither 0 nor 1 is invalid.