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.