Module wrappers

Source
Expand description

This is responsible for generating the C functions that act as wrappers of the exported Rust functions.

extendr relies on the .Call-interface In short, it is necessary the the signature of the C-function have SEXP as the type for return type, and argument types.

For instance, if your function returns nothing, the return type is not allowed to be void, instead SEXP must be used, and one should return R_NilValue.

§R wrappers

Within R, you may call rextendr::document() to generate R functions, that use the .Call-interface, to call the wrapped Rust functions.

You may also manually implement these wrappers, in order to do special type-checking, or other annotation, that could be more convenient to do on the R-side. The C-functions are named according to "{WRAP_PREFIX}{prefix}{mod_name}". See WRAP_PREFIX, and note that prefix is set specifically for methods in extendr-impl blocks, while for functions have no prefix.

Constants§

META_PREFIX
WRAP_PREFIX

Functions§

get_doc_string
get_named_lit 🔒
get_return_type
make_function_wrappers 🔒
mangled_type_name
sanitize_identifier 🔒
translate_actual 🔒
translate_formal
translate_meta_arg 🔒
translate_only_alias 🔒
Returns only the alias from a function argument.
translate_to_robj 🔒
Convert SEXP arguments into Robj. This maintains the lifetime of references.
type_name
Return a simplified type name that will be meaningful to R. Defaults to a digest.