Skip to main content

DotCallBuilder

Struct DotCallBuilder 

Source
pub struct DotCallBuilder {
    c_ident: String,
    self_var: Option<String>,
    args: Vec<String>,
    call_expr: Option<String>,
}
Expand description

Builder for formatting .Call() invocations in R wrapper code.

Handles the common pattern of .Call(C_ident, .call = match.call(), args...).

§Example

let call = DotCallBuilder::new("C_Counter__increment")
    .with_self("self")
    .build();
// => ".Call(C_Counter__increment, .call = match.call(), self)"

let call = DotCallBuilder::new("C_Counter__add")
    .with_self("x")
    .with_args(&["n"])
    .build();
// => ".Call(C_Counter__add, .call = match.call(), x, n)"

Fields§

§c_ident: String

The C entry point symbol name (e.g., "C_Counter__increment"). This is the first argument to .Call().

§self_var: Option<String>

Optional self/receiver variable name (e.g., "self", "x"). When present, prepended before other arguments in the .Call() invocation.

§args: Vec<String>

Additional argument names passed after self (if any) in the .Call() invocation.

§call_expr: Option<String>

Expression for the .call named argument. None means match.call() (the default). Set via DotCallBuilder::null_call_attribution to emit .call = NULL instead.

Implementations§

Source§

impl DotCallBuilder

Source

pub fn new(c_ident: impl Into<String>) -> Self

Create a new builder with the C function identifier.

Source

pub fn with_self(self, var: impl Into<String>) -> Self

Add a self/x parameter (prepended to args).

Source

pub fn with_args(self, args: &[impl AsRef<str>]) -> Self

Add arguments after self (if any).

Source

pub fn with_args_str(self, args: &str) -> Self

Add a pre-joined argument string (e.g., "x, y") as a single emit unit.

Empty strings are ignored, so callers can pass the result of build_r_call_args_from_sig directly without a length check.

Source

pub fn null_call_attribution(self) -> Self

Pass .call = NULL instead of .call = match.call().

Use for lambda dispatch sites (R6 finalizer/deep_clone, S7 property getter/setter/validator) where match.call() captures an internal dispatch frame instead of the user’s call. With NULL, the if (is.null(.val$call)) .call_default else .val$call fallback in condition_check_lines surfaces the nearest meaningful frame instead.

Source

pub fn build(&self) -> String

Build the .Call() string.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> SizedTypeProperties for T

Source§

#[doc(hidden)]
const SIZE: usize = _

🔬This is a nightly-only experimental API. (sized_type_properties)
Source§

#[doc(hidden)]
const ALIGN: usize = _

🔬This is a nightly-only experimental API. (sized_type_properties)
Source§

#[doc(hidden)]
const ALIGNMENT: Alignment = _

🔬This is a nightly-only experimental API. (ptr_alignment_type)
Source§

#[doc(hidden)]
const IS_ZST: bool = _

🔬This is a nightly-only experimental API. (sized_type_properties)
true if this type requires no storage. false if its size is greater than zero. Read more
Source§

#[doc(hidden)]
const LAYOUT: Layout = _

🔬This is a nightly-only experimental API. (sized_type_properties)
Source§

#[doc(hidden)]
const MAX_SLICE_LEN: usize = _

🔬This is a nightly-only experimental API. (sized_type_properties)
The largest safe length for a [Self]. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 96 bytes