macro_rules! signal_body_type_signature {
    ($member:expr) => { ... };
    (member: $member:expr) => { ... };
    ($member:expr, $interface:expr) => { ... };
    (member: $member:expr, interface: $interface:expr) => { ... };
    ($member:expr, $interface:expr, $argument:expr) => { ... };
    (member: $member:expr, interface: $interface:expr, argument: $argument:expr) => { ... };
}
Expand description

Retrieve the signature of a signal’s body type.

Essentially a wrapper around [zbus_lockstep::get_signal_body_type], but this macro tries to find it with less arguments.

This macro will take a signal member name and return the signature of the signal body type.

If multiple interfaces offer the same member, you will need to specify the interface name as well.

This macro can be called with or without the interface name.

§Examples

use zbus_lockstep::signal_body_type_signature;
use zvariant::Signature;

std::env::set_var("LOCKSTEP_XML_PATH", "../xml");
     
let sig = signal_body_type_signature!("AddNode");
assert_eq!(&sig, &Signature::from_str_unchecked("(so)"));

The macro supports colling arguments with identifiers as well as without. The macro may also be called with an interface name or interface and argument name:

let _sig = signal_body_type_signature!("Alert", "org.example.Node", "color");

// or alternatively

let _sig = signal_body_type_signature!(member: "Alert", interface: "org.example.Node", argument: "color");