macro_rules! RIDL {
(#[uuid($l : expr, $w1 : expr, $w2 : expr, $b1 : expr, $b2 : expr, $b3 : expr,
$b4 : expr, $b5 : expr, $b6 : expr, $b7 : expr, $b8 : expr)] class
$class : ident ;) => { ... };
(#[uuid($($uuid : expr), +)] interface $interface : ident($vtbl : ident)
{
$($(#[$($attrs : tt) *]) * fn $method : ident($($p : ident : $t : ty,) *)
-> $rtr : ty,) +
}) => { ... };
(#[uuid($($uuid : expr), +)] interface $interface : ident($vtbl : ident) :
$pinterface : ident($pvtbl : ident) { }) => { ... };
(#[uuid($($uuid : expr), +)] interface $interface : ident($vtbl : ident) :
$pinterface : ident($pvtbl : ident)
{
$($(#[$($attrs : tt) *]) * fn $method : ident($($p : ident : $t : ty,) *)
-> $rtr : ty,) +
}) => { ... };
(@ deref $interface : ident $pinterface : ident) => { ... };
(@ method fn $method : ident($($p : ident : $t : ty,) *) -> $rtr : ty) => { ... };
(@ method #[fixme] fn $method : ident($($p : ident : $t : ty,) *) -> $rtr :
ty) => { ... };
(@ vtbl $interface : ident $vtbl : ident($($fields : tt) *)
$(fn $method : ident($($p : ident : $t : ty,) *) -> $rtr : ty,) *) => { ... };
(@ vtbl $interface : ident $vtbl : ident($($fields : tt) *) fn $method :
ident($($p : ident : $t : ty,) *) -> $rtr : ty, $($tail : tt) *) => { ... };
(@ vtbl $interface : ident $vtbl : ident($($fields : tt) *) #[fixme] fn
$method : ident($($p : ident : $t : ty,) *) -> $rtr : ty, $($tail : tt) *) => { ... };
(@ uuid $interface : ident $l : expr, $w1 : expr, $w2 : expr, $b1 : expr, $b2
: expr, $b3 : expr, $b4 : expr, $b5 : expr, $b6 : expr, $b7 : expr, $b8 :
expr) => { ... };
(@ item $thing : item) => { ... };
}