Struct block_sys::Block_layout
source · [−]#[repr(C)]pub struct Block_layout {
pub isa: *const Class,
pub flags: block_flags,
pub reserved: i32,
pub invoke: Option<unsafe extern "C" fn()>,
pub descriptor: *const c_void,
}
Fields
isa: *const Class
Class pointer. Always initialised to &_NSConcreteStackBlock for blocks that are created on the stack or &_NSConcreteGlobalBlock for blocks that are created in global storage.
flags: block_flags
Flags.
See the block_flags
enumerated type for possible values.
Contains ref count in Apple and ObjFW.
reserved: i32
Reserved - always initialised to 0 by the compiler (but this is not said in the specification).
Used for the reference count in GNUStep and WinObjC.
invoke: Option<unsafe extern "C" fn()>
The function that implements the block. The first argument is this structure, the subsequent arguments are the block’s explicit parameters. If the BLOCK_USE_SRET & BLOCK_HAS_SIGNATURE flag is set, there is an additional hidden argument, which is a pointer to the space on the stack allocated to hold the return value.
descriptor: *const c_void
The block’s descriptor. The actual type of this is:
match (BLOCK_HAS_COPY_DISPOSE, BLOCK_HAS_SIGNATURE) {
(false, false) => Block_descriptor_header,
(true, false) => Block_descriptor,
(false, true) => Block_descriptor_basic,
(true, true) => Block_descriptor_with_signature,
}
But it is safe to access this through just Block_descriptor_header
.
Auto Trait Implementations
impl !RefUnwindSafe for Block_layout
impl !Send for Block_layout
impl !Sync for Block_layout
impl Unpin for Block_layout
impl !UnwindSafe for Block_layout
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more