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,
}
block-sys
is deprecated. Use block2::ffi
insteadFields§
§isa: *const Class
block-sys
is deprecated. Use block2::ffi
insteadClass 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
block-sys
is deprecated. Use block2::ffi
insteadFlags.
See the block_flags
enumerated type for possible values.
Contains ref count in Apple and ObjFW.
reserved: i32
block-sys
is deprecated. Use block2::ffi
insteadReserved - 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()>
block-sys
is deprecated. Use block2::ffi
insteadThe 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
block-sys
is deprecated. Use block2::ffi
insteadThe 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 since all of these start with Block_descriptor_header
, it is
always safe to reinterpret this pointer as that.