Skip to main content

mx_wrap

Function mx_wrap 

Source
pub unsafe fn mx_wrap(ptr: *mut mx_erased) -> SEXP
Expand description

Wrap an erased object pointer in an R external pointer.

Creates an R EXTPTRSXP that wraps the given erased object. The external pointer’s finalizer will call the object’s drop function when garbage collected.

§Arguments

  • ptr - Pointer to erased object (must be heap-allocated)

§Returns

R external pointer (EXTPTRSXP) containing the erased object.

§Safety

  • ptr must be a valid pointer to mx_erased
  • ptr must be heap-allocated (will be freed by finalizer)
  • Must be called on R’s main thread
  • mx_abi_register() must have been called (via miniextendr_init!)

§Example

// In constructor
let obj = Box::into_raw(Box::new(MyErasedWrapper::new(data)));
let sexp = unsafe { mx_wrap(obj.cast::<mx_erased>()) };